fix(tests): согласовать полную регрессию с фокусом выбранного сервера
This commit is contained in:
1 parent
c88d31fa45
commit
481688e72a
9 files changed
+1359
-9
No files matched your search
@@ -0,0 +1,49 @@
|
||||
# Кандидат итоговой приёмки UX/UI — 2026-10-15
|
||||
|
||||
Статус: **основная UI-регрессия263 принята; отдельная context-регрессия264 запланирована**. Этот документ не разрешает выпуск, push или развёртывание в production. Этап12.5 пока открыт.
|
||||
|
||||
## Проверенный контур
|
||||
|
||||
- Debian13/Docker Compose, PostgreSQL18.6, Portal1.3.1; один backend.
|
||||
- Два тестовых CHR RouterOS7.24.5:194.226.121.150 и104.165.244.7. HTTP REST используется по разрешению владельца стенда.
|
||||
- Backend `ux-certificates258`: `sha256:984684709e619972bae8657208e3150d12f1c4f2b5642fecf5286a5d87e9fe71`.
|
||||
- Frontend `ux-accessibility261`: `sha256:eec4410f1109a46e864d695cfb4311fdb9a224247549c8a9e78e44c6c0e455cb`.
|
||||
- Основной ПК и узкий экран320px, обе темы. Android StrongSwan full-tunnel/reconnect подтверждены пользователем227; прочие ОС этим не принимаются.
|
||||
|
||||
Точные версии активных образов: [deployment261](ux-ui/acceptance/ui261-deployment.json). История решений: [план](ux-ui-plan.md), [журнал](ux-ui-progress.md), [внешняя матрица](ux-ui-remaining-acceptance.md).
|
||||
|
||||
## Критерии этапа12
|
||||
|
||||
| Критерий | Фактический результат | Граница доказательства |
|
||||
| --- | --- | --- |
|
||||
| Общая оболочка, доступность и адаптивность |260/261:120 уникальных default states30 экранов, обе темы/1440 и320px; профильные клавиатурные проверки и исправленный фокус при смене URL | Результаты разных фаз сохранены; это не полный ручной screen-reader аудит и не все состояния каждой формы |
|
||||
| Достоверность данных и операций | Unknown/partial состояния и подтверждение операций проверены профильными наборами и реальными сценариями журнала; в259 проверены native ID/key/fingerprint, TLS и canonical dates | Успех HTTP сам по себе не принят за применение; произвольные внешние конфигурации не охвачены |
|
||||
| Производительность | Большие списки — локальная12.3.83;260 — synthetic timings с отдельным ожиданием ответов API;262 —10min REST soak/252 запросов | Это измерения конкретного стенда, без заявления field CWV, maximum throughput или бесконечной устойчивости |
|
||||
| Сборки и регрессия | Backend257:25 profiles; certificates258:9 scripts/build/lint; frontend261:production build, source528 matched; профильные E2E260/261 пройдены | UI263:1393 initial +3 targeted =1396 unique passed,0 skipped/flaky; context-набор ожидает отдельного264, исторический результат не выдан за новый |
|
||||
| Реальные интеграции | Portal/Telegram195–201, Android227, S3/limited bridge restore/retention228–240, GeoIP mirror242, контейнеры248, ACME250/renewal259 | Успех этих сценариев не подтверждает все сторонние клиенты/провайдеры и многопроцессную установку |
|
||||
| ReUI | Frame/base-nova/установленные компоненты; semantic Badge variants; vendor/theme/motion не изменены; checklist и scoped проверки зафиксированы260/261 | Вне проверенных состояний могут оставаться проблемы; автоматический axe не является полной сертификацией WCAG |
|
||||
|
||||
Краткие протоколы: [UI260](ux-ui/acceptance/ui260-summary.json), [UI261](ux-ui/acceptance/ui261-summary.json), [REST262](ux-ui/acceptance/rest262-summary.json), [UI263](ux-ui/acceptance/ui263-summary.json), [ACME259](ux-ui/acceptance/acme259-native-rotation.json).
|
||||
|
||||
## Что остаётся за пределами подтверждённого контура
|
||||
|
||||
| Группа | Что не подтверждено / чего не хватает |
|
||||
| --- | --- |
|
||||
| Клиентские ОС и доступность | Windows/macOS/iOS VPN; другие Android-конфигурации; ручная проверка screen reader/assistive technology |
|
||||
| Внешняя сеть | Публичного IPv6 на стенде нет; независимые WAN, физическая потеря пути, outer IPv6 и maximum throughput не приняты |
|
||||
| Масштаб и устойчивость | Несколько полноценных backend/worker со всеми writers, длительные rekey/failover/DB disconnect; контролируемые multi-process тесты не заменяют весь этот контур |
|
||||
| PKI и маршрутизация | Произвольные PKI/OID/path-length/политики, все конфигурации IPv6/address pool; CA revocation ACME отдельно не принят |
|
||||
| Внешние сервисы | Публикация Gitea CI не запускалась по правилу no push; прямой licensed MaxMind отсутствует в текущей реализации; EvoBGP на стенде выключен и не настроен |
|
||||
| S3 | Большой native export, произвольная миграция бакетов и работа нескольких экземпляров требуют отдельной приёмки; полный restore конфигурации CHR не выполнялся |
|
||||
|
||||
Эти строки — ограничения доказательств и возможностей текущей реализации. Они не превращаются автоматически в поручение реализовать новые функции или получить отсутствующее оборудование.
|
||||
|
||||
## Состояние стенда и сохранность
|
||||
|
||||
После ACME259 восстановлены исходные SSL/native certificates/files/export и приватные SQL-настройки; собственные DNS/issue jobs и приватные ACME fixtures удалены. Контрольные проверки обоих CHR успешны; пароли не менялись. Последующие260–262 не изменяли конфигурацию устройств. ECMP261 проверялся как локальный черновик, затем возвращён off.
|
||||
|
||||
Коммиты только локальные, без push. В полном UI-наборе263 фактический Next dev manifest направляет unmocked proxy на недоступный `127.0.0.1:9`; исходные371 screenshot-файл сохранены перед запуском и сверены:124 перезаписанных восстановлены, SHA-256 всех371 совпал; два исторических JSON также восстановлены.
|
||||
|
||||
## Следующий шаг
|
||||
|
||||
Выполнить отдельный context-набор264, затем завершить акт для предоставленного лабораторного контура с сохранением перечисленных ограничений. Публикация и production-развёртывание в текущий объём не входят.
|
||||
@@ -1,6 +1,6 @@
|
||||
# UX/UI: протокол внешней приёмки 12.5
|
||||
|
||||
Актуальное продолжение 2026-10-15: 262 — ten-minute REST soak после shared pool fix прошёл:21 волна×12 GET,252 запросов/504 device observations,200/errornull везде, новые receipts, native writes0. UI260/261 покрывает120 unique default states30 экранов. Runtime backend258/frontend261. Следующий263 — полная актуальная локальная UI-регрессия с изоляцией backend и сохранением screenshots; этап12.5 открыт.
|
||||
Актуальное продолжение 2026-10-15: 263 — основной UI-набор принят:1393 initial +3 targeted =1396 уникальных сценариев, без пропусков; исходные371 screenshots и два исторических JSON восстановлены. Production backend258/frontend261. Далее264 — отдельная context-регрессия и итоговый акт; границы внешней приёмки сохраняются.
|
||||
|
||||
IPsec78: реальный PSK responder established, mode-config198.18.78.10 и online=true подтверждены API; точные собственные объекты удалены. Сертификатный/DN online, late failure и history restore остаются открытыми. [Отчёт](ux-ui/acceptance/ipsec-mode-config-2026-10-09.json), [журнал](ux-ui-progress.md).
|
||||
|
||||
@@ -18,6 +18,14 @@ OSPF84: real GRE Full adjacency/private routes/Ping3/3 и4 live PC/320px URL/bro
|
||||
|
||||
BFD85: Up/Full/own route/Ping,4 live UI и loss/withdrawal/recovery приняты; exact own cleanup8 коллекций×2 passed. Withdrawal5,245ms не подтверждает sub-second BFD timing; этот вопрос открыт. Runtime routing83 без новой сборки. [Отчёт](ux-ui/acceptance/ospf-bfd-loss-2026-10-09.json).
|
||||
|
||||
## 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).
|
||||
|
||||
BACKEND_INTERNAL_URL направлен на недоступный127.0.0.1:9; effective Next dev manifest проверен, диагностический GET вернул500. Перед запуском сохранены371 исходных screenshot-файл;124 перезаписанных восстановлены, SHA-256 всех371 совпал, новых файлов0. Два исторических backups241 JSON, перезаписанных тестами, восстановлены из предварительно чистого HEAD. Чужие исходные изменения сохранены. Production/native конфигурации не менялись, runtime backend258/frontend261. Context-набор исключён существующей конфигурацией и не выдан за новый прогон.
|
||||
|
||||
Следующий264 — актуальная отдельная context-регрессия и итоговый акт в границах предоставленного стенда. Ограничения внешних ОС/IPv6/WAN/multi-instance и ручного screen reader перечисляются отдельно; no push сохраняется.
|
||||
|
||||
## 12.5.262 — десятиминутная устойчивость REST после ограничения соединений (2026-10-15)
|
||||
|
||||
Реальный Portal UI login; JWT только в памяти процесса, не в отчёте/файле. Затем прямой localhost8000 SSH tunnel к backend258, endpoint GET /api/certificates/state:21 волна через30s,12 одновременно инициированных Node fetch запросов в каждой. Первый и последний запросы разделены полноценным окном600916ms. Frontend развёртывался/проверялся в части окна, обычные фоновые коллекторы работали; тест не зависел от frontend restart. [Полный протокол](ux-ui/acceptance/rest262-soak.json).
|
||||
|
||||
+9
-1
@@ -1,9 +1,17 @@
|
||||
# План реализации UX/UI по пятичасовым окнам
|
||||
|
||||
Актуальное продолжение 2026-10-15: 262 — ten-minute REST soak после shared pool fix прошёл:21 волна×12 GET,252 запросов/504 device observations,200/errornull везде, новые receipts, native writes0. UI260/261 покрывает120 unique default states30 экранов. Runtime backend258/frontend261. Следующий263 — полная актуальная локальная UI-регрессия с изоляцией backend и сохранением screenshots; этап12.5 открыт.
|
||||
Актуальное продолжение 2026-10-15: 263 — основной UI-набор принят:1393 initial +3 targeted =1396 уникальных сценариев, без пропусков; исходные371 screenshots и два исторических JSON восстановлены. Production backend258/frontend261. Далее264 — отдельная context-регрессия и итоговый акт; границы внешней приёмки сохраняются.
|
||||
|
||||
Общий план проекта MikrotikManager. Основан на согласованном плане из задачи; точка продолжения обновлена 2026-10-15. Источник фактического прогресса, проверок и ограничений — [журнал реализации](ux-ui-progress.md). Этот документ задаёт объём и критерии завершения, журнал фиксирует результат.
|
||||
|
||||
## 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).
|
||||
|
||||
BACKEND_INTERNAL_URL направлен на недоступный127.0.0.1:9; effective Next dev manifest проверен, диагностический GET вернул500. Перед запуском сохранены371 исходных screenshot-файл;124 перезаписанных восстановлены, SHA-256 всех371 совпал, новых файлов0. Два исторических backups241 JSON, перезаписанных тестами, восстановлены из предварительно чистого HEAD. Чужие исходные изменения сохранены. Production/native конфигурации не менялись, runtime backend258/frontend261. Context-набор исключён существующей конфигурацией и не выдан за новый прогон.
|
||||
|
||||
Следующий264 — актуальная отдельная context-регрессия и итоговый акт в границах предоставленного стенда. Ограничения внешних ОС/IPv6/WAN/multi-instance и ручного screen reader перечисляются отдельно; no push сохраняется.
|
||||
|
||||
## 12.5.262 — десятиминутная устойчивость REST после ограничения соединений (2026-10-15)
|
||||
|
||||
Реальный Portal UI login; JWT только в памяти процесса, не в отчёте/файле. Затем прямой localhost8000 SSH tunnel к backend258, endpoint GET /api/certificates/state:21 волна через30s,12 одновременно инициированных Node fetch запросов в каждой. Первый и последний запросы разделены полноценным окном600916ms. Frontend развёртывался/проверялся в части окна, обычные фоновые коллекторы работали; тест не зависел от frontend restart. [Полный протокол](ux-ui/acceptance/rest262-soak.json).
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
# UX/UI: журнал реализации
|
||||
|
||||
Актуальное продолжение 2026-10-15: 262 — ten-minute REST soak после shared pool fix прошёл:21 волна×12 GET,252 запросов/504 device observations,200/errornull везде, новые receipts, native writes0. UI260/261 покрывает120 unique default states30 экранов. Runtime backend258/frontend261. Следующий263 — полная актуальная локальная UI-регрессия с изоляцией backend и сохранением screenshots; этап12.5 открыт.
|
||||
Актуальное продолжение 2026-10-15: 263 — основной UI-набор принят:1393 initial +3 targeted =1396 уникальных сценариев, без пропусков; исходные371 screenshots и два исторических JSON восстановлены. Production backend258/frontend261. Далее264 — отдельная context-регрессия и итоговый акт; границы внешней приёмки сохраняются.
|
||||
|
||||
Общий план: [UX/UI по этапам и пятичасовым окнам](ux-ui-plan.md). План задаёт объём, этот журнал фиксирует выполненные блоки и ограничения. Записи расположены от новых к старым; подробная история этапа12 также сохранена в [ux-ui-stage-12.md](ux-ui-stage-12.md).
|
||||
|
||||
@@ -38,6 +38,14 @@
|
||||
| 11Б | Оповещения, сбор данных, интеграции, релизы и настройки | Завершён в границах локальной приёмки 2026-10-03; ограничения и evidence в11Б.7 |
|
||||
| 12 | Итоговая доступность, адаптивность, производительность и регрессия | Локальная12.3.83; внешняя12.5 открыта, блоки1–262. ACME259; default UI260/261:120 states30 экранов; REST262 ten-minute252 requests passed. Runtime backend258/frontend261. Следующий263 — итоговая локальная UI-регрессия. |
|
||||
|
||||
## 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).
|
||||
|
||||
BACKEND_INTERNAL_URL направлен на недоступный127.0.0.1:9; effective Next dev manifest проверен, диагностический GET вернул500. Перед запуском сохранены371 исходных screenshot-файл;124 перезаписанных восстановлены, SHA-256 всех371 совпал, новых файлов0. Два исторических backups241 JSON, перезаписанных тестами, восстановлены из предварительно чистого HEAD. Чужие исходные изменения сохранены. Production/native конфигурации не менялись, runtime backend258/frontend261. Context-набор исключён существующей конфигурацией и не выдан за новый прогон.
|
||||
|
||||
Следующий264 — актуальная отдельная context-регрессия и итоговый акт в границах предоставленного стенда. Ограничения внешних ОС/IPv6/WAN/multi-instance и ручного screen reader перечисляются отдельно; no push сохраняется.
|
||||
|
||||
## 12.5.262 — десятиминутная устойчивость REST после ограничения соединений (2026-10-15)
|
||||
|
||||
Реальный Portal UI login; JWT только в памяти процесса, не в отчёте/файле. Затем прямой localhost8000 SSH tunnel к backend258, endpoint GET /api/certificates/state:21 волна через30s,12 одновременно инициированных Node fetch запросов в каждой. Первый и последний запросы разделены полноценным окном600916ms. Frontend развёртывался/проверялся в части окна, обычные фоновые коллекторы работали; тест не зависел от frontend restart. [Полный протокол](ux-ui/acceptance/rest262-soak.json).
|
||||
|
||||
@@ -1,11 +1,19 @@
|
||||
# Оставшаяся внешняя приёмка — 2026-10-15
|
||||
|
||||
Актуальное продолжение 2026-10-15: 262 — ten-minute REST soak после shared pool fix прошёл:21 волна×12 GET,252 запросов/504 device observations,200/errornull везде, новые receipts, native writes0. UI260/261 покрывает120 unique default states30 экранов. Runtime backend258/frontend261. Следующий263 — полная актуальная локальная UI-регрессия с изоляцией backend и сохранением screenshots; этап12.5 открыт.
|
||||
Актуальное продолжение 2026-10-15: 263 — основной UI-набор принят:1393 initial +3 targeted =1396 уникальных сценариев, без пропусков; исходные371 screenshots и два исторических JSON восстановлены. Production backend258/frontend261. Далее264 — отдельная context-регрессия и итоговый акт; границы внешней приёмки сохраняются.
|
||||
|
||||
Это актуальная матрица после 12.5.262. Исторические записи сохраняют версии и ограничения на момент выполнения; поздние проверки ниже уточняют их. Этап 12.5 открыт. Успех в двух CHR и одном backend не означает приёмку всех конфигураций, интеграций или полной регрессии.
|
||||
|
||||
Стенд: Debian13/Compose, PostgreSQL18.6, два CHR RouterOS7.24.5. Backend `ux-certificates258`, frontend `ux-accessibility261`; production lab с195 использует AUTH_REQUIRED=true и Portal1.3.1. Подписанные JWT/RBAC проверялись в изолированных процессах. Все собственные объекты112 удалены, исходные13 коллекций×2 (включая logging/certificates/files/routes) проверены; пароли не менялись.
|
||||
|
||||
## 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).
|
||||
|
||||
BACKEND_INTERNAL_URL направлен на недоступный127.0.0.1:9; effective Next dev manifest проверен, диагностический GET вернул500. Перед запуском сохранены371 исходных screenshot-файл;124 перезаписанных восстановлены, SHA-256 всех371 совпал, новых файлов0. Два исторических backups241 JSON, перезаписанных тестами, восстановлены из предварительно чистого HEAD. Чужие исходные изменения сохранены. Production/native конфигурации не менялись, runtime backend258/frontend261. Context-набор исключён существующей конфигурацией и не выдан за новый прогон.
|
||||
|
||||
Следующий264 — актуальная отдельная context-регрессия и итоговый акт в границах предоставленного стенда. Ограничения внешних ОС/IPv6/WAN/multi-instance и ручного screen reader перечисляются отдельно; no push сохраняется.
|
||||
|
||||
## 12.5.262 — десятиминутная устойчивость REST после ограничения соединений (2026-10-15)
|
||||
|
||||
Реальный Portal UI login; JWT только в памяти процесса, не в отчёте/файле. Затем прямой localhost8000 SSH tunnel к backend258, endpoint GET /api/certificates/state:21 волна через30s,12 одновременно инициированных Node fetch запросов в каждой. Первый и последний запросы разделены полноценным окном600916ms. Frontend развёртывался/проверялся в части окна, обычные фоновые коллекторы работали; тест не зависел от frontend restart. [Полный протокол](ux-ui/acceptance/rest262-soak.json).
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
# Этап 12: итоговая приёмка UX/UI
|
||||
|
||||
Актуальное продолжение 2026-10-15: 262 — ten-minute REST soak после shared pool fix прошёл:21 волна×12 GET,252 запросов/504 device observations,200/errornull везде, новые receipts, native writes0. UI260/261 покрывает120 unique default states30 экранов. Runtime backend258/frontend261. Следующий263 — полная актуальная локальная UI-регрессия с изоляцией backend и сохранением screenshots; этап12.5 открыт.
|
||||
Актуальное продолжение 2026-10-15: 263 — основной UI-набор принят:1393 initial +3 targeted =1396 уникальных сценариев, без пропусков; исходные371 screenshots и два исторических JSON восстановлены. Production backend258/frontend261. Далее264 — отдельная context-регрессия и итоговый акт; границы внешней приёмки сохраняются.
|
||||
|
||||
План: [ux-ui-plan.md](ux-ui-plan.md). Фактические результаты: [ux-ui-progress.md](ux-ui-progress.md). Подготовлен после сводных проверок 11Б; завершение каждого блока требует локального коммита без push.
|
||||
|
||||
@@ -4152,6 +4152,14 @@ Real Portal/browser API, provider local verified: создан один job ро
|
||||
Runtime backend ux-backup234/frontend ux-routing218 healthy; новое application image для volume-only fix не требовалось. Пароли CHR не менялись, S3 mutations0 в235, configs body/JWT не опубликованы, private local manifest удалён. Исходные10 missing local files не восстановлены и records не удалены. Force-recreate — не host reboot/power loss/fsync/DR приёмка. Далее236 — UX недоступных local files, затем version retention границы и оставшиеся7 группы матрицы; multi-instance guard не принимается. Этап12.5 открыт.
|
||||
|
||||
|
||||
## 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).
|
||||
|
||||
BACKEND_INTERNAL_URL направлен на недоступный127.0.0.1:9; effective Next dev manifest проверен, диагностический GET вернул500. Перед запуском сохранены371 исходных screenshot-файл;124 перезаписанных восстановлены, SHA-256 всех371 совпал, новых файлов0. Два исторических backups241 JSON, перезаписанных тестами, восстановлены из предварительно чистого HEAD. Чужие исходные изменения сохранены. Production/native конфигурации не менялись, runtime backend258/frontend261. Context-набор исключён существующей конфигурацией и не выдан за новый прогон.
|
||||
|
||||
Следующий264 — актуальная отдельная context-регрессия и итоговый акт в границах предоставленного стенда. Ограничения внешних ОС/IPv6/WAN/multi-instance и ручного screen reader перечисляются отдельно; no push сохраняется.
|
||||
|
||||
## 12.5.262 — десятиминутная устойчивость REST после ограничения соединений (2026-10-15)
|
||||
|
||||
Реальный Portal UI login; JWT только в памяти процесса, не в отчёте/файле. Затем прямой localhost8000 SSH tunnel к backend258, endpoint GET /api/certificates/state:21 волна через30s,12 одновременно инициированных Node fetch запросов в каждой. Первый и последний запросы разделены полноценным окном600916ms. Frontend развёртывался/проверялся в части окна, обычные фоновые коллекторы работали; тест не зависел от frontend restart. [Полный протокол](ux-ui/acceptance/rest262-soak.json).
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
# Тестовый сервер UX/UI — 2026-10-10
|
||||
|
||||
Актуальное продолжение 2026-10-15: 262 — ten-minute REST soak после shared pool fix прошёл:21 волна×12 GET,252 запросов/504 device observations,200/errornull везде, новые receipts, native writes0. UI260/261 покрывает120 unique default states30 экранов. Runtime backend258/frontend261. Следующий263 — полная актуальная локальная UI-регрессия с изоляцией backend и сохранением screenshots; этап12.5 открыт.
|
||||
Актуальное продолжение 2026-10-15: 263 — основной UI-набор принят:1393 initial +3 targeted =1396 уникальных сценариев, без пропусков; исходные371 screenshots и два исторических JSON восстановлены. Production backend258/frontend261. Далее264 — отдельная context-регрессия и итоговый акт; границы внешней приёмки сохраняются.
|
||||
|
||||
| Параметр | Проверенное состояние |
|
||||
| --- | --- |
|
||||
@@ -34,6 +34,14 @@ OSPF84: real GRE Full adjacency/private routes/Ping3/3 и4 live PC/320px URL/bro
|
||||
|
||||
BFD85: Up/Full/own route/Ping,4 live UI и loss/withdrawal/recovery приняты; exact own cleanup8 коллекций×2 passed. Withdrawal5,245ms не подтверждает sub-second BFD timing; этот вопрос открыт. Runtime routing83 без новой сборки. [Отчёт](ux-ui/acceptance/ospf-bfd-loss-2026-10-09.json).
|
||||
|
||||
## 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).
|
||||
|
||||
BACKEND_INTERNAL_URL направлен на недоступный127.0.0.1:9; effective Next dev manifest проверен, диагностический GET вернул500. Перед запуском сохранены371 исходных screenshot-файл;124 перезаписанных восстановлены, SHA-256 всех371 совпал, новых файлов0. Два исторических backups241 JSON, перезаписанных тестами, восстановлены из предварительно чистого HEAD. Чужие исходные изменения сохранены. Production/native конфигурации не менялись, runtime backend258/frontend261. Context-набор исключён существующей конфигурацией и не выдан за новый прогон.
|
||||
|
||||
Следующий264 — актуальная отдельная context-регрессия и итоговый акт в границах предоставленного стенда. Ограничения внешних ОС/IPv6/WAN/multi-instance и ручного screen reader перечисляются отдельно; no push сохраняется.
|
||||
|
||||
## 12.5.262 — десятиминутная устойчивость REST после ограничения соединений (2026-10-15)
|
||||
|
||||
Реальный Portal UI login; JWT только в памяти процесса, не в отчёте/файле. Затем прямой localhost8000 SSH tunnel к backend258, endpoint GET /api/certificates/state:21 волна через30s,12 одновременно инициированных Node fetch запросов в каждой. Первый и последний запросы разделены полноценным окном600916ms. Frontend развёртывался/проверялся в части окна, обычные фоновые коллекторы работали; тест не зависел от frontend restart. [Полный протокол](ux-ui/acceptance/rest262-soak.json).
|
||||
|
||||
File diff suppressed because it is too large.
Load diff
@@ -125,7 +125,7 @@ for (const theme of ["dark", "light"]) test(`Large server rail: URL, стран
|
||||
await expect(rail.getByText("951–1000 из 1001", { exact: true })).toBeVisible()
|
||||
expect(await rail.locator("*").count()).toBeLessThan(1200)
|
||||
await info.attach("large-rail-metrics", { body: JSON.stringify({ fixtureDevices: 1001, renderedOptions: await list.getByRole("option").count(), railNodes: await rail.locator("*").count(), domNodes: await page.locator("*").count() }), contentType: "application/json" })
|
||||
await list.focus()
|
||||
await list.getByRole("option", { selected: true }).focus()
|
||||
await page.keyboard.press("End")
|
||||
await expect(page).toHaveURL(url => url.searchParams.get("server") === "1001" && url.searchParams.get("keep") === "1")
|
||||
await expect(list.getByRole("option")).toHaveCount(1)
|
||||
@@ -155,7 +155,7 @@ for (const theme of ["dark", "light"]) test(`Large server rail: URL, стран
|
||||
await expect(sheet.getByRole("option", { selected: true })).toContainText("Источник 1000")
|
||||
expect(await page.evaluate(() => document.documentElement.scrollWidth <= innerWidth)).toBe(true)
|
||||
expect(await sheet.getByRole("button", { name: "Следующие устройства", exact: true }).evaluate(el => el.getBoundingClientRect().right <= innerWidth)).toBe(true)
|
||||
expect(await sheet.getByRole("listbox", { name: "Серверы", exact: true }).evaluate(el => { const id = el.getAttribute("aria-activedescendant"); return !!id && el.contains(document.getElementById(id)) })).toBe(true)
|
||||
await sheet.getByRole("option", { selected: true }).focus(); await expect(sheet.getByRole("option", { selected: true })).toBeFocused()
|
||||
await page.addScriptTag({ content: axe.source })
|
||||
const audit = await page.evaluate(async () => (window as unknown as { axe: typeof axe }).axe.run(document.querySelector('[role="dialog"]')!, { runOnly: { type: "tag", values: ["wcag2a", "wcag2aa", "wcag21a", "wcag21aa", "wcag22aa"] } }))
|
||||
await info.attach("large-rail-axe", { body: JSON.stringify(audit), contentType: "application/json" })
|
||||
@@ -172,7 +172,7 @@ test("Large server rail: выбранное устройство и границ
|
||||
await expect(list.getByRole("option")).toHaveCount(1)
|
||||
await expect(list.getByRole("option", { selected: true })).toContainText("Источник 1000")
|
||||
await expect(rail.getByText("Площадка B", { exact: true })).toBeVisible()
|
||||
await list.focus()
|
||||
await list.getByRole("option", { selected: true }).focus()
|
||||
await page.keyboard.press("End")
|
||||
await expect(list.getByRole("option", { selected: true })).toContainText("Цель")
|
||||
await expect(list.getByRole("option")).toHaveCount(50)
|
||||
|
||||
Reference in new issue
Block a user