From 55df77296ac8589c4298d86aae068883a5a24279 Mon Sep 17 00:00:00 2001 From: Denozordec Date: Sun, 4 Oct 2026 23:12:35 +0700 Subject: [PATCH] =?UTF-8?q?chore(ux):=20=D1=81=D0=BE=D1=85=D1=80=D0=B0?= =?UTF-8?q?=D0=BD=D0=B8=D1=82=D1=8C=20=D0=BE=D0=B1=D1=89=D1=83=D1=8E=20?= =?UTF-8?q?=D1=80=D0=B5=D0=B3=D1=80=D0=B5=D1=81=D1=81=D0=B8=D1=8E=20=D0=B8?= =?UTF-8?q?=20=D1=81=D0=B1=D0=BE=D0=B9=20=D1=84=D0=BE=D0=BA=D1=83=D1=81?= =?UTF-8?q?=D0=B0=20=D1=82=D0=B5=D1=80=D0=BC=D0=B8=D0=BD=D0=B0=D0=BB=D0=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docs/ux-ui-plan.md | 4 +- docs/ux-ui-progress.md | 4 +- docs/ux-ui-stage-12.md | 7 + .../acceptance/main-delta-2026-10-04.json | 1356 +++++++++++++++++ 4 files changed, 1367 insertions(+), 4 deletions(-) create mode 100644 docs/ux-ui/acceptance/main-delta-2026-10-04.json diff --git a/docs/ux-ui-plan.md b/docs/ux-ui-plan.md index 4be8d604..decb80e0 100644 --- a/docs/ux-ui-plan.md +++ b/docs/ux-ui-plan.md @@ -1,12 +1,12 @@ # План реализации UX/UI по пятичасовым окнам -Актуальное продолжение 2026-10-04: 12.3.63 завершён: полный Community-каталог без скрытого среза24, pages50/search/sort/pin/cache/clamp/320px/axe. Следующий12.4.6: общий main прогон текущего HEAD, затем12.4.7 context. Внешняя12.5 остаётся. +Актуальное продолжение 2026-10-04: 12.4.6 main на991f2b3 завершён:1161/1162 passed, один focus race терминала. Следующий12.4.6.1: восстановить фокус после React commit и повторить terminal tests; затем12.4.7 общий context. 12.5 и большие текстовые сводки WAN остаются. Общий план проекта MikrotikManager. Основан на согласованном плане из задачи; точка продолжения обновлена 2026-10-04. Источник фактического прогресса, проверок и ограничений — [журнал реализации](ux-ui-progress.md). Этот документ задаёт объём и критерии завершения, журнал фиксирует результат. ## Актуальная точка продолжения — 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 принят локально:main1110/171 прошли на21859be. 12.3.26 принят локально:strict atomic Ping write/подтверждение каталога и сохранения/история удаления/62 browser/context11/DI6/builds. 12.3.27 принят локально:WireGuard zero/missing counters/UI/backend mapper/29 browser/unit/builds. 12.3.28 принят локально:WireGuard interfaces1000/50 DOM/pinning/actions/cache/29+1 browser/build. 12.3.29 принят локально:WG peers1000/50 DOM/pinning/точный delete target/29+3 browser/build. 12.3.30 принят локально:WG detail1000/50 DOM/320px/клавиатура/31+1 browser/build. 12.3.31 принят локально:WG handshake без ложного online/unknown/7+1 browser/build. 12.3.32 принят локально:WG URL search/tab/status/reload/история/34+4 browser/unit/build. 12.3.33 принят локально:WG strict read/cache/freshness/unknown/40+7 browser/context8/build. 12.3.34 принят локально:VXLAN1000/50 DOM/pinning/export/22 browser/build. 12.3.35 принят локально:GRE1000/50 DOM/pinning/20+1 browser/build. 12.3.36 карта15 оставшихся источников обновлена. 12.3.37 top50 traffic/пустой локальный фильтр/перенос tabs принят в описанных границах. 12.3.38 Communities1000/50 DOM/19 browser/build принят локально. 12.3.39 clipboard ack/error/retry/unmount/5 browser/build принят локально. 12.3.40 recursive groups/endpoints1000/50 DOM/35 browser/build принят локально. 12.3.41 большая форма1000×1000/10 cards/полный PUT/22+1 browser/build принята локально. 12.3.42 Filters1000/50 DOM/полный PUT/10+1 browser/build принят локально. 12.3.43 Firewall1000/50 DOM/DnD/35+1 main/context4/build принят локально. 12.3.44 stale guard/29+2 main/context4/build принят локально;4 исходных lint errors страницы требуют cleanup. 12.3.45 сценарий1000/50 DOM/полный draft/verdict/6 browser/build принят локально. 12.3.46 trace999/50 steps/1293 nodes/epoch/6+1 browser/build принят локально. 12.3.47 Firewall forms/URL/focus/26 main/context4/lint/build принят локально; исходные lint errors устранены. 12.3.48 OSPF baseline32635 nodes/14012 SVG сохранён, performance и читаемость не приняты. 12.3.49 neighbors pages50/22 browser/build приняты локально, полный граф не принят. Следующие12.3.50 topology срез/KPI и12.3.51 node details; затем optimizer и полная main/context регрессия.12.5 отдельно. См. docs/ux-ui-stage-12.md. Внешние ограничения 11Б сохраняются. +Этапы0–11 завершены в описанных локальных границах. Этап12 продолжается: доступность12.1, достоверность12.2.1–12.2.10 и профили12.3.1–12.3.63 записаны в журнале. Последняя общая main регрессия12.4.6 на991f2b3:1161 из1162 passed,1 focus race терминала; требуется профильное исправление и новая context матрица12.4.7. Полный источник данных сохраняется, большие DOM ограничены страницами/окнами. Внешняя12.5 и реальные интеграции не приняты. Подробная история и точные ограничения: docs/ux-ui-stage-12.md. Реальные 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 b02dde56..771bd476 100644 --- a/docs/ux-ui-progress.md +++ b/docs/ux-ui-progress.md @@ -1,6 +1,6 @@ # UX/UI: журнал реализации -Актуальное продолжение 2026-10-04: 12.3.63 завершён: полный Community-каталог без скрытого среза24, pages50/search/sort/pin/cache/clamp/320px/axe. Следующий12.4.6: общий main прогон текущего HEAD, затем12.4.7 context. Внешняя12.5 остаётся. +Актуальное продолжение 2026-10-04: 12.4.6 main на991f2b3 завершён:1161/1162 passed, один focus race терминала. Следующий12.4.6.1: восстановить фокус после React commit и повторить terminal tests; затем12.4.7 общий context. 12.5 и большие текстовые сводки WAN остаются. Общий план: [UX/UI по этапам и пятичасовым окнам](ux-ui-plan.md). План задаёт объём, этот журнал фиксирует выполненные блоки и ограничения. @@ -31,7 +31,7 @@ | 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.25 приняты локально в описанных границах;12.4.4 context213 и12.4.5 main1110 прошли, 12.3.26–12.3.33 приняты локально; 12.3.34 VXLAN и12.3.35 GRE tunnels приняты; остаются network grids/общая регрессия после delta/внешняя приёмка | +| 12 | Итоговая доступность, адаптивность, производительность и регрессия | В работе;12.1/12.2.1–12.2.10 и12.3.1–12.3.63 приняты в описанных локальных границах.12.4.6 main1161/1162 выявил focus race терминала; исправление и общая context матрица впереди.12.5 внешняя приёмка не выполнена. | ## 12.3.49 — большая таблица соседей OSPF (2026-10-04) diff --git a/docs/ux-ui-stage-12.md b/docs/ux-ui-stage-12.md index 32c3e67a..76dd678b 100644 --- a/docs/ux-ui-stage-12.md +++ b/docs/ux-ui-stage-12.md @@ -708,3 +708,10 @@ WAN1000×JH1:1000→50rows,28019→1419tableDOM,28712→2149pageDOM,2264ms dev-r 1000source→50 rendered/1024tableDOM/1751pageDOM/1851ms dev-ready; раньше24 rendered соответствовали24 в модели,976 правил терялись. Проверены page20 и правило1000/search/unknown indices безExit/no simulation buttons/refresh/clamp1/320px/pinned column/axe.7 main browser,8 pure tests (1200 assignment fixtures и новый1000 ownership/unknown), TypeScript, targeted lint и production build прошли. Снимок docs/ux-ui/screens/optimizer-community-320.png просмотрен. Осталось5manualPagination:true: scheduler11 fixedkeys, live GRE pools пусты/demo ограничен fixtures, probes schedule толькоdemo, subusers не подключён, trafficflows серверныйtop50 принят с честным указанием среза. Не мигрировать искусственно недостижимые live каталоги. Дальше12.4.6/12.4.7 — повтор общей main/context матрицы после delta. Внешняя12.5 не выполнена. + + +## 12.4.6 — общая main регрессия после больших каталогов + +2026-10-04, HEAD991f2b3.1162 сценария/190 файлов:1161passed,1unexpected,0skipped/0flaky за55.2min. Edge/1worker/retries0/maxFailures12. Единственный сбой terminal-data: поле не получило focus после успешного повтора BFD error. Вероятная гонка requestAnimationFrame с React commit/re-enable. Общая матрица НЕ объявляется полностью пройденной. Доказательство docs/ux-ui/acceptance/main-delta-2026-10-04.json; trace/error сохранены в tmp перед следующими тестами. Перегенерированные этим прогоном исторические PNG восстановлены по явному списку tmp/ux-main-regenerated-screens.json; собственные новые матричные/Community screenshots сохранены. + +Все новые большие профили, Firewall/OSPF/optimizer сценарии вошли в этот общий прогон. Статический аудит дополнительно выявил полный join1000WAN в шапке HomeCard и полные site-строки JH/Exit в KPI: число DOM nodes не измеряет высоту текстовых сводок. Следующий12.4.6.1 — фокус после commit и профильный repeat; затем12.4.7 context. Внешняя12.5 отдельно. diff --git a/docs/ux-ui/acceptance/main-delta-2026-10-04.json b/docs/ux-ui/acceptance/main-delta-2026-10-04.json new file mode 100644 index 00000000..21a51d9c --- /dev/null +++ b/docs/ux-ui/acceptance/main-delta-2026-10-04.json @@ -0,0 +1,1356 @@ +{ + "head": "991f2b38711fa07cc8d3c6e82fa55f731b3aa698", + "config": "playwright.config.ts", + "browser": "msedge", + "workers": 1, + "retries": 0, + "maxFailures": 12, + "source": "tmp/ux-main-delta-20261004.json", + "stats": { + "startTime": "2026-10-04T15:15:48.286Z", + "duration": 3310156.1969999997, + "expected": 1161, + "skipped": 0, + "unexpected": 1, + "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": "communities-copy.spec.ts", + "passed": 4, + "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-draft-reset.spec.ts", + "passed": 3, + "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-stale.spec.ts", + "passed": 2, + "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-communities.spec.ts", + "passed": 1, + "failed": 0, + "skipped": 0, + "failures": [] + }, + { + "file": "large-filters.spec.ts", + "passed": 1, + "failed": 0, + "skipped": 0, + "failures": [] + }, + { + "file": "large-firewall-scenario.spec.ts", + "passed": 1, + "failed": 0, + "skipped": 0, + "failures": [] + }, + { + "file": "large-firewall.spec.ts", + "passed": 1, + "failed": 0, + "skipped": 0, + "failures": [] + }, + { + "file": "large-gre.spec.ts", + "passed": 1, + "failed": 0, + "skipped": 0, + "failures": [] + }, + { + "file": "large-optimizer-community.spec.ts", + "passed": 1, + "failed": 0, + "skipped": 0, + "failures": [] + }, + { + "file": "large-optimizer-homes.spec.ts", + "passed": 1, + "failed": 0, + "skipped": 0, + "failures": [] + }, + { + "file": "large-optimizer-ospf-preview.spec.ts", + "passed": 1, + "failed": 0, + "skipped": 0, + "failures": [] + }, + { + "file": "large-optimizer-routes.spec.ts", + "passed": 1, + "failed": 0, + "skipped": 0, + "failures": [] + }, + { + "file": "large-optimizer-wan-matrix.spec.ts", + "passed": 2, + "failed": 0, + "skipped": 0, + "failures": [] + }, + { + "file": "large-ospf-bfd.spec.ts", + "passed": 1, + "failed": 0, + "skipped": 0, + "failures": [] + }, + { + "file": "large-ospf-neighbors.spec.ts", + "passed": 4, + "failed": 0, + "skipped": 0, + "failures": [] + }, + { + "file": "large-ospf-routes.spec.ts", + "passed": 1, + "failed": 0, + "skipped": 0, + "failures": [] + }, + { + "file": "large-recursive-form.spec.ts", + "passed": 1, + "failed": 0, + "skipped": 0, + "failures": [] + }, + { + "file": "large-recursive-routes.spec.ts", + "passed": 2, + "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": "large-vxlan.spec.ts", + "passed": 1, + "failed": 0, + "skipped": 0, + "failures": [] + }, + { + "file": "large-wireguard-interfaces.spec.ts", + "passed": 1, + "failed": 0, + "skipped": 0, + "failures": [] + }, + { + "file": "large-wireguard-peers.spec.ts", + "passed": 2, + "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": 15, + "failed": 0, + "skipped": 0, + "failures": [] + }, + { + "file": "route-optimizer-tables.spec.ts", + "passed": 6, + "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": 16, + "failed": 1, + "skipped": 0, + "failures": [ + { + "title": "Терминал: отказ сохраняет команду {\"json\":{\"output\":\"error: BFD недоступен\"}}", + "status": "unexpected", + "error": "Error: expect(locator).toBeFocused() failed\n\nLocator: getByRole('textbox', { name: /^Команда ·/ })\nExpected: focused\nReceived: inactive\nTimeout: 5000ms\n\nCall log:\n - Expect \"toBeFocused\" getByRole('textbox', { name: /^Команда ·/ }) with timeout 5000ms\n - waiting for getByRole('textbox', { name: /^Команда ·/ })\n 14 × locator resolved to \n - unexpected value \"inactive\"\n" + } + ] + }, + { + "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": 28, + "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": 62, + "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": 37, + "failed": 0, + "skipped": 0, + "failures": [] + }, + { + "file": "wireguard-tables.spec.ts", + "passed": 5, + "failed": 0, + "skipped": 0, + "failures": [] + } + ] +}