42 lines
2.8 KiB
Markdown
42 lines
2.8 KiB
Markdown
# Фаза 28. Тесты экранов
|
|
|
|
## Зависимости
|
|
|
|
- [Фаза 13](../03-staffing/13-management-tab.md), [Фаза 17](../04-schedule/17-timetable-screen.md) — самые крупные экраны уже есть
|
|
|
|
## Зачем
|
|
|
|
`AGENTS.md` говорит: у экранов тестов нет, потому что DOM-окружение стоило бы зависимости,
|
|
которой у проекта нет. На первой фазе это было верно — экран состоял из часов. Сейчас в клиенте
|
|
несколько тысяч строк с диалогами, сеткой расписания, редактором карты и панелью управления, а
|
|
vitest уже стоит: DOM-окружение — это одна девзависимость.
|
|
|
|
Цель не «покрыть клиент», а закрыть те места, где на клиенте есть **логика**: сборка запроса из
|
|
фильтров, разбор кода ошибки в текст, блокировки в диалоге создания.
|
|
|
|
## Задачи
|
|
|
|
- [x] `happy-dom` как девзависимость и окружение vitest для тестов экранов
|
|
- [x] Тесты панели людей: фильтры собирают правильный запрос, пейджер не уезжает за границы
|
|
- [x] Тесты диалога создания: `core` нельзя снять, сброс карты возвращает дефолт, кнопка
|
|
блокируется на время запроса
|
|
- [x] Тесты сетки расписания: код отказа планировщика превращается в текст, а не в молчание
|
|
- [x] Тесты панели управления: отказ по пределу фонда показывается текстом
|
|
- [x] Политика тестирования в `AGENTS.md` переписывается: что теперь проверяется тестом, а что
|
|
по-прежнему глазами
|
|
- [x] Прогон экранов не должен заметно удлинять `npm test`
|
|
|
|
## Тесты, без которых фаза не закрыта
|
|
|
|
Сами тесты и есть содержание фазы; закрывают её четыре набора выше.
|
|
|
|
## Критерий готовности
|
|
|
|
- `npm --prefix src/HSchool.Client test` гоняет экраны и проходит
|
|
- CI не удлинился настолько, чтобы это раздражало
|
|
- Сломать `t(...)` в одном из экранов — тест краснеет
|
|
|
|
## Стоп
|
|
|
|
Не тащить фреймворк ради тестов. Не проверять вёрстку и стили — только поведение.
|