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.
Проєкт pretty-format був переписаний з фокусом на продуктивності для просування функції знімків Jest, а нещодавно ще й об'єднаний в monorepo Jest, що також буде кориснним для інших виконавців тестів. На цей момент Jest презентує збірник різних ідей та рішень для тестування, а не єдину конкретну реалізацію тестового фреймворку.
Я хотів би глибоко подякувати всім людям, які зробили внесок в Jest цього року, як зі сторони спільноти відкритого коду, так і Facebook: Dmitrii Abramov, Cristian Carlesso, Dan Abramov, Daniel Lo Nigro, Maxim Derbin, Evan Scott, Forbes Lindesay, Keyan Zhang і ще 60 людей. Ми також хотіли б привітати Michał Pierzchal (@thymike) як першого офіційного автора зовнішніх внесків в Jest. Він провів чудову роботу з управління проблемами та PR-ами репозиторію. Якщо ви хочете зробити внесок в Jest, ми маємо вдосталь хороших перших завдань і ми завжди раді допомогти в нашому discord каналі.
repl.it з інтеграцією Jest
Amjad Massad зібрав контейнер для Jest, тож тепер ви можете спробувати Jest безпосередньо в браузері. З цього моменту, ви можете використовувати його при створенні проблем на GitHub, що має допомогти швидше розв'язувати проблеми. Amjad і Haya створюють repl.it для демократизації програмування шляхом побудови потужних, але простих інструментів та платформ для педагогів, учнів та розробників. Вони також наймають талановитих розробників!
Оновлення спільноти
Ми неймовірно цінуємо, що 100+ компаній почали використовувати Jest за останні 6 місяців. Такі компанії, як Twitter, Pinterest, Paypal, nytime, IBM (Watson), Spotify, eBay, SoundCloud, Intuit, FormidableLabs, Automattic, Trivago та Microsoft повністю або частково перейшли на Jest через потреби в тестуванні JavaScript. Ми вдячні за шанс, який ви дали цьому проєкту. Ми також хотіли б подякувати всім, хто відвідував конференції та зустрічі для презентації Jest і усім, хто створює дописи в блогах про власний досвід з Jest!
Ось що сталося у спільноті за останні два місяці:
- Jason Bonta та Dmitrii Abramov перевизначили “піраміду тестування”, яку багато обговорюють у Facebook.
- jest-codemods тепер дозволяє легко мігрувати з Mocha, Tape та Ava на Jest.
- Команда React оголосила покращення react-test-renderer у 15.4.0.
- Orta Therox створив чудову інтеграцію vscode-jest і пожертвував для Jest код редакторської підтримки.
- Pavithra Kodmad документує використання Jest у Flipkarts і ділиться порадами щодо початку роботи.
- Kent C. Dodds написав про міграцію до Jest в Paypal і Jason Brown так само написав про міграцію.
- Ben McCormick написав про заощадження часу з Jest.
- Eric Clemmons написав про інтеграції знімків та storybook.
- Edvin Erikson написав про отримати вивід Tap в Jest.
- jest-html може додати розрізняння знімків до вашого браузера.
- Декілька відмінних дискусій на hackernews про Jest.
- Спільнота розпочала велику дискусію про майбутнє enzyme.
- Ruben Oostinga написав про поєднання chai та Jest матчерів.
- Допис Emil Ong про причини, чому TDD здається марним для Вашого фронтенду".
- Nate Hunzaker написав про комплексне тестування з Jest і Nightmare.
- Використання Jest з Angular дійсно працює за словами Matthieu Lux.
- Прямо зараз відбувається неймовірна дискусія про призначення тестування знімками.
- Dmitrii зняв новий музичний кліп зі своєю метал групою.
- lazyspec може допомогти вам швидко створити димові тести, якщо ви додаєте їх до наявної бази коду.
- Patrick Stapfer розповів про vim і Jest.
- Коментар Mark Dalgleish щодо значення тестування знімками.
Нові функції, зміни та виправлення помилок у Jest 17 & 18
Jest був створений понад п'ять років тому, тож, як старий фреймворк, він накопичив технічний борг. Ось чому ми рішуче робимо великі зміни частіше, ніж може здатися необхідним: ми вважаємо за потрібне поступово зменшувати технічний борг, аби забезпечити Jest повноцінною довгостроковою підтримкою. Ми не оголосили про Jest 17 дописом, тож, якщо ви не оновлювались за останній місяць, вам може стати в пригоді наступний перелік змін.
- Критично: Видалено
pit
на користьit
ortest
іmockImpl
на користьjest.fn()
абоmockImplementation
. - Критично: Перейменовано
--jsonOutputfile
на--outputFile
. - Критично: Оновлено
testRegex
, додано файлиtest.js
таspec.js
. - Критично:
scriptPreprocessor
замінено новим параметромtransform
. - Критично: Функція
testResultsProcessor
тепер має повертати змінені результати. - Потенціально критично: Виконуйте
snapshotSerializers
,setupFiles
,transform
,testRunner
таtestResultsProcessor
повноцінно за допомогою алгоритму роздільної здатності замістьpath.resolve
. Це загалом означає, що<rootDir>
більше не треба для цих параметрів. - Додано:
pretty-format
іjest-editor-support
були об'єднані з Jest. - Додано:
expect.any
,expect.anything
,expect.objectContaining
,expect.arrayContaining
,expect.stringMatching
. - Додано:
--testResultsProcessor
тепер у доступі через командний рядок. - Додано: Реалізовано перегляд файлів у
jest-haste-map
. - Додано: використання Jest в режимі спостереження може бути приховано за допомогою
JEST_HIDE_USAGE
. - Додано:
expect.assertions(number)
, який гарантує, що в одному тесті здійснюється вказана кількість тверджень. - Додано: функція
.toMatchSnapshot(?string)
, яка дає назви знімкам. - Додано: матчери
toMatchObject
,toHaveProperty
,toHaveLength
. - Додано:
expect.extend
. - Додано: Підтримка для користувацьких серіалізаторів знімків.
- Додано: Великі відмінності в знімках і твердженнях тепер згорнуті за замовчуванням. Додано
--expand
(або-e
) для показу повної різниці. - Додано:
jest.resetAllMocks
на замінуjest.clearAllMocks
. - Додано:
--json
тепер містить інформацію про окремі тести всередині файлу. - Виправлено:
test.concurrent
не обробляв відхилені проміси. - Виправлено:
babel-plugin-jest-hoist
під час використанняjest.mock
з трьома параметрами. - Виправлено: Глобальний
JSON
вjest-environment-node
тепер приходить з контексту vm замість батьківського. - Виправлено: Jest більше не друкує стекові сліди з babel.
- Виправлено: Фіктивні таймери скидаються при виклику
FakeTimers.useTimers()
. - Виправлено: Регулярні вирази в знімках обходяться правильно.
- Виправлено: Покращено форматування великих об'єктів.
- Виправлено:
NaN% Failed
в повідомленнях операційної системи при використанні--notify
. - Виправлено: Перший тестовий запуск без кешованих таймінгів буде використовувати окремі процеси.
- Виправлено:
Map
/Set
порівняння. - Виправлено:
test.concurrent
тепер працює з--testNamePattern
. - Виправлено: Покращено матчер
.toContain
. - Виправлено: Правильно виконані модулі з розширеннями платформ в react-native.
- Виправлено: Глобальні вбудовані об'єкти в
jest-environment-node
тепер працюють належним чином. - Виправлено: Створення об'єктів-імітацій в контексті vm замість батьківського.
- Виправлено:
.babelrc
став частиною ключа перетворення кешу вbabel-jest
. - Виправлено: Обробка docblock з модулями haste.
- Виправлено: Вихід з належним кодом, коли не досягнуто поріг покриття.
- Виправлено: Jest тепер очищує все прокручування в режимі спостереження.
- Застаріло:
jest-react-native
застарів і тепер перенаправляє наreact-native
.
Плани Jest на першу половину 2017
Шість місяців тому ми поділилися нашими планами на Jest і радіємо, що майже всі змогли повноцінно виконати. Наші плани на наступні шість місяців:
- Миттєвий зворотний зв'язок: інтеграція Nuclide та покращений швидший режим спостереження.
- Покращений досвід розробника: нові API імітацій і покращені твердження.
- Краща продуктивність та використання пам'яті: аналізуйте Jest та звертайте увагу на ефективність.
- Покращення знімків: режим затвердження знімків, підсвітка синтаксису та покращений API
react-test-renderer
. - Вебсайт: Ми переробили вебсайт та документацію, додали лист-шпаргалку Jest.
Ми не надаватимемо графіків та розрахунків для цих нововведень, може так статись, що не все вдасться реалізувати. Якщо ви хочете допомогти з реалізацією, надішліть нам задачі та запроси на злиття з вашими ідеями; працюватимемо над покращенням Jest у 2017 році разом.