advanced

Contract и component tests

Проверяйте API/provider agreements и UI component behavior на boundary меньше full E2E, но с meaningful integration.

Контрактные тесты фиксируют соглашения API между consumer и provider — форму запроса, коды, заголовки, схему — без поднятия всей системы. Компонентные тесты рендерят срез UI (секцию страницы или дерево виджетов) с реалистичными провайдерами и проверяют видимое пользователю поведение и стыковку с ближайшими детьми — между unit и E2E.

Они полезны, когда микросервисы или design system развиваются отдельно: контракты ловят breaking changes рано; компонентные — регрессии в формах, таблицах и модалках быстрее браузерных наборов.

На интервью: сравните Pact-подобный контракт с замоканным unit и объясните, когда component заменяет, а не дублирует E2E.

Типовые ошибки: контракты, копирующие детали реализации; компонент без router/query-контекста; раздутые «компонентные» тесты, по сути E2E.

Компромисс — узкий scope ради скорости: контракты и компоненты не видят оркестрацию между сервисами, которую показывает только E2E.

Чеклист:

  • Сформулируйте, что контракт гарантирует и чего не может.
  • Монтируйте компонент с реалистичными границами (данные, роутинг, тема).
  • Держите component-тесты на одном поведенческом срезе.