E2E — самый дорогой и самый ценный вид тестов одновременно. Он проходит путь пользователя через настоящий браузер, поднимая фронт и бэк вместе, — и ловит то, чего не видит ни один изолированный тест: баги на стыках. Но та же полнота делает его медленным и хрупким. Поэтому главный вопрос e2e — не «как написать», а «что вообще покрывать сквозными».

Что такое e2e

E2E-тест управляет реальным браузером как пользователь: открывает страницу, кликает, вводит, ждёт ответа — и проверяет, что произошло. За кликом идёт реальный фронтенд, реальные запросы, реальный (или близкий к нему) бэкенд. Это проверка собранного продукта, а не его части.

Отсюда и цена: e2e медленнее юнит-теста в сотни раз, зависит от сети и таймингов, ломается от изменений интерфейса. Это не недостаток — это плата за то, что он проверяет систему целиком.

Пирамида тестов

Из соотношения цены и охвата следует форма набора тестов — пирамида. Внизу, широко — быстрые юнит-тесты (backend и frontend-компоненты). Посередине — интеграционные. Наверху, узко — немного e2e.

Перевёрнутая пирамида (много e2e, мало юнитов) — частая ошибка: набор становится медленным и нестабильным, прогон занимает часы, флаки подрывают доверие. E2E немного именно потому, что каждый дорог.

Что покрывать e2e

E2E идёт на критические сквозные пути — сценарии, провал которых ломает продукт для пользователя и бизнеса. В маркетплейсе из сквозного кейса это, например: регистрация → поиск товара → оформление заказа → оплата. Один-два главных пути, проходящих через весь стек, — вот цель e2e.

Не стоит покрывать e2e:

  • детали отображения — это компонентные тесты (быстрее, точнее);
  • бизнес-правила и ветвления — это юнит-тесты домена/Handler-ов;
  • все возможные комбинации — комбинаторику проверяют ниже по пирамиде, e2e берёт типичный путь.

Правило: если сценарий можно проверить дешевле и ниже — проверь там. E2E оставляют для того, что проверяется только целиком.

Ценность

При всей дороговизне e2e ловит класс багов, невидимый изолированным тестам: фронт ждёт одно поле, бэк отдаёт другое; редирект после оплаты ведёт не туда; токен не доходит до защищённого запроса. Каждый кусок по отдельности «зелёный», а вместе путь не работает. Это и есть зона e2e — стыки, которые проявляются только на собранном продукте.

Где это в UCP

Для продукт-инженера e2e — последний рубеж: подтверждение, что продукт работает для пользователя целиком, а не только в юнит-тестах по частям. Это сквозная специализация — она поверх backend и frontend, а не вместо них. И как любой инструмент в UCP, её берут по мере необходимости: немного тестов на критические пути дают максимум уверенности при минимуме цены. Дальше — как настроить Playwright под это.