Jest 25 закладає основу для багатьох великих змін у майбутньому. Для цього, ми мінімізували критичні зміни, але зміни внутрішньої архітектури вимагають уваги під час оновлення. Основними змінами є оновлення JSDOM з версії 11 до 15, пришвидшення тестів на 10-15%, новий вигляд різниці для застарілих знімків і припинення підтримки Node 6.
З релізу Jest 24.9 додалось більш ніж 200 комітів понад 80 різних співавторів, тож, як завжди, перегляньте журнал змін задля повного переліку.
Бувай, Node 6
Node 6 завершив існування 30 квітня 2019, тож Jest 25 залишає його позаду. Видалення Node 6 означає, що ми можемо оновити залежності, найголовніше - JSDOM, що було оновлено до версії 15. Оновлення також означає, що нам більше не потрібно переносити синтаксис async-await
, що призводить до швидшого виконання коду та меншого споживання пам'яті. Додатково, перекладений код Jest повинен бути простішим в налагоджені, якщо комусь доведеться в тому розбиратись.
Навіть якщо Node 8 також став EOL, Jest 25 підтримуватиме його, щоб зробити оновлення якомога простішим для тих з нас, хто досі підтримує Node 8. Але там є свої нюанси, як-то відсутність підтримки Node 8 для JSDOM v16, через що потрібно використовувати jest-environment-jsdom-sixteen
для доступу до останньої версії.
Покращення продуктивності
За останні декілька релізів, ми отримали повідомлення про вповільнення Jest. Jest 25 містить оновлений Micromatch, яке дає величезну перевагу під час запуску, та деякі виправлення помилок і налаштування продуктивності, які повертають Jest швидкість версії 23. Як було зазначено на початку цього допису, для Jest це означає 10-15% зменшення часу виконання тестів. Ми завжди прагнемо вдосконалити цей момент, тож, будь ласка, перевірте, як він порівнюється з більш ранніми версіями та створіть проблеми, якщо ми маємо щось покращити!
Покриття коду V8
Інструментарій покриття поточного коду в Jest надається babel-plugin-istanbul
через додавання коду покриття тестів перед створенням звітів. Однак це доволі повільний процес, що використовує багато пам'яті, особливо для великих файлів та баз коду. На щастя, V8 має вбудоване покриття коду, яке все більше використовується в Node завдяки невпинній праці Benjamin Coe та інших учасників команд V8 і Node.js. Jest 25 містить експериментальну підтримку цієї функції з використанням нового прапору --coverage-provider
. Будь ласка, перегляньте застереження та спосіб застосування в документації.
Думаємо швидко та повільно щодо провальних тестів
Зайві зусилля для розуміння звітів про вальних тестів заважають:
- “думати швидко”, розпізнаючи шаблони вашого минулого досвіду
- “думати повільно”, аналізуючи зміни та вирішуючи, чи є вони очікуваним прогресом або несподіваним регресом
Jest 25 завершує другу половину процесу, розпочатого в Jest 24, щодо покращення усіх матчерів:
- правильна лінія опису, у тому числі модифікатори
.rejects
,.resolves
і.not
- лаконічні мітки та послідовність щодо очікуваних та отриманих значень
- інвертоване підсвічування підрядків розбіжностей, коли очікуються та отримуються рядки
- кількість рядків змін, для розуміння типу зміни (лише видалення/додавання)
Окрема подяка розробнику підтримки Jest Mark Pedrotti за ведення цієї ініціативи та його постійну роботу задля покращення помилок очікування.