Сьогодні ми анонсуємо нову версію Jest, в якій вдосконалено майже всі частини Jest з метою забезпечення міцнішої бази для тестування. Разом зі спільнотою, ми внесли широкий ряд змін, які допоможуть вам отримати більше від Jest. Ми також завершили випробувальний термін для функції користувацьких виконавців та додали новий пакет jest-work
для розпаралелення роботи численних процесів. Внизу ми зібрали список основних моментів, але (як завжди) огляньте журнал усіх змін.
Jest 20: 💖 Приємне тестування & 🏃🏽 Багатопроєктний виконавець
Кілька місяців тому ми анонсували Jest 19, який мав важливі нові функції та був найбільшим релізом Jest на той момент. Jest 20 має подвійну кількість змін у порівнянні з попередньою версією та містить повністю перероблений виконавець тестів, додається новий тестовий API. Новий реліз надає новий рівень персоналізації та конфігурації проєктів, при цьому оновлення не забере багато часу. Окрім Безпроблемного JavaScript Тестування, ми вважаємо, що Jest тепер надає Чудовий Досвід Тестування JavaScript. Розглянемо глибше найкращі нові функції та зміни:
Багатопроєктний виконавець & Зміна конфігурації
До сьогодні, Jest міг працювати лише в одному проєкті за раз. Це може перевантажувати процес, якщо ви працюєте над багатьма малими проєктами, кожен з яких має власні налаштування та конфігурацію. В Jest 20, ми повністю переписали виконавець тестів для одночасного запуску багато проєктів в одному екземплярі Jest; наприклад, якщо ви працюєте з фронтом React frontend і беком node.js. Ось відео з Jest, що виконує тести для React Relay, Yarn і Jest одночасно:
🃏 Jest 19: Поглиблений режим спостереження & Покращення тестової платформи
Сьогодні ми із задоволенням публікуємо версію 19 платформи для тестування Jest. Це найбільший реліз Jest, який ми коли-небудь публікували, і ми дуже раді показати вам, що ми створили за останні два місяці:
Поглиблений режим спостереження
Ми повністю переписали режим спостереження, щоб зробити його миттєвим та більш охоплювальним. В результаті, отримуємо поглиблений досвід використання: тести одразу перезапускаються після змін у файлі та ми полегшили вибір правильних тестів.
Чудовий досвід для розробників
Ми віримо, що чудова документація має вирішальне значення для забезпечення позитивного досвіду для розробників. Документація має бути чіткою, лаконічною та корисною як для нових користувачів, так і для знавців технології. З думкою про це, нещодавно ми витратили деякий час на перероблення сайту Jest.
Покращені документи
Одна з помітних змін - оновлена бічна панель. Документація тепер розподілена на три основні розділи: вступ до Jest, детальні посібники для функціонала та універсальна API довідка.
Розділ Вступ допоможе вам встановити Jest і написати ваш перший тест, опановуючи базові підходи, аж до використання матчерів Jest і тестування асинхронного коду. Якщо ви новачок в Jest або хочете швидко освіжити знання, ця частина швидко в цьому допоможе. Якщо ви використовували Jest раніше та потребуєте лише швидку підказку зі встановлення, вам не треба нічого поза розділу Початок роботи.
Як тільки ви опануєте основи Jest, переходьте до розширеного розділу Посібники. Новий посібник з тестування знімками охоплює все, що вам потрібно знати про створення та підтримку тестів зі знімками.
Також, ми повністю змінили нашу документацію API. Тепер ви можете знайти детальну інформацію про глобальні змінні Jest, матчери та кожен прапорець, що підтримується jest
CLI.
2016 в Jest
2016 рік був дуже важливим для JavaScript тестування з Jest. Перші пів року ми переписували Jest і створювали надійну основу для значного підвищення продуктивності та допомоги в тестуванні JavaScript коду. Ми типізували всю базу коду, реалізували багато інтеграційних тестів для самого Jest та додали lerna для перетворення Jest з фреймворку на Платформу Безболісного JavaScript Тестування.
Нещодавно створений react-test-renderer нарешті дозволяє тестування react-native компонентів. Завдяки вбудованому пресету jest-react-native (тепер об’єднаному безпосередньо з react-native), Jest тепер працює для будь-якого проєкту React і йде попередньо сконфігурованим в проєктах create-react-app та react-native. Ми інтегрували базові частини Jest в пакувальник react-native, тож абсолютно нова функція тестування знімками з тих пір використовувалась поза межами Jest: вона була інтегрована з React Storybook у вигляді “storyshots” і додана в інші виконавці тестів, такі як ava.
Jest 16.0: Turbocharged CLI & Оновлення спільноти
Пройшов місяць з моменту останнього великого релізу, а ми вже значно покращили роботу Jest. Цього великого релізу ми оновлюємо формат знімків, що може вимагати оновлення існуючих знімків при оновленні Jest. Ми не вносимо ці зміни бездумно та не розраховуємо робити їх часто, але вважаємо за необхідне час від часу покращувати формат.
Оновлений CLI
Jest 16 включає новий інтерфейс генератора звітів, який показує запущені тести, а також оновлюваний підсумок і смугу прогресу на основі розрахункового часу виконання з попередніх запусків. Ми також покращили вивід CLI для кращої роботи з різними кольоровими схемами. Якщо в попередньому виконанні в тестах були помилки, нині Jest буде запускати ці тести першими, щоб якомога швидше надати корисні дані користувачам.
Jest 15.0: Нові значення за замовчуванням для Jest
Ми провели минулий рік, роблячи Jest швидшим, простим в налаштуванні, додали купу функцій та додали тестування за допомогою знімків. Однак було дві сфери, в яких ми замало інвестували: вивід командного рядка та користувацький досвід. В Jest 15 ми радикально змінюємо фреймворк, щоб полегшити використання початківцями та досвідченими користувачами. Ми задоволені результатами наших інвестицій у Jest: ми можемо дуже швидко рухатись та покращувати фреймворк для Facebook і спільноти відкритого вихідного коду. Мета Jest - максимальне налаштування за замовчуванням, аби вимагати якомога менше необхідної конфігурації. Нещодавно у нас з'явилася можливість пояснити нашу філософію щодо проблеми create-react-app.
Найважливіша зміна - це набір нових значень за замовчуванням. Якщо ви вже користуєтесь Jest, то, швидше за все, вам знадобиться оновити вашу конфігурацію для Jest 15. У більшості випадків налаштування спроститься та Jest надасть корисні повідомлення про помилки під час оновлення. Всі нові значення за замовчуванням можуть бути відключені відповідно до ваших потреб, але ми все ще вважаємо відключені функції критичними для Jest в певних ситуаціях, тож надалі довгостроково використовуватимемо та підтримуватимемо їх для Facebook. Наша документація API також була повністю переписана відповідно до цих змін. Цей запит для React зазначає деякі зміни, необхідні для наявних проєктів.
Jest 14.0: Тестування знімками React
Одним з принципів Jest є надання інтегрованого досвіду "нульової конфігурації". Ми хочемо зробити написання якісних тестів якомога більш безпроблемним. Ми помітили, що коли розробники забезпечені готовими інструментами, вони пишуть більше тестів, що в результаті призводить до стабільної бази коду.
Одне зі значних відкритих питань полягало в тому, як ефективно писати тести React. Існує багато інструментів, таких як ReactTestUtils та enzyme. Обидва інструменти чудові й активно використовуються. Однак від розробників часто чулось, що вони витрачають більше часу на написання тесту, ніж самого компоненту. В результаті, багато людей взагалі припинили писати тести, що врешті-решт призвело до нестабільності. Розробники пояснили нам: все, чого вони хотіли - це переконатися, що їхні компоненти не змінюються несподівано.
Jest 13.0: Flow & REPL
Сьогодні ми з радістю повідомляємо про наступний великий реліз Jest. Ми внесли значні зміни в Jest, які будуть корисні вам і всій інфраструктурі JavaScript тестування Facebook. Найголовніше, під час останнього Jest хакатону Facebook, ми додали статичні типи для всього коду Jest. П'ятнадцять людей працювали день і ніч, щоб додати типи Flow і нові функції в Jest. Типи Flow виконують дві задачі: по-перше, ми вважаємо, що код пишеться, аби бути прочитаним. Зазвичай, код пишуть лише один раз, але читають десятки людей протягом багатьох років. Додавання статичних типів в проєкт допомагає документувати код і пояснювати архітектуру Jest. По-друге, додавання статичних типів полегшує обслуговування та дозволить нам більш впевнено рефакторити Jest, не ламаючи наявний код.
Проєкт Flow значно розвинувся всередині Facebook й успішно використовується в багатьох наших фреймворках і коді майже всіх наших продуктів. Екземпляри чудово розпаралелюються: процес йде файл за файлом, поки не типізовано достатню кількість бази коду. Потім, Flow надає реальні значення та описові інструкції великих змін. За допомогою цього, було виявлено багато крайніх випадків і помилок.
Jest 11.0
Сьогодні ми оголошуємо про перехід до глобальних ревізій Jest, першим великим релізом яких стане Jest 11.0. Jest використовувався розробниками Facebook та нашими безперервними системами інтеграції роками та ми вважаємо, що Jest вже давно вийшов за рамки “релізу 1.0”. Схожі зміни зробила команда React.
Якщо ви користуєтесь Jest 0.9 або Jest 0.10, оновлення має пройти без проблем. Всі зміни за останні кілька місяців було внесено в Jest 11.0.
Нове у Jest 11.0
Інтеграція з Babel і спрощене налаштування
babel-jest
додано в оновлений модульний репозиторій Jest та безперешкодно інтегровано в Jest. Якщо ви оновлюєте стару версію Jest або намагаєтесь додати Jest, ми рекомендуємо прочитати інструкцію для початку роботи.