Wiki · Технологии разработки
Jest
Содержание 5 разделов
Jest – это фреймворк для автоматических юнит-тестов кода на JavaScript и TypeScript. Разработчик описывает, какой результат должна вернуть функция, а Jest запускает эти проверки и сообщает, где ответ разошёлся с ожидаемым.
Владелец сайта Jest не увидит: он работает у разработчиков и на сервере сборки. Но если подрядчик говорит «у нас код покрыт тестами на Jest», это значит, что часть ошибок ловится до того, как обновление попадёт на сайт.
Что такое юнит-тест на примере корзины
Юнит-тест проверяет маленький кусок логики отдельно от всего остального: одну функцию, один компонент. Возьмём расчёт итоговой суммы в корзине со скидкой по промокоду. Тест на Jest выглядит так:
test('промокод 10% от 5000 ₽', () => {
expect(cartTotal(5000, 'SALE10')).toBe(4500);
});
Если через полгода кто-то перепишет расчёт скидок и случайно сломает промокоды, тест упадёт сразу, ещё на компьютере разработчика. Без него ошибку заметил бы покупатель, у которого не сработала скидка.
Jest создали в Facebook, в 2022 году Meta передала его в OpenJS Foundation, и теперь проект развивает сообщество. Он работает с TypeScript, Node.js, React, Vue и Angular. На октябрь 2026 года актуальна ветка Jest 30.
Что Jest умеет кроме простых проверок
- Моки. Тест подменяет внешние сервисы заглушками: платёжный шлюз, CRM, API доставки. Логика проверяется, а настоящий платёж не уходит.
- Снимки (snapshots). Jest запоминает, как выглядел результат, например разметка компонента, и сообщает, если он изменился.
- Параллельный запуск. Тесты идут в отдельных процессах, поэтому сотни проверок проходят за минуты.
- Покрытие кода. С флагом --coverage Jest показывает, какие строки и ветки кода тесты хотя бы раз выполнили.
Почему 100% покрытия не гарантирует, что сайт работает
Покрытие говорит, какой код запускался во время тестов, но не говорит, проверили ли его осмысленно. Можно вызвать функцию и ничего не сравнить: строка засчитается в покрытие, а ошибку тест не поймает.
Полезнее спросить подрядчика, что именно покрыто. Деньги, скидки, расчёт доставки, права доступа в личном кабинете: эту логику стоит проверять тестами в первую очередь. Покрывать тестами вёрстку промо-блока, которую через месяц выбросят, смысла мало.

Чем юнит-тесты на Jest отличаются от e2e-тестов
Jest проверяет детали по отдельности. Сквозные (e2e) тесты, например на Playwright, открывают настоящий браузер и проходят путь покупателя целиком: каталог, корзина, оформление заказа.
| Юнит-тесты (Jest) | E2E-тесты (Playwright) | |
|---|---|---|
| Что проверяют | функцию или компонент | сценарий на живом сайте |
| Скорость | сотни тестов за минуты | каждый сценарий дольше |
| Где ошибка | видно сразу, до строки | нужно искать, что сломалось |
| Что пропускают | поломки на стыке частей | редкие ветки логики |
Обычно делают так: много быстрых юнит-тестов на логику и несколько e2e-сценариев на главные пути, через которые идут деньги. Ручное тестирование сайта перед релизом они не отменяют.

Тесты имеют смысл, только если их запускают автоматически при каждом изменении кода, например в пайплайне GitLab CI/CD после коммита в Git. Тесты, которые лежат в репозитории и не запускаются, быстро устаревают и начинают падать без причины.
Покрытие и надёжность тестов
Какой процент покрытия тестами просить у подрядчика?
Единой нормы нет, и требование вроде 80% по всему проекту легко выполнить формально. Надёжнее договориться, что расчёт цен, скидок, доставки и права доступа покрыты тестами всегда, а отчёт о покрытии прикладывают к релизу. Ещё полезно правило: если нашли ошибку на сайте, сначала пишут тест, который её воспроизводит, и только потом исправляют. Так одна и та же ошибка не возвращается после следующего обновления.
Почему тесты на Jest проходят, а на сайте всё равно ошибка?
Юнит-тесты проверяют части кода по отдельности и с заглушками вместо внешних сервисов. Ошибка на стыке, например API вернул другой формат или сломалась вёрстка кнопки, в них не видна. Её ловят e2e-тесты в браузере и ручная проверка.
Когда тесты на Jest не окупятся?
На сайте-визитке почти нет логики для проверки кодом. Тесты окупаются там, где есть расчёты и сценарии с деньгами, а сайт часто дорабатывают: в магазине, личном кабинете, сервисе.
Где запускать тесты Jest, чтобы о них не забывали?
В конвейере сборки: при каждом изменении кода тесты запускаются автоматически, и выкладка останавливается, если хоть один упал. Запуск только на компьютере разработчика ненадёжен: о тестах вспоминают перед релизом, а то и после.
Если проект на JavaScript или TypeScript уже работает, берём его на доработку и техническую поддержку: проверяем, какие тесты есть, и добавляем их на расчёты и сценарии, через которые идут заказы.
Источники
- Документация Jest: главная страница и список версий
- OpenJS Foundation: Jest Graduates to At-Large Project
- Engineering at Meta: Jest is joining the OpenJS Foundation
Остались вопросы по теме «Jest»?
Напишите нам в Telegram или MAX. Ответит специалист, который отвечает за эту тему, или руководитель проектов в рабочее время.
Отвечает по темеДмитрий КолесниковWeb-разработчикНад статьёй работали
Услуги
Услуги по теме
Посчитайте стоимость проекта за 2 минуты
Калькулятор соберёт смету по нашим тарифам: сайт, дизайн, интеграции и поддержка.
