# Фаза 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(...)` в одном из экранов — тест краснеет ## Стоп Не тащить фреймворк ради тестов. Не проверять вёрстку и стили — только поведение.