54 lines
3.0 KiB
Markdown
54 lines
3.0 KiB
Markdown
# Frontend Test Hygiene
|
||
|
||
Дата: 2026-06-23
|
||
Статус: выполнено
|
||
|
||
## Контекст
|
||
|
||
Во frontend уже есть Vitest, Testing Library и MSW, но после нескольких фаз миграции тестовая
|
||
инфраструктура может накопить лишние абстракции, дублирующиеся helpers и разъехавшиеся conventions.
|
||
Это не проблема покрытия как такового, а проблема ясности, локальности и поддержки тестов.
|
||
|
||
Эта фича нужна, чтобы тестовый слой оставался простым: тесты должны быть рядом с кодом, helpers должны
|
||
быть минимальными, а сетевые и контекстные зависимости должны быть предсказуемыми.
|
||
|
||
## Цель
|
||
|
||
Упростить и нормализовать frontend test infrastructure так, чтобы тесты было легче писать, читать и
|
||
поддерживать без изменения продуктового поведения.
|
||
|
||
## Требования
|
||
|
||
### 1. Test helpers stay minimal
|
||
|
||
Общие test helpers должны содержать только действительно shared тестовую инфраструктуру. Дублирующие
|
||
или слишком широкие обёртки нужно убрать или сузить.
|
||
|
||
### 2. Testing conventions stay consistent
|
||
|
||
Frontend тесты должны следовать единым правилам по расположению, mock strategy, QueryClient setup и
|
||
MSW usage. Новые тестовые паттерны не должны вводить отдельные локальные договорённости без причины.
|
||
|
||
### 3. Coverage is preserved
|
||
|
||
Рефакторинг тестовой инфраструктуры не должен уменьшать существующее покрытие или ломать тесты в
|
||
колокации с кодом.
|
||
|
||
### 4. No production behavior changes
|
||
|
||
Фича касается только test layer. Production code changes допускаются только если они неизбежны для
|
||
упрощения тестовой поверхности, и тогда должны быть минимальными.
|
||
|
||
## Ограничения
|
||
|
||
- Не переписывать всю тестовую базу целиком.
|
||
- Не добавлять новую тестовую платформу.
|
||
- Не менять backend test strategy.
|
||
|
||
## Критерии приемки
|
||
|
||
- Test helpers и wrappers стали проще или уже, чем до фичи.
|
||
- Основные frontend тесты продолжают проходить.
|
||
- Тестовая документация описывает актуальные conventions.
|
||
- Не изменено пользовательское runtime-поведение.
|