Jest 25: 🚀 Вибудовуємо основу майбутнього
Jest 25 закладає основу для багатьох великих змін у майбутньому. Для цього, ми мінімізували критичні зміни, але зміни внутрішньої архітектури вимагають уваги під час оновлення. Основними змінами є оновлення JSDOM з версії 11 до 15, пришвидшення тестів на 10-15%, новий вигляд різниці для застарілих знімків і припинення підтримки Node 6.
There has been more than 200 commits since Jest 24.9 by more than 80 different contributors, so as always, take a look at the changelog for a full list of changes.
Бувай, Node 6
Node 6 завершив існування 30 квітня 2019, тож Jest 25 залишає його позаду. Видалення Node 6 означає, що ми можемо оновити залежності, найголовніше - JSDOM, що було оновлено до версії 15. Upgrading also means we no longer have to transpile async-await syntax, which results in both faster code execution and less memory consumption. Додатково, перекладений код Jest повинен бути простішим в налагоджені, якщо комусь доведеться в тому розбиратись.
Навіть якщо Node 8 також став EOL, Jest 25 підтримуватиме його, щоб зробити оновлення якомога простішим для тих з нас, хто досі підтримує Node 8. It does come with some tradeoffs though, such as JSDOM v16 having been released without Node 8 support, so you'll need to use jest-environment-jsdom-sixteen if you want to use the latest version.
Покращення продуктивності
За останні декілька релізів, ми отримали повідомлення про вповільнення Jest. Jest 25 містить оновлений Micromatch, яке дає величезну перевагу під час запуску, та деякі виправлення помилок і налаштування продуктивності, які повертають Jest швидкість версії 23. Як було зазначено на початку цього допису, для Jest це означа є 10-15% зменшення часу виконання тестів. Ми завжди прагнемо вдосконалити цей момент, тож, будь ласка, перевірте, як він порівнюється з більш ранніми версіями та створіть проблеми, якщо ми маємо щось покращити!
Покриття коду V8
Jest’s current code coverage instrumentation is powered by babel-plugin-istanbul inserting code coverage collection code before creating reports. Однак це доволі повільний процес, що використовує багато пам'яті, особливо для великих файлів та баз коду. Luckily, V8 has built-in code coverage, which is becoming more and more usable in Node thanks to the hard work of Benjamin Coe and others on the V8 and Node.js teams. Jest 25 comes with experimental support for this via a new --coverage-provider flag. Please see its documentation for caveats and how to use it.
