Files
frontend/docs/TESTING.md
T

2.4 KiB

Testing

Canonical completion gate — npm run verify; он запускает Vitest один раз через npm run test:coverage. npm run test:run остаётся короткой локальной командой без coverage report.

Выбор нового теста определяется риском поведения, а не фактом изменения файла. Автоматический тест обязателен для security/privacy, денежных расчётов, целостности данных, concurrency, публичного контракта, критического journey и регрессии. DTO без логики, декларативная конфигурация, тонкая orchestration и поведение зависимости отдельного unit test не требуют, пока у них нет собственного branching, transformation, invariant или regression. Полная policy находится в engineering governance.

MSW запускается только Vitest setup в src/test/; handlers покрывают текущий API. Не добавлять service worker, browser mocking или mock development mode. Для transport проверять заголовки и retry через MSW, не через реальный backend.

Проверяйте наблюдаемое поведение, а не детали реализации. UI-тест строится как Arrange, Act, Assert; для интерактивных действий предпочитайте userEvent. Форма должна проверять валидацию и отсутствие запроса при невалидных данных; маршруты - редиректы и доступность экрана.

Colocated tests finance views фиксируют выбор loading/error/empty/loaded и доступные recovery actions. Route boundary tests используют test-only throwing route и проверяют безопасную ссылку и reset после navigation.

Coverage floors остаются anti-regression constraint. Нельзя добавлять тест, который только повторяет декларативную структуру или внутренности зависимости, ради повышения процента.