diff --git a/docs/ux-ui-performance.md b/docs/ux-ui-performance.md index 44d5d39a..77a74f15 100644 --- a/docs/ux-ui-performance.md +++ b/docs/ux-ui-performance.md @@ -78,3 +78,5 @@ Statistics pivot в backend/src/services/statistics-aggregate.ts огранич 12.3.24:OSPF routes1000/200347 JSON bytes —50 DOM rows/1356 page nodes/930ms dev ready. Источник /ospf/catalog объединяет полный RouterOS ipRoutes без page/limit. Whole-catalog search/URL/reload/global Cost sort/page20/refresh/503 cache/1000→1/320px/видимость области/axe приняты;22+1 browser/type/lint/build. Полный DTO остаётся в памяти; скорость RouterOS не измерена. Осталось20 manualPagination:true specialized grids, включая demo/bounded источники; это не20 доказанных дефектов. 12.3.25:BFD1000/323133 JSON bytes —50 DOM rows/1956 page nodes/983ms dev ready. Источник /ospf/catalog объединяет полный RouterOS bfdSessions без page/limit. Whole-catalog search/URL/reload/global Rx sort/page20/refresh/503 cache/1000→1/320px/pinning/axe приняты;12 browser/type/lint/build. Полный DTO остаётся в памяти; скорость RouterOS не измерялась. Осталось19 manualPagination:true specialized grids, включая demo/bounded источники. + +Аудит источников12.4.5:RouteOptimizerCommRecsDataGrid получает flatRules.filter(sourceServerId===home.id).slice(0,24), максимум24 на один HomeCard; это не cap всей страницы с несколькими HomeCard. WireGuard /wireguard агрегирует полный interfaces/peers устройств без page/limit;1000-профиль применим к реальному пути, а WireGuardPeersDetail дополнительно рендерит полный peers массив раскрытого интерфейса. Эти границы установлены чтением кода, не внешней нагрузочной приёмкой. diff --git a/docs/ux-ui-plan.md b/docs/ux-ui-plan.md index 73bb8b11..cf30fa3a 100644 --- a/docs/ux-ui-plan.md +++ b/docs/ux-ui-plan.md @@ -4,7 +4,7 @@ ## Актуальная точка продолжения — 2026-10-04 -Этап 11Б завершён в границах локальной приёмки (11Б.7); внешний выпуск не проверен. 12.1 принят локально: доступность оболочки/клавиатура/health в описанных сценариях. 12.2.1 принят локально: strict BGP catalog/partial/nullable counters. 12.2.2 принят локально: strict traffic DTO и агрегация без выдуманных точек. 12.2.3 принят локально: observations для server traffic от backend до dashboard. 12.2.4 принят локально: strict servers/probes и unknown server status. 12.2.5 принят локально: реальные ping samples/unknown/ось RTT/Recharts. 12.2.6 принят локально: strict GRE/WireGuard/VXLAN и device failures. 12.2.7 принят локально: strict Internet path snapshot/fallback. 12.2.8 принят локально: подтверждение полного backend сбора. 12.2.9 принят локально: метрики участков и наблюдаемый WAN без эвристической подмены. 12.3.1 принят локально:1000 серверов/штатная пагинация. 12.3.2 принят локально: пагинация CompactDataGrid/1000 строк статистики. 12.3.3 принят локально: порционный DOM очереди проблем. 12.3.4 принят локально: большой BGP каталог/страница при обновлении. Production build и123 профильных browser приняты локально на3978976. 12.2.10 принят локально: обязательные RouterOS поля. 12.3.5 принят локально: страница CompactDataGrid сохраняется при опросе,89 browser и повторный production build прошли. 12.3.6 сохранён: baseline1000 speed probes (ограничение DOM пока не выполнено). 12.3.7 принят локально:50 строк speed-проб/сохранение страницы/глобальная сортировка/1000→1; каталог1001 устройства остаётся в DOM. 12.3.8 принят локально:50 строк ресурсов, URL/поиск/сохранение страницы/1000→1; исправлена pagination оболочки с children, production build и8 больших browser прошли. 12.3.9 принят локально:порционное раскрытие1000 предупреждений ресурсов/клавиатура/axe; исходная ошибка ESLint speedDraft подтверждена. 12.3.10 принят локально:недоступные интерфейсы очищаются в обработчиках,54 browser/полный ESLint/production build прошли. 12.3.11 принят локально:ServerTileRail50 устройств/URL/поиск/клавиатура/две площадки/mobile Sheet/axe обе темы;47 browser и production build прошли. 12.3.12 принят локально:BGP ручная страница при выбранной URL сессии/refresh/reload,16 browser/build прошли. 12.4.1 записан:main1091 сценарий/1088 passed/3 устаревших fixtures; оба исправленных файла6 passed. 12.4.2 принят локально:context205/24 файла и unit28 прошли. 12.3.13 принят локально:wide pivot51×16/ScrollArea/axe/24+2 browser/builds. 12.3.14 принят локально:history200/50 DOM/54+1 browser/build. 12.3.15 принят локально:live расписание1000/page20 error cache/15 browser. 12.3.16 принят локально:certificates1000/50 DOM/refresh деталей/19+3 browser/build. 12.3.17 принят локально:pinning идентификатора/видимость значений/29 browser/build. 12.3.18 принят локально:users1000/поиск всего списка/детали и ошибка refresh/32 browser/build. 12.3.19 принят локально:backups1000/все мобильные действия/возврат focus/39+4 browser/build. 12.3.20 принят локально:независимые speed GET/cache/freshness/58+4 browser/build. 12.3.21 принят локально:strict history DTO/null rates от DB до UI/60+5 browser/unit4/builds. 12.4.3 принят локально:users/backups delta context36 на a558412. 12.3.22 принят локально:shared speed-probes DTO/context8/60+6+47 browser/unit5/builds. 12.3.23 принят локально:strict write DTO/atomic replacement/confirmed scheduler warning/65 browser/HTTP DI JWT/builds. 12.3.24 принят локально:OSPF routes1000/50 DOM/page20/cache/320px/22+1 browser/build. 12.3.25 принят локально:BFD1000/50 DOM/cache/320px/12 browser/build. 12.4.4 принят локально:context213/25 файлов и unit36 прошли на5b2a291. Следующий блок12.4.5:общий main текущего HEAD, затем12.3.26 network grids и WireGuard missing/zero bytes; далее network grids и полная main/context регрессия.12.5 отдельно. См. docs/ux-ui-stage-12.md. Внешние ограничения 11Б сохраняются. +Этап 11Б завершён в границах локальной приёмки (11Б.7); внешний выпуск не проверен. 12.1 принят локально: доступность оболочки/клавиатура/health в описанных сценариях. 12.2.1 принят локально: strict BGP catalog/partial/nullable counters. 12.2.2 принят локально: strict traffic DTO и агрегация без выдуманных точек. 12.2.3 принят локально: observations для server traffic от backend до dashboard. 12.2.4 принят локально: strict servers/probes и unknown server status. 12.2.5 принят локально: реальные ping samples/unknown/ось RTT/Recharts. 12.2.6 принят локально: strict GRE/WireGuard/VXLAN и device failures. 12.2.7 принят локально: strict Internet path snapshot/fallback. 12.2.8 принят локально: подтверждение полного backend сбора. 12.2.9 принят локально: метрики участков и наблюдаемый WAN без эвристической подмены. 12.3.1 принят локально:1000 серверов/штатная пагинация. 12.3.2 принят локально: пагинация CompactDataGrid/1000 строк статистики. 12.3.3 принят локально: порционный DOM очереди проблем. 12.3.4 принят локально: большой BGP каталог/страница при обновлении. Production build и123 профильных browser приняты локально на3978976. 12.2.10 принят локально: обязательные RouterOS поля. 12.3.5 принят локально: страница CompactDataGrid сохраняется при опросе,89 browser и повторный production build прошли. 12.3.6 сохранён: baseline1000 speed probes (ограничение DOM пока не выполнено). 12.3.7 принят локально:50 строк speed-проб/сохранение страницы/глобальная сортировка/1000→1; каталог1001 устройства остаётся в DOM. 12.3.8 принят локально:50 строк ресурсов, URL/поиск/сохранение страницы/1000→1; исправлена pagination оболочки с children, production build и8 больших browser прошли. 12.3.9 принят локально:порционное раскрытие1000 предупреждений ресурсов/клавиатура/axe; исходная ошибка ESLint speedDraft подтверждена. 12.3.10 принят локально:недоступные интерфейсы очищаются в обработчиках,54 browser/полный ESLint/production build прошли. 12.3.11 принят локально:ServerTileRail50 устройств/URL/поиск/клавиатура/две площадки/mobile Sheet/axe обе темы;47 browser и production build прошли. 12.3.12 принят локально:BGP ручная страница при выбранной URL сессии/refresh/reload,16 browser/build прошли. 12.4.1 записан:main1091 сценарий/1088 passed/3 устаревших fixtures; оба исправленных файла6 passed. 12.4.2 принят локально:context205/24 файла и unit28 прошли. 12.3.13 принят локально:wide pivot51×16/ScrollArea/axe/24+2 browser/builds. 12.3.14 принят локально:history200/50 DOM/54+1 browser/build. 12.3.15 принят локально:live расписание1000/page20 error cache/15 browser. 12.3.16 принят локально:certificates1000/50 DOM/refresh деталей/19+3 browser/build. 12.3.17 принят локально:pinning идентификатора/видимость значений/29 browser/build. 12.3.18 принят локально:users1000/поиск всего списка/детали и ошибка refresh/32 browser/build. 12.3.19 принят локально:backups1000/все мобильные действия/возврат focus/39+4 browser/build. 12.3.20 принят локально:независимые speed GET/cache/freshness/58+4 browser/build. 12.3.21 принят локально:strict history DTO/null rates от DB до UI/60+5 browser/unit4/builds. 12.4.3 принят локально:users/backups delta context36 на a558412. 12.3.22 принят локально:shared speed-probes DTO/context8/60+6+47 browser/unit5/builds. 12.3.23 принят локально:strict write DTO/atomic replacement/confirmed scheduler warning/65 browser/HTTP DI JWT/builds. 12.3.24 принят локально:OSPF routes1000/50 DOM/page20/cache/320px/22+1 browser/build. 12.3.25 принят локально:BFD1000/50 DOM/cache/320px/12 browser/build. 12.4.4 принят локально:context213/25 файлов и unit36 прошли на5b2a291. 12.4.5 принят локально:main1110/171 прошли на21859be. Следующий блок12.3.26:strict atomic Ping write и copy об удалении истории; затем12.3.27 WireGuard missing/zero bytes и network grids; далее network grids и полная main/context регрессия.12.5 отдельно. См. docs/ux-ui-stage-12.md. Внешние ограничения 11Б сохраняются. Реальные pg_dump/pg_restore, PG rollback и остановка UDP worker требуют внешней приёмки. Датированные продолжения ниже — история; точный следующий шаг также указан в начале [журнала](ux-ui-progress.md). diff --git a/docs/ux-ui-progress.md b/docs/ux-ui-progress.md index 4ddf47b6..bbe6b3b4 100644 --- a/docs/ux-ui-progress.md +++ b/docs/ux-ui-progress.md @@ -29,13 +29,21 @@ | 10 | Маршрутизация, диагностика, карта и терминал | Завершён в границах локальной приёмки 2026-10-01; блоки 10.1–10.71, внешние ограничения в 10.71 | | 11А | Пользователи, контейнеры, сертификаты и резервные копии | Завершён в границах локальной приёмки 2026-10-01; 11А.1–11А.33, внешние ограничения в 11А.33 | | 11Б | Оповещения, сбор данных, интеграции, релизы и настройки | Завершён в границах локальной приёмки 2026-10-03; ограничения и evidence в11Б.7 | -| 12 | Итоговая доступность, адаптивность, производительность и регрессия | В работе;12.1/12.2.1–12.2.10 и12.3.1–12.3.5 и12.3.7–12.3.12 приняты в описанных локальных границах;12.4.1 main регрессия и профильный повтор записаны;12.4.2 context205 и unit28 прошли;12.3.13–12.3.21 приняты локально в описанных границах; общая повторная регрессия последних delta остаётся | +| 12 | Итоговая доступность, адаптивность, производительность и регрессия | В работе;12.1/12.2.1–12.2.10 и12.3.1–12.3.5 и12.3.7–12.3.12 приняты в описанных локальных границах;12.4.1 main регрессия и профильный повтор записаны;12.4.2 context205 и unit28 прошли;12.3.13–12.3.25 приняты локально в описанных границах;12.4.4 context213 и12.4.5 main1110 прошли, остаются Ping write/network grids/внешняя приёмка | +## 12.4.5 — повтор основной регрессии (2026-10-04) + +На HEAD21859be полный playwright.config.ts дал1110 из1110 passed/171 файл за26.6min;0 unexpected/0 skipped/0 flaky, Edge/workers1/retries0/maxFailures12. Прежние3 устаревшие fixtures из12.4.1 исправлены и теперь прошли в общей матрице. Включены последние speed read/write и большие OSPF/BFD профили, двухтемная доступность оболочки, права, responsive и сквозные API scenarios. Доказательство: docs/ux-ui/acceptance/main-repeat-2026-10-04.json с точным HEAD и результатами по файлам. Context213/25 и unit36 приняты отдельно в12.4.4. Исторические PNG, пересозданные этим прогоном, восстановлены по явному проверенному списку; новые принятые OSPF/BFD снимки сохранены. + +Это общая локальная регрессия текущего кода, не полная итоговая приёмка stage12. Аудит показал оставшийся опасный Ping PUT: normalize/filter перед последовательными DB deletes/updates, а uptimeProbeSamples удаляются каскадно. Также подтверждён fmtBytes(0)→— в WireGuard detail/peer grid. Network performance map сохраняет19 manualPagination:true specialized grids; CommRecs ограничен24 на HomeCard (lib/route-optimizer-data.ts), общий список HomeCard этим не ограничен. Тесты реальных PG/RouterOS/integrations не выполнялись. + +Следующий блок12.3.26: строгий Ping write DTO до DB, атомарная замена, защита записи неизвестного каталога, подтверждение scheduler warning и точная copy о каскадном удалении истории. Затем12.3.27 WireGuard missing/zero counters и оставшиеся network grids. Внешняя12.5 отдельно; коммит локальный без push. + ## 12.4.4 — повтор общей context матрицы (2026-10-04) На HEAD5b2a291 повторена вся playwright.ux-context.config.ts:213 из213 сценариев/25 файлов,7.5min,0 unexpected/0 skipped/0 flaky; Edge,workers1,retries0,maxFailures12. Включены новые8 uptime speed context сценариев и все прежние source/ABA/операции/unknown checkpoint profiles. Доказательство: docs/ux-ui/acceptance/context-repeat-2026-10-04.json с точным HEAD и результатами по файлам. diff --git a/docs/ux-ui-stage-12.md b/docs/ux-ui-stage-12.md index b8b6d837..6120cacf 100644 --- a/docs/ux-ui-stage-12.md +++ b/docs/ux-ui-stage-12.md @@ -371,3 +371,12 @@ Backend заменяет каталог в одной Drizzle transaction с pg_ Следующий блок12.4.5: общий main прогон текущего HEAD с сохранением JSON evidence. Затем12.3.26 оставшиеся network grids; аудит также выявил fmtBytes(0)→— в WireGuard detail/peer grid, исправить в следующем UI блоке с различением missing/zero. Внешняя12.5 отдельно; stage12 не завершён. Коммит локальный без push. + +## 12.4.5 — повтор основной регрессии (2026-10-04) + +На HEAD21859be полный playwright.config.ts дал1110 из1110 passed/171 файл за26.6min;0 unexpected/0 skipped/0 flaky, Edge/workers1/retries0/maxFailures12. Прежние3 устаревшие fixtures из12.4.1 исправлены и теперь прошли в общей матрице. Включены последние speed read/write и большие OSPF/BFD профили, двухтемная доступность оболочки, права, responsive и сквозные API scenarios. Доказательство: docs/ux-ui/acceptance/main-repeat-2026-10-04.json с точным HEAD и результатами по файлам. Context213/25 и unit36 приняты отдельно в12.4.4. Исторические PNG, пересозданные этим прогоном, восстановлены по явному проверенному списку; новые принятые OSPF/BFD снимки сохранены. + +Это общая локальная регрессия текущего кода, не полная итоговая приёмка stage12. Аудит показал оставшийся опасный Ping PUT: normalize/filter перед последовательными DB deletes/updates, а uptimeProbeSamples удаляются каскадно. Также подтверждён fmtBytes(0)→— в WireGuard detail/peer grid. Network performance map сохраняет19 manualPagination:true specialized grids; CommRecs ограничен24 на HomeCard (lib/route-optimizer-data.ts), общий список HomeCard этим не ограничен. Тесты реальных PG/RouterOS/integrations не выполнялись. + +Следующий блок12.3.26: строгий Ping write DTO до DB, атомарная замена, защита записи неизвестного каталога, подтверждение scheduler warning и точная copy о каскадном удалении истории. Затем12.3.27 WireGuard missing/zero counters и оставшиеся network grids. Внешняя12.5 отдельно; коммит локальный без push. + diff --git a/docs/ux-ui/acceptance/main-repeat-2026-10-04.json b/docs/ux-ui/acceptance/main-repeat-2026-10-04.json new file mode 100644 index 00000000..a8bdbd97 --- /dev/null +++ b/docs/ux-ui/acceptance/main-repeat-2026-10-04.json @@ -0,0 +1,1221 @@ +{ + "head": "21859be580be610484a17da7e40e21687fd78fc1", + "config": "playwright.config.ts", + "browser": "msedge", + "workers": 1, + "retries": 0, + "maxFailures": 12, + "source": "test-results/ux-main-repeat.json", + "stats": { + "startTime": "2026-10-04T04:00:34.885Z", + "duration": 1593713.13, + "expected": 1110, + "skipped": 0, + "unexpected": 0, + "flaky": 0 + }, + "errors": [], + "files": [ + { + "file": "accessibility-shell.spec.ts", + "passed": 20, + "failed": 0, + "skipped": 0, + "failures": [] + }, + { + "file": "admin-tables.spec.ts", + "passed": 4, + "failed": 0, + "skipped": 0, + "failures": [] + }, + { + "file": "alerts-history.spec.ts", + "passed": 1, + "failed": 0, + "skipped": 0, + "failures": [] + }, + { + "file": "alerts-layout.spec.ts", + "passed": 3, + "failed": 0, + "skipped": 0, + "failures": [] + }, + { + "file": "alerts-outbox.spec.ts", + "passed": 7, + "failed": 0, + "skipped": 0, + "failures": [] + }, + { + "file": "alerts-pickers.spec.ts", + "passed": 2, + "failed": 0, + "skipped": 0, + "failures": [] + }, + { + "file": "alerts-prefix.spec.ts", + "passed": 1, + "failed": 0, + "skipped": 0, + "failures": [] + }, + { + "file": "alerts-preview.spec.ts", + "passed": 3, + "failed": 0, + "skipped": 0, + "failures": [] + }, + { + "file": "alerts-reader.spec.ts", + "passed": 3, + "failed": 0, + "skipped": 0, + "failures": [] + }, + { + "file": "alerts-rules.spec.ts", + "passed": 9, + "failed": 0, + "skipped": 0, + "failures": [] + }, + { + "file": "alerts-targets.spec.ts", + "passed": 4, + "failed": 0, + "skipped": 0, + "failures": [] + }, + { + "file": "alerts-telegram.spec.ts", + "passed": 10, + "failed": 0, + "skipped": 0, + "failures": [] + }, + { + "file": "backups-data.spec.ts", + "passed": 12, + "failed": 0, + "skipped": 0, + "failures": [] + }, + { + "file": "backups-dialog-layout.spec.ts", + "passed": 3, + "failed": 0, + "skipped": 0, + "failures": [] + }, + { + "file": "backups-job.spec.ts", + "passed": 9, + "failed": 0, + "skipped": 0, + "failures": [] + }, + { + "file": "backups-layout.spec.ts", + "passed": 3, + "failed": 0, + "skipped": 0, + "failures": [] + }, + { + "file": "backups-operations.spec.ts", + "passed": 12, + "failed": 0, + "skipped": 0, + "failures": [] + }, + { + "file": "backups-settings.spec.ts", + "passed": 9, + "failed": 0, + "skipped": 0, + "failures": [] + }, + { + "file": "backups-states-layout.spec.ts", + "passed": 9, + "failed": 0, + "skipped": 0, + "failures": [] + }, + { + "file": "backups-storage.spec.ts", + "passed": 7, + "failed": 0, + "skipped": 0, + "failures": [] + }, + { + "file": "backups-url.spec.ts", + "passed": 5, + "failed": 0, + "skipped": 0, + "failures": [] + }, + { + "file": "bgp-data.spec.ts", + "passed": 13, + "failed": 0, + "skipped": 0, + "failures": [] + }, + { + "file": "bgp-layout.spec.ts", + "passed": 2, + "failed": 0, + "skipped": 0, + "failures": [] + }, + { + "file": "bgp-links-freshness.spec.ts", + "passed": 2, + "failed": 0, + "skipped": 0, + "failures": [] + }, + { + "file": "certificates-acme.spec.ts", + "passed": 10, + "failed": 0, + "skipped": 0, + "failures": [] + }, + { + "file": "certificates-data.spec.ts", + "passed": 12, + "failed": 0, + "skipped": 0, + "failures": [] + }, + { + "file": "certificates-issue.spec.ts", + "passed": 7, + "failed": 0, + "skipped": 0, + "failures": [] + }, + { + "file": "certificates-layout.spec.ts", + "passed": 3, + "failed": 0, + "skipped": 0, + "failures": [] + }, + { + "file": "certificates-renew.spec.ts", + "passed": 10, + "failed": 0, + "skipped": 0, + "failures": [] + }, + { + "file": "certificates-url.spec.ts", + "passed": 6, + "failed": 0, + "skipped": 0, + "failures": [] + }, + { + "file": "collector-probes-tables.spec.ts", + "passed": 7, + "failed": 0, + "skipped": 0, + "failures": [] + }, + { + "file": "config-history.spec.ts", + "passed": 11, + "failed": 0, + "skipped": 0, + "failures": [] + }, + { + "file": "containers-data.spec.ts", + "passed": 14, + "failed": 0, + "skipped": 0, + "failures": [] + }, + { + "file": "containers-layout.spec.ts", + "passed": 4, + "failed": 0, + "skipped": 0, + "failures": [] + }, + { + "file": "containers-operations.spec.ts", + "passed": 12, + "failed": 0, + "skipped": 0, + "failures": [] + }, + { + "file": "containers-url.spec.ts", + "passed": 10, + "failed": 0, + "skipped": 0, + "failures": [] + }, + { + "file": "dashboard-data.spec.ts", + "passed": 61, + "failed": 0, + "skipped": 0, + "failures": [] + }, + { + "file": "dashboard-permissions.spec.ts", + "passed": 2, + "failed": 0, + "skipped": 0, + "failures": [] + }, + { + "file": "data-collection-geoip.spec.ts", + "passed": 2, + "failed": 0, + "skipped": 0, + "failures": [] + }, + { + "file": "data-collection-history.spec.ts", + "passed": 5, + "failed": 0, + "skipped": 0, + "failures": [] + }, + { + "file": "data-collection-operations.spec.ts", + "passed": 10, + "failed": 0, + "skipped": 0, + "failures": [] + }, + { + "file": "data-collection-race.spec.ts", + "passed": 2, + "failed": 0, + "skipped": 0, + "failures": [] + }, + { + "file": "data-collection-responsive.spec.ts", + "passed": 3, + "failed": 0, + "skipped": 0, + "failures": [] + }, + { + "file": "data-collection-settings.spec.ts", + "passed": 16, + "failed": 0, + "skipped": 0, + "failures": [] + }, + { + "file": "data-collection-snapshot.spec.ts", + "passed": 4, + "failed": 0, + "skipped": 0, + "failures": [] + }, + { + "file": "data-collection-status.spec.ts", + "passed": 4, + "failed": 0, + "skipped": 0, + "failures": [] + }, + { + "file": "evobgp-catalog-error.spec.ts", + "passed": 1, + "failed": 0, + "skipped": 0, + "failures": [] + }, + { + "file": "evobgp-consumers.spec.ts", + "passed": 18, + "failed": 0, + "skipped": 0, + "failures": [] + }, + { + "file": "evobgp-counts.spec.ts", + "passed": 1, + "failed": 0, + "skipped": 0, + "failures": [] + }, + { + "file": "evobgp-form.spec.ts", + "passed": 7, + "failed": 0, + "skipped": 0, + "failures": [] + }, + { + "file": "evobgp-provider.spec.ts", + "passed": 8, + "failed": 0, + "skipped": 0, + "failures": [] + }, + { + "file": "evobgp-responsive.spec.ts", + "passed": 3, + "failed": 0, + "skipped": 0, + "failures": [] + }, + { + "file": "evobgp-test-receipt.spec.ts", + "passed": 1, + "failed": 0, + "skipped": 0, + "failures": [] + }, + { + "file": "filters-copy-target.spec.ts", + "passed": 2, + "failed": 0, + "skipped": 0, + "failures": [] + }, + { + "file": "filters-copy.spec.ts", + "passed": 2, + "failed": 0, + "skipped": 0, + "failures": [] + }, + { + "file": "filters-data.spec.ts", + "passed": 5, + "failed": 0, + "skipped": 0, + "failures": [] + }, + { + "file": "filters-delete.spec.ts", + "passed": 2, + "failed": 0, + "skipped": 0, + "failures": [] + }, + { + "file": "filters-freshness.spec.ts", + "passed": 1, + "failed": 0, + "skipped": 0, + "failures": [] + }, + { + "file": "filters-gateways.spec.ts", + "passed": 2, + "failed": 0, + "skipped": 0, + "failures": [] + }, + { + "file": "filters-history-lock.spec.ts", + "passed": 4, + "failed": 0, + "skipped": 0, + "failures": [] + }, + { + "file": "filters-layout.spec.ts", + "passed": 2, + "failed": 0, + "skipped": 0, + "failures": [] + }, + { + "file": "filters-move.spec.ts", + "passed": 2, + "failed": 0, + "skipped": 0, + "failures": [] + }, + { + "file": "filters-read-race.spec.ts", + "passed": 2, + "failed": 0, + "skipped": 0, + "failures": [] + }, + { + "file": "filters-save.spec.ts", + "passed": 2, + "failed": 0, + "skipped": 0, + "failures": [] + }, + { + "file": "firewall-address-toggle.spec.ts", + "passed": 2, + "failed": 0, + "skipped": 0, + "failures": [] + }, + { + "file": "firewall-data.spec.ts", + "passed": 8, + "failed": 0, + "skipped": 0, + "failures": [] + }, + { + "file": "firewall-delete.spec.ts", + "passed": 4, + "failed": 0, + "skipped": 0, + "failures": [] + }, + { + "file": "firewall-freshness.spec.ts", + "passed": 2, + "failed": 0, + "skipped": 0, + "failures": [] + }, + { + "file": "firewall-history-lock.spec.ts", + "passed": 1, + "failed": 0, + "skipped": 0, + "failures": [] + }, + { + "file": "firewall-move.spec.ts", + "passed": 2, + "failed": 0, + "skipped": 0, + "failures": [] + }, + { + "file": "firewall-partial.spec.ts", + "passed": 3, + "failed": 0, + "skipped": 0, + "failures": [] + }, + { + "file": "firewall-save.spec.ts", + "passed": 8, + "failed": 0, + "skipped": 0, + "failures": [] + }, + { + "file": "firewall-tables.spec.ts", + "passed": 5, + "failed": 0, + "skipped": 0, + "failures": [] + }, + { + "file": "firewall-toggle.spec.ts", + "passed": 2, + "failed": 0, + "skipped": 0, + "failures": [] + }, + { + "file": "geoip-responsive.spec.ts", + "passed": 3, + "failed": 0, + "skipped": 0, + "failures": [] + }, + { + "file": "geoip-settings.spec.ts", + "passed": 10, + "failed": 0, + "skipped": 0, + "failures": [] + }, + { + "file": "gre-data.spec.ts", + "passed": 8, + "failed": 0, + "skipped": 0, + "failures": [] + }, + { + "file": "gre-delete.spec.ts", + "passed": 1, + "failed": 0, + "skipped": 0, + "failures": [] + }, + { + "file": "gre-form.spec.ts", + "passed": 3, + "failed": 0, + "skipped": 0, + "failures": [] + }, + { + "file": "gre-freshness.spec.ts", + "passed": 1, + "failed": 0, + "skipped": 0, + "failures": [] + }, + { + "file": "gre-links.spec.ts", + "passed": 8, + "failed": 0, + "skipped": 0, + "failures": [] + }, + { + "file": "gre-pools.spec.ts", + "passed": 1, + "failed": 0, + "skipped": 0, + "failures": [] + }, + { + "file": "gre-psk.spec.ts", + "passed": 2, + "failed": 0, + "skipped": 0, + "failures": [] + }, + { + "file": "gre-readiness.spec.ts", + "passed": 2, + "failed": 0, + "skipped": 0, + "failures": [] + }, + { + "file": "gre-toggle.spec.ts", + "passed": 2, + "failed": 0, + "skipped": 0, + "failures": [] + }, + { + "file": "gre-vxlan-layout.spec.ts", + "passed": 4, + "failed": 0, + "skipped": 0, + "failures": [] + }, + { + "file": "ipsec-cert.spec.ts", + "passed": 2, + "failed": 0, + "skipped": 0, + "failures": [] + }, + { + "file": "ipsec-data.spec.ts", + "passed": 9, + "failed": 0, + "skipped": 0, + "failures": [] + }, + { + "file": "ipsec-delete.spec.ts", + "passed": 4, + "failed": 0, + "skipped": 0, + "failures": [] + }, + { + "file": "ipsec-freshness.spec.ts", + "passed": 1, + "failed": 0, + "skipped": 0, + "failures": [] + }, + { + "file": "ipsec-gre-tables.spec.ts", + "passed": 3, + "failed": 0, + "skipped": 0, + "failures": [] + }, + { + "file": "ipsec-init.spec.ts", + "passed": 1, + "failed": 0, + "skipped": 0, + "failures": [] + }, + { + "file": "ipsec-layout.spec.ts", + "passed": 2, + "failed": 0, + "skipped": 0, + "failures": [] + }, + { + "file": "ipsec-operation-lock.spec.ts", + "passed": 1, + "failed": 0, + "skipped": 0, + "failures": [] + }, + { + "file": "ipsec-peer.spec.ts", + "passed": 1, + "failed": 0, + "skipped": 0, + "failures": [] + }, + { + "file": "ipsec-readiness.spec.ts", + "passed": 1, + "failed": 0, + "skipped": 0, + "failures": [] + }, + { + "file": "ipsec-user.spec.ts", + "passed": 3, + "failed": 0, + "skipped": 0, + "failures": [] + }, + { + "file": "large-backups.spec.ts", + "passed": 1, + "failed": 0, + "skipped": 0, + "failures": [] + }, + { + "file": "large-bgp.spec.ts", + "passed": 1, + "failed": 0, + "skipped": 0, + "failures": [] + }, + { + "file": "large-certificates.spec.ts", + "passed": 1, + "failed": 0, + "skipped": 0, + "failures": [] + }, + { + "file": "large-ospf-bfd.spec.ts", + "passed": 1, + "failed": 0, + "skipped": 0, + "failures": [] + }, + { + "file": "large-ospf-routes.spec.ts", + "passed": 1, + "failed": 0, + "skipped": 0, + "failures": [] + }, + { + "file": "large-servers.spec.ts", + "passed": 1, + "failed": 0, + "skipped": 0, + "failures": [] + }, + { + "file": "large-speed-history.spec.ts", + "passed": 1, + "failed": 0, + "skipped": 0, + "failures": [] + }, + { + "file": "large-statistics-pivot.spec.ts", + "passed": 2, + "failed": 0, + "skipped": 0, + "failures": [] + }, + { + "file": "large-statistics.spec.ts", + "passed": 1, + "failed": 0, + "skipped": 0, + "failures": [] + }, + { + "file": "large-uptime-resources.spec.ts", + "passed": 1, + "failed": 0, + "skipped": 0, + "failures": [] + }, + { + "file": "large-users.spec.ts", + "passed": 1, + "failed": 0, + "skipped": 0, + "failures": [] + }, + { + "file": "migrated-tables.spec.ts", + "passed": 6, + "failed": 0, + "skipped": 0, + "failures": [] + }, + { + "file": "navigation.spec.ts", + "passed": 4, + "failed": 0, + "skipped": 0, + "failures": [] + }, + { + "file": "netflow-responsive.spec.ts", + "passed": 3, + "failed": 0, + "skipped": 0, + "failures": [] + }, + { + "file": "netflow-settings.spec.ts", + "passed": 17, + "failed": 0, + "skipped": 0, + "failures": [] + }, + { + "file": "network-filters-table.spec.ts", + "passed": 1, + "failed": 0, + "skipped": 0, + "failures": [] + }, + { + "file": "network-map-data.spec.ts", + "passed": 12, + "failed": 0, + "skipped": 0, + "failures": [] + }, + { + "file": "network-map-detail.spec.ts", + "passed": 4, + "failed": 0, + "skipped": 0, + "failures": [] + }, + { + "file": "network-map-flow.spec.ts", + "passed": 8, + "failed": 0, + "skipped": 0, + "failures": [] + }, + { + "file": "network-map-layout.spec.ts", + "passed": 8, + "failed": 0, + "skipped": 0, + "failures": [] + }, + { + "file": "network-map-url.spec.ts", + "passed": 7, + "failed": 0, + "skipped": 0, + "failures": [] + }, + { + "file": "ospf-data.spec.ts", + "passed": 7, + "failed": 0, + "skipped": 0, + "failures": [] + }, + { + "file": "ospf-freshness.spec.ts", + "passed": 1, + "failed": 0, + "skipped": 0, + "failures": [] + }, + { + "file": "ospf-identity.spec.ts", + "passed": 1, + "failed": 0, + "skipped": 0, + "failures": [] + }, + { + "file": "ospf-interface-values.spec.ts", + "passed": 3, + "failed": 0, + "skipped": 0, + "failures": [] + }, + { + "file": "ospf-layout.spec.ts", + "passed": 3, + "failed": 0, + "skipped": 0, + "failures": [] + }, + { + "file": "ospf-links.spec.ts", + "passed": 10, + "failed": 0, + "skipped": 0, + "failures": [] + }, + { + "file": "ospf-operations.spec.ts", + "passed": 6, + "failed": 0, + "skipped": 0, + "failures": [] + }, + { + "file": "ospf-states.spec.ts", + "passed": 1, + "failed": 0, + "skipped": 0, + "failures": [] + }, + { + "file": "ospf-values.spec.ts", + "passed": 1, + "failed": 0, + "skipped": 0, + "failures": [] + }, + { + "file": "page-header.spec.ts", + "passed": 4, + "failed": 0, + "skipped": 0, + "failures": [] + }, + { + "file": "probes-data.spec.ts", + "passed": 31, + "failed": 0, + "skipped": 0, + "failures": [] + }, + { + "file": "probes-layout.spec.ts", + "passed": 5, + "failed": 0, + "skipped": 0, + "failures": [] + }, + { + "file": "probes-schedule.spec.ts", + "passed": 8, + "failed": 0, + "skipped": 0, + "failures": [] + }, + { + "file": "probes-source.spec.ts", + "passed": 7, + "failed": 0, + "skipped": 0, + "failures": [] + }, + { + "file": "recursive-routes-data.spec.ts", + "passed": 15, + "failed": 0, + "skipped": 0, + "failures": [] + }, + { + "file": "recursive-routes-layout.spec.ts", + "passed": 3, + "failed": 0, + "skipped": 0, + "failures": [] + }, + { + "file": "recursive-routes-links.spec.ts", + "passed": 11, + "failed": 0, + "skipped": 0, + "failures": [] + }, + { + "file": "recursive-routes-table.spec.ts", + "passed": 1, + "failed": 0, + "skipped": 0, + "failures": [] + }, + { + "file": "recursive-routes-values.spec.ts", + "passed": 3, + "failed": 0, + "skipped": 0, + "failures": [] + }, + { + "file": "releases-layout.spec.ts", + "passed": 3, + "failed": 0, + "skipped": 0, + "failures": [] + }, + { + "file": "route-optimizer-data.spec.ts", + "passed": 10, + "failed": 0, + "skipped": 0, + "failures": [] + }, + { + "file": "route-optimizer-layout.spec.ts", + "passed": 4, + "failed": 0, + "skipped": 0, + "failures": [] + }, + { + "file": "route-optimizer-observed.spec.ts", + "passed": 4, + "failed": 0, + "skipped": 0, + "failures": [] + }, + { + "file": "route-optimizer-ospf-apply.spec.ts", + "passed": 8, + "failed": 0, + "skipped": 0, + "failures": [] + }, + { + "file": "route-optimizer-ospf-preview.spec.ts", + "passed": 14, + "failed": 0, + "skipped": 0, + "failures": [] + }, + { + "file": "route-optimizer-tables.spec.ts", + "passed": 5, + "failed": 0, + "skipped": 0, + "failures": [] + }, + { + "file": "route-optimizer-trust.spec.ts", + "passed": 2, + "failed": 0, + "skipped": 0, + "failures": [] + }, + { + "file": "routing-tables.spec.ts", + "passed": 10, + "failed": 0, + "skipped": 0, + "failures": [] + }, + { + "file": "servers.spec.ts", + "passed": 35, + "failed": 0, + "skipped": 0, + "failures": [] + }, + { + "file": "settings-general.spec.ts", + "passed": 8, + "failed": 0, + "skipped": 0, + "failures": [] + }, + { + "file": "sidebar-counts.spec.ts", + "passed": 5, + "failed": 0, + "skipped": 0, + "failures": [] + }, + { + "file": "statistics-data.spec.ts", + "passed": 15, + "failed": 0, + "skipped": 0, + "failures": [] + }, + { + "file": "system-database-form.spec.ts", + "passed": 8, + "failed": 0, + "skipped": 0, + "failures": [] + }, + { + "file": "system-database-receipt.spec.ts", + "passed": 2, + "failed": 0, + "skipped": 0, + "failures": [] + }, + { + "file": "terminal-data.spec.ts", + "passed": 17, + "failed": 0, + "skipped": 0, + "failures": [] + }, + { + "file": "terminal-layout.spec.ts", + "passed": 3, + "failed": 0, + "skipped": 0, + "failures": [] + }, + { + "file": "traffic-details.spec.ts", + "passed": 10, + "failed": 0, + "skipped": 0, + "failures": [] + }, + { + "file": "traffic-flow.spec.ts", + "passed": 27, + "failed": 0, + "skipped": 0, + "failures": [] + }, + { + "file": "traffic-list.spec.ts", + "passed": 2, + "failed": 0, + "skipped": 0, + "failures": [] + }, + { + "file": "traffic-live.spec.ts", + "passed": 5, + "failed": 0, + "skipped": 0, + "failures": [] + }, + { + "file": "traffic-mobile.spec.ts", + "passed": 6, + "failed": 0, + "skipped": 0, + "failures": [] + }, + { + "file": "uptime-links.spec.ts", + "passed": 59, + "failed": 0, + "skipped": 0, + "failures": [] + }, + { + "file": "uptime-speed-data.spec.ts", + "passed": 6, + "failed": 0, + "skipped": 0, + "failures": [] + }, + { + "file": "users-catalog.spec.ts", + "passed": 17, + "failed": 0, + "skipped": 0, + "failures": [] + }, + { + "file": "users-data.spec.ts", + "passed": 12, + "failed": 0, + "skipped": 0, + "failures": [] + }, + { + "file": "users-layout.spec.ts", + "passed": 4, + "failed": 0, + "skipped": 0, + "failures": [] + }, + { + "file": "users-operations.spec.ts", + "passed": 15, + "failed": 0, + "skipped": 0, + "failures": [] + }, + { + "file": "vpn-inventory.spec.ts", + "passed": 4, + "failed": 0, + "skipped": 0, + "failures": [] + }, + { + "file": "vxlan-freshness.spec.ts", + "passed": 1, + "failed": 0, + "skipped": 0, + "failures": [] + }, + { + "file": "vxlan-links.spec.ts", + "passed": 15, + "failed": 0, + "skipped": 0, + "failures": [] + }, + { + "file": "vxlan-table.spec.ts", + "passed": 1, + "failed": 0, + "skipped": 0, + "failures": [] + }, + { + "file": "wireguard-links.spec.ts", + "passed": 25, + "failed": 0, + "skipped": 0, + "failures": [] + }, + { + "file": "wireguard-tables.spec.ts", + "passed": 2, + "failed": 0, + "skipped": 0, + "failures": [] + } + ], + "limitations": [ + "Mocked HTTP and local browser checks; no real PostgreSQL/RouterOS acceptance", + "Remaining network grids, Ping catalog write hardening and WireGuard zero counters are not accepted by this report" + ] +}