Files
h-school/docs/phases/28-screen-tests.md
T
Leonid Pershin c27d43f66a
ci / server (push) Failing after 3m39s
ci / client (push) Successful in 14s
Add foundational phase documentation for mod development
2026-08-19 23:35:30 +03:00

42 lines
2.8 KiB
Markdown

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