fix(tests): завершить лабораторную приёмку и обновить фикстуру удаления

This commit is contained in:
Denozordec committed 2026-10-15 20:30:07 +07:00
1 parent 481688e72a
commit 6210f34740
9 files changed
+185 -32

No files matched your search

+24 -14
View File
@@ -1,9 +1,19 @@
# План реализации UX/UI по пятичасовым окнам
Актуальное продолжение 2026-10-15: 263 — основной UI-набор принят:1393 initial +3 targeted =1396 уникальных сценариев, без пропусков; исходные371 screenshots и два исторических JSON восстановлены. Production backend258/frontend261. Далее264 — отдельная context-регрессия и итоговый акт; границы внешней приёмки сохраняются.
Актуальное состояние 2026-10-15: 264 — лабораторная приёмка основного UX/UI-плана завершена в документированных границах стенда. Приняты1396 основных UI и221 отдельных context-сценарий;120 live default states30 экранов. Runtime backend258/frontend261. Непроверенные внешние группы сохранены в итоговом акте; production-выпуск и push не выполнялись.
Общий план проекта MikrotikManager. Основан на согласованном плане из задачи; точка продолжения обновлена 2026-10-15. Источник фактического прогресса, проверок и ограничений — [журнал реализации](ux-ui-progress.md). Этот документ задаёт объём и критерии завершения, журнал фиксирует результат.
## 12.5.264 — context-регрессия и завершение лабораторной приёмки (2026-10-15)
Отдельный playwright.ux-context.config.ts: initial219 passed/2 failed, skipped0/flaky0/global errors0. Два remove-кейса использовали running fixture и упирались в корректный запрет удаления после248. Для remove задан stopped, для stop сохранён running; проверка позднего результата после смены backend сохранена. Повторены ровно два отказавших remove-кейса:2 passed. Итого221 уникальный принятый сценарий, а не один зелёный исходный прогон. Проверены смена backend/режима данных, поздние чтения и результаты операций, ABA и сохранение нового контекста; набор включает backend-switch.e2e.ts и исключённые из основной конфигурации context-файлы. Это локальные HTTP mocks, без native операций. С основным263 приняты1396 основных и221 отдельных context-сценарий; повторные три263 не добавляются к уникальному числу. [Протокол по файлам](ux-ui/acceptance/context264-summary.json).
TypeScript и scoped ESLint тестовых изменений263/264 прошли. После тестов SHA-256371 исходных screenshots проверен, исторические JSON сохранены. Нового production кода после build261/backend258 нет, повторная сборка не требовалась. Runtime images повторно сверены через docker inspect, все четыре сервиса running, backend/Portal/PG healthy. Пароли и конфигурации CHR в263–264 не менялись.
Основной UX/UI-план и этап12 завершены **в границах предоставленного тестового стенда**: production builds, профильные backend-проверки,1396 UI/221 context,120 live default states30 экранов, реальные интеграционные сценарии и список ограничений сохранены. [Итоговый акт](ux-ui-acceptance-candidate.md) отделяет эти результаты от непроверенных ОС/ручного screen reader/публичного IPv6/независимых WAN/multi-instance/расширенной PKI/S3/внешней публикации. Это не приёмка всех конфигураций и не выпуск в production.
Устаревшая текущая точка плана, ошибочно называвшая этапы10–12 не начатыми, заменена актуальным индексом. Исторические датированные записи сохранены. Следующий шаг при расширении работ — выбрать конкретную дополнительную группу из матрицы и предоставить её стенд; бесконечный повтор принятых тестов не требуется. Коммиты локальные, push0.
## 12.5.263 — полная UI-регрессия и согласованный фокус выбранной строки (2026-10-15)
Основной Playwright-набор:1396 сценариев в235 файлах,39min39s. Первый прогон:1393 passed/3 failed, skipped0/flaky0/global errors0. Все три отказа — прежний тестовый контракт ServerTileRail в collector-probes-tables: после260 фокус находится на выбранном option, контейнер listbox больше не Tab stop. Исправлены только тестовые обращения к фокусу; URL, End/Home/стрелки, границы площадок, поиск, pagination, mobile Escape и axe сохранены. Повторены ровно три отказавших сценария:3 passed/12.6s. Итого1396 уникальных принятых сценариев; это не1399 и не один полностью зелёный исходный прогон. [Протокол и результаты по файлам](ux-ui/acceptance/ui263-summary.json).
@@ -380,7 +390,7 @@ Production backend/frontend ux-backups237 собраны и развёрнуты
## Остаток приёмки по группам — 2026-10-15
Этапы0–11 завершены в локальных границах. Этап12.5 открыт. Ниже семь групп охвата; это не семь обязательных новых этапов и не обещание числа окон. Принятые сценарии не запускать заново без изменения кода или найденного риска. Для расширения стенда отдельно нужны перечисленные условия.
Этапы0–12 завершены в пределах документированной лабораторной приёмки2026-10-15. Ниже семь групп дополнительного охвата; это не обязательные новые этапы основного плана и не обещание числа окон. Принятые сценарии не запускать заново без изменения кода или найденного риска. Для расширения стенда отдельно нужны перечисленные условия.
| Группа | Подтверждено | Открытый объём / условие |
| --- | --- | --- |
@@ -389,8 +399,8 @@ Production backend/frontend ux-backups237 собраны и развёрнуты
| Масштаб и устойчивость | Контролируемые PG lock/dedupe/loss/recovery, отдельные multi-process сценарии194/200/201 | Несколько полноценных backend/worker со всеми writers, длительный rekey/traffic, физические потери WAN/DB и maximum throughput |
| Хранилища и внешние jobs | Реальные Portal/Telegram195–201, Selectel S3/limited bridge restore/retention228–240, GeoIP mirror242; контейнеры248; production ACME250 и реальное renewal/rotation259 с trusted TLS/cleanup | Large native export/migration buckets/multi-instance S3; CA revocation отдельно не принят. Gitea publishing CI не запускался: действует no push. Direct licensed MaxMind отсутствует в текущей реализации |
| Расширенные сетевые конфигурации | GRE/WG/VXLAN/IPsec/OSPF/BFD/BGP в записанных сценариях, включая private IPv6 | from-pool/EUI-64/multiple-address import/export, outer IPv6, произвольная PKI/OID/path-length, независимые внешние peers и длительные переходы. BFD-only gate не гарантирован |
| UX, доступность и производительность | UI226, ARIA мастеров251, новая проверка260 текущего runtime описана выше | Default UI260/261:120 unique states30 экранов приняты в автоматическом scope; актуальная полная UI-регрессия263 и ручная screen-reader приёмка отдельно. Synthetic timing не field CWV, scoped axe не полная WCAG сертификация |
| Границы выпуска | Датированный журнал, протоколы и локальные коммиты без push | Подготовить итоговый перечень принятых конфигураций/исключений для решения о выпуске; лабораторный успех не объявлять приёмкой всех конфигураций |
| UX, доступность и производительность | UI226, ARIA мастеров251, новая проверка260 текущего runtime описана выше | Default UI260/261:120 unique states30 экранов приняты в автоматическом scope; основная регрессия263:1396 и context264:221 приняты; ручная screen-reader приёмка отдельно. Synthetic timing не field CWV, scoped axe не полная WCAG сертификация |
| Границы выпуска | Датированный журнал, протоколы и локальные коммиты без push | [Итоговый акт](ux-ui-acceptance-candidate.md) готов; production-выпуск не выполнялся, лабораторный успех не означает приёмку всех конфигураций |
Portal offline JWT действует доexp после logout/role change; это записанная граница198, не мгновенная revocation. Controlled Telegram unknown/retry201 не доказывает физическую потерю ACK в WAN. Архивные записи ниже отражают состояние на свою дату; актуальный статус задают эта таблица и верхняя точка продолжения.
@@ -470,19 +480,19 @@ flowchart LR
новый контекст ≠ старые данные; неизвестное ≠ ноль
```
## Текущая точка продолжения
## Текущая точка продолжения — 2026-10-15
По журналу этапы 0–8 завершены в границах локальной приёмки; внешние ограничения сохраняются. Этап 9 начат (блоки 9.1–9.34 — IPsec/GRE/VXLAN и переключение Firewall); этапы 10–12 не начаты. Этап 11 разделён: 11А — пользователи, контейнеры, сертификаты, резервирование; 11Б — оповещения, сбор данных, интеграции, релизы, настройки.
Этапы0–11 завершены в границах локальной приёмки; реальные сетевые операции и интеграции дополнительно проверены в12.5. Итоговый статус этапа12 и точный проверенный контур задаются [актом приёмки](ux-ui-acceptance-candidate.md) и верхней датированной записью [журнала](ux-ui-progress.md). Старое утверждение «этапы10–12 не начаты» удалено как не соответствующее результатам.
Подробные планы: [этап 6](ux-ui-stage-6.md), [этап 7](ux-ui-stage-7.md), [этап 8 и итоговая матрица](ux-ui-stage-8.md), [этап 9](ux-ui-stage-9.md).
| Группа | Завершённый объём | Документ |
| --- | --- | --- |
| 0–5 | Подготовка, операции, миграция таблиц и состояния данных | [Журнал](ux-ui-progress.md) |
| 6–8 | Оболочка, серверы, мониторинг, трафик и статистика | [Этап6](ux-ui-stage-6.md), [этап7](ux-ui-stage-7.md), [этап8](ux-ui-stage-8.md) |
| 9–10 | VPN, Firewall, Filters, маршрутизация и диагностика | [Этап9](ux-ui-stage-9.md), [этап10](ux-ui-stage-10.md) |
| 11А–11Б | Администрирование, оповещения, интеграции и настройки | [Этап11А](ux-ui-stage-11a.md), [этап11Б](ux-ui-stage-11b.md) |
| 12 | Общая регрессия и реальный стенд; ограничения перечислены отдельно | [Этап12](ux-ui-stage-12.md), [матрица](ux-ui-remaining-acceptance.md) |
Этап 8 завершён блоком 8.13: периоды и URL статистики, достоверность REST/SSE, защита от гонок, свежесть и разрывы графиков, месячный отчёт с каталогом неактивных серверов, адаптивность и профильная клавиатурная приёмка. Повреждённые ответы статистики показывают ошибку с повтором. Точный состав проверок и ограничений сохранён в журнале.
Ближайший оставшийся объём:
1. Этап 9: карта разделов и схема сохранены; удаление, импорт, создание, переключение, контекст экспорта и выбор пира WireGuard исправлены в 9.1–9.7; в 9.8 проверено подтверждение восстановления. В 9.9 исправлены разметка и сохранение подтверждения при ошибке у всех шести потребителей. В 9.10 исправлены ошибки и поздние ответы загрузки истории WireGuard. В 9.11 подтверждение восстановления проверено у остальных пяти потребителей. В 9.12 обработаны ошибка/повтор/поздние ответы истории IPsec. В 9.13 подключены ошибка/повтор/защита поздних ответов остальных четырёх разделов и общая валидация ревизий всех шести. В 9.14 исправлены подтверждение инициализации IPsec, сохранение формы и защита повторной отправки. В 9.15 проверены создание/редактирование пользователей IPsec и сохранение формы. В 9.16 проверены получение/повторный экспорт сертификатов, поздние ответы и соответствие отображаемого пароля архиву. В 9.17 подтверждены ответы удаления четырёх типов объектов IPsec и исправлен диалог повторов. В 9.18 исправлено подтверждение сохранения peer IPsec и поведение формы. В 9.19 исправлено подтверждение удаления GRE и сохранение диалога при ошибке. В 9.20 исправлено подтверждение включения/выключения GRE и защита повторов. В 9.21 исправлены подтверждение создания/сохранения GRE и защита формы. В 9.22 исправлены контейнер ответа, первоначальные KPI и сохранение данных при ошибке VXLAN. В 9.23 backend сообщает частичные сбои VXLAN, UI сохраняет данные неответивших устройств и показывает неизвестное состояние. В 9.24 добавлены схемы payload и тесты гонок VXLAN. В 9.25 подтверждены включение/отключение правил Firewall и защита повторов. В 9.26 подтверждены включение/отключение address-list с общим замком переключений. В 9.27 удаление правил/address-list перенесено в диалог с подтверждением API и защитой повторов. В 9.28 создание/редактирование правил и address-list требуют подтверждения API, сохраняют ввод/ошибку и блокируют повторы/закрытие. В 9.29 перемещение Firewall требует ok=true, откатывает порядок при ошибке и использует общий замок. В 9.30 восстановление истории подключено к общему замку, ручное обновление и открытие истории заблокированы во время записи. В 9.31 добавлены схемы ответа Firewall/серверов, сохранение последних данных при ошибке и поколение чтения с отменой применения при начале записи. В 9.32 backend сообщает частичные сбои по устройству/семейству/таблице, UI сохраняет недоступные срезы и блокирует изменения неполного среза. В 9.33 состояние изолировано по backend/режиму; поздние операции старого экрана не запускают чтение и не показывают уведомления в новом контексте. В 9.34 показано время получения срезов Firewall: успешные обновляются, недоступные сохраняют прежнее время или остаются неизвестными. В 9.35 сохранение Filters ожидает ok=true, сохраняет ввод при ошибке и блокирует повторную отправку/закрытие; live-спLine truncated
2. Сохранять контекст устройства, введённые значения при ошибке и подтверждать результат операций по API; локальные моки проверяют клиентские сценарии, реальные сетевые операции требуют тестового окружения.
3. В этапе 12 выполнить полный аудит доступности (скринридер, контраст), производительности и сквозную регрессию. Ограничения этапа 8 — удалённые серверы месячного каталога, отсутствие экспорта и автоматического переподключения SSE — остаются явно зафиксированными, без заявления о реализации.
Следующие разделы с номерами9.x и датами сентября/начала октября сохраняют исторические результаты. Они не отменяют актуальный статус выше и не задают новую очередь уже завершённых работ.
## Проверенные экраны Filters — блок 9.46