diff --git a/docs/ux-ui-plan.md b/docs/ux-ui-plan.md index 1a57fbb5..f8978814 100644 --- a/docs/ux-ui-plan.md +++ b/docs/ux-ui-plan.md @@ -1,6 +1,6 @@ # План реализации UX/UI по пятичасовым окнам -Актуальное продолжение 2026-10-07: 12.3.76 завершён;12.4.8 main1176 идёт на579e816.12.5.0: подготовлен docs/ux-ui-external-acceptance.md, внешние сценарии не выполнены. После main разобрать ошибки/сохранить evidence, затем12.4.9 context. Stage12 не завершён. +Актуальное продолжение 2026-10-07: 12.4.8 main1176/1176 passed на579e816,34.9min;12.5.0 protocol подготовлен. Следующий12.3.77: привязка speed-пробы к паре устройств и атомарная запись snapshot/history; затем12.4.9 context. Stage12 не завершён, внешняя12.5 не выполнена. Общий план проекта MikrotikManager. Основан на согласованном плане из задачи; точка продолжения обновлена 2026-10-04. Источник фактического прогресса, проверок и ограничений — [журнал реализации](ux-ui-progress.md). Этот документ задаёт объём и критерии завершения, журнал фиксирует результат. diff --git a/docs/ux-ui-progress.md b/docs/ux-ui-progress.md index 6a80261b..9bef5b0a 100644 --- a/docs/ux-ui-progress.md +++ b/docs/ux-ui-progress.md @@ -1,6 +1,6 @@ # UX/UI: журнал реализации -Актуальное продолжение 2026-10-07: 12.3.76 завершён;12.4.8 main1176 идёт на579e816.12.5.0: подготовлен docs/ux-ui-external-acceptance.md, внешние сценарии не выполнены. После main разобрать ошибки/сохранить evidence, затем12.4.9 context. Stage12 не завершён. +Актуальное продолжение 2026-10-07: 12.4.8 main1176/1176 passed на579e816,34.9min;12.5.0 protocol подготовлен. Следующий12.3.77: привязка speed-пробы к паре устройств и атомарная запись snapshot/history; затем12.4.9 context. Stage12 не завершён, внешняя12.5 не выполнена. Общий план: [UX/UI по этапам и пятичасовым окнам](ux-ui-plan.md). План задаёт объём, этот журнал фиксирует выполненные блоки и ограничения. diff --git a/docs/ux-ui-stage-12.md b/docs/ux-ui-stage-12.md index f19c6cb7..dc42080a 100644 --- a/docs/ux-ui-stage-12.md +++ b/docs/ux-ui-stage-12.md @@ -853,3 +853,10 @@ CPU final:1000routes13.3ms;100000(10×100×100)49.7ms;100000(100×10×100)44.0ms Source review: stopScheduler очищает таймеры, stopTrafficFlowListener запускает flush без ожидания, поэтому эти вызовы не считаются доказательством завершения всех writers. PG-6 и остановка senders остаются предметом реальной проверки, не закрываются checkbox/timeout. Протокол не добавляет команды к сетевым операциям и не объявляет реализованными отсутствующие BGP-prefix evaluator/live GRE schedule/processing recovery. 12.4.8 main1176 продолжает выполняться на runtime source HEAD579e816. Этот блок меняет только docs; исходники/конфигурация тестов не изменились после старта. Дальше завершить main, сохранить результат и запустить12.4.9context.12.5 не принята. + + +## 12.4.8 — общая main регрессия после исправлений оптимизатора/скорости + +2026-10-07. Runtime HEAD579e816:1176/1176passed,0unexpected/skipped/flaky,34.9min. Edge/1worker/retries0/maxFailures12. После старта добавлен только внешний протокол docs5fedf7a; runtime diff579e816→current проверен пустым. [Итог main](ux-ui/acceptance/main-final-2026-10-07.json) записан отдельно от исторического12.4.6. Сырой JSON сохранён в tmp/ux-main-final-20261007.json. Исторические PNG, перегенерированные тестами, восстановлены по проверенному списку tmp/ux-main-regenerated-screens-20261007.json. Чужие skill/AGENTS/config/cache изменения не включены. + +Этот общий прогон содержит новые large pool/site captions, direction/scope/nullable POST и6mobile geometry cases. Старый terminal focus race в этом прогоне не повторился. Source review дополнительно нашёл обновление speed probe только по id без endpoint ownership; snapshot update и run insert были отдельными операциями. Следующий небольшой12.3.77 защищает привязку пары и атомарность этих двух записей, без смены RouterOS команд; затем12.4.9 полныйcontext. Внешняя12.5 отдельно. diff --git a/docs/ux-ui/acceptance/main-final-2026-10-07.json b/docs/ux-ui/acceptance/main-final-2026-10-07.json new file mode 100644 index 00000000..f40ea06e --- /dev/null +++ b/docs/ux-ui/acceptance/main-final-2026-10-07.json @@ -0,0 +1,1371 @@ +{ + "head": "579e816bbb9360814c93d7d415621ab3653ffa15", + "config": "playwright.config.ts", + "browser": "msedge", + "workers": 1, + "retries": 0, + "maxFailures": 12, + "source": "tmp/ux-main-final-20261007.json", + "stats": { + "startTime": "2026-10-07T07:28:09.074Z", + "duration": 2093970.356, + "expected": 1176, + "skipped": 0, + "unexpected": 0, + "flaky": 0 + }, + "errors": [], + "files": [ + { + "file": "accessibility-shell.spec.ts", + "passed": 20, + "failed": 0, + "skipped": 0, + "flaky": 0 + }, + { + "file": "admin-tables.spec.ts", + "passed": 4, + "failed": 0, + "skipped": 0, + "flaky": 0 + }, + { + "file": "alerts-history.spec.ts", + "passed": 1, + "failed": 0, + "skipped": 0, + "flaky": 0 + }, + { + "file": "alerts-layout.spec.ts", + "passed": 3, + "failed": 0, + "skipped": 0, + "flaky": 0 + }, + { + "file": "alerts-outbox.spec.ts", + "passed": 7, + "failed": 0, + "skipped": 0, + "flaky": 0 + }, + { + "file": "alerts-pickers.spec.ts", + "passed": 2, + "failed": 0, + "skipped": 0, + "flaky": 0 + }, + { + "file": "alerts-prefix.spec.ts", + "passed": 1, + "failed": 0, + "skipped": 0, + "flaky": 0 + }, + { + "file": "alerts-preview.spec.ts", + "passed": 3, + "failed": 0, + "skipped": 0, + "flaky": 0 + }, + { + "file": "alerts-reader.spec.ts", + "passed": 3, + "failed": 0, + "skipped": 0, + "flaky": 0 + }, + { + "file": "alerts-rules.spec.ts", + "passed": 9, + "failed": 0, + "skipped": 0, + "flaky": 0 + }, + { + "file": "alerts-targets.spec.ts", + "passed": 4, + "failed": 0, + "skipped": 0, + "flaky": 0 + }, + { + "file": "alerts-telegram.spec.ts", + "passed": 10, + "failed": 0, + "skipped": 0, + "flaky": 0 + }, + { + "file": "backups-data.spec.ts", + "passed": 12, + "failed": 0, + "skipped": 0, + "flaky": 0 + }, + { + "file": "backups-dialog-layout.spec.ts", + "passed": 3, + "failed": 0, + "skipped": 0, + "flaky": 0 + }, + { + "file": "backups-job.spec.ts", + "passed": 9, + "failed": 0, + "skipped": 0, + "flaky": 0 + }, + { + "file": "backups-layout.spec.ts", + "passed": 3, + "failed": 0, + "skipped": 0, + "flaky": 0 + }, + { + "file": "backups-operations.spec.ts", + "passed": 12, + "failed": 0, + "skipped": 0, + "flaky": 0 + }, + { + "file": "backups-settings.spec.ts", + "passed": 9, + "failed": 0, + "skipped": 0, + "flaky": 0 + }, + { + "file": "backups-states-layout.spec.ts", + "passed": 9, + "failed": 0, + "skipped": 0, + "flaky": 0 + }, + { + "file": "backups-storage.spec.ts", + "passed": 7, + "failed": 0, + "skipped": 0, + "flaky": 0 + }, + { + "file": "backups-url.spec.ts", + "passed": 5, + "failed": 0, + "skipped": 0, + "flaky": 0 + }, + { + "file": "bgp-data.spec.ts", + "passed": 13, + "failed": 0, + "skipped": 0, + "flaky": 0 + }, + { + "file": "bgp-layout.spec.ts", + "passed": 2, + "failed": 0, + "skipped": 0, + "flaky": 0 + }, + { + "file": "bgp-links-freshness.spec.ts", + "passed": 2, + "failed": 0, + "skipped": 0, + "flaky": 0 + }, + { + "file": "certificates-acme.spec.ts", + "passed": 10, + "failed": 0, + "skipped": 0, + "flaky": 0 + }, + { + "file": "certificates-data.spec.ts", + "passed": 12, + "failed": 0, + "skipped": 0, + "flaky": 0 + }, + { + "file": "certificates-issue.spec.ts", + "passed": 7, + "failed": 0, + "skipped": 0, + "flaky": 0 + }, + { + "file": "certificates-layout.spec.ts", + "passed": 3, + "failed": 0, + "skipped": 0, + "flaky": 0 + }, + { + "file": "certificates-renew.spec.ts", + "passed": 10, + "failed": 0, + "skipped": 0, + "flaky": 0 + }, + { + "file": "certificates-url.spec.ts", + "passed": 6, + "failed": 0, + "skipped": 0, + "flaky": 0 + }, + { + "file": "collector-probes-tables.spec.ts", + "passed": 7, + "failed": 0, + "skipped": 0, + "flaky": 0 + }, + { + "file": "communities-copy.spec.ts", + "passed": 4, + "failed": 0, + "skipped": 0, + "flaky": 0 + }, + { + "file": "config-history.spec.ts", + "passed": 11, + "failed": 0, + "skipped": 0, + "flaky": 0 + }, + { + "file": "containers-data.spec.ts", + "passed": 14, + "failed": 0, + "skipped": 0, + "flaky": 0 + }, + { + "file": "containers-layout.spec.ts", + "passed": 4, + "failed": 0, + "skipped": 0, + "flaky": 0 + }, + { + "file": "containers-operations.spec.ts", + "passed": 12, + "failed": 0, + "skipped": 0, + "flaky": 0 + }, + { + "file": "containers-url.spec.ts", + "passed": 10, + "failed": 0, + "skipped": 0, + "flaky": 0 + }, + { + "file": "dashboard-data.spec.ts", + "passed": 61, + "failed": 0, + "skipped": 0, + "flaky": 0 + }, + { + "file": "dashboard-permissions.spec.ts", + "passed": 2, + "failed": 0, + "skipped": 0, + "flaky": 0 + }, + { + "file": "data-collection-geoip.spec.ts", + "passed": 2, + "failed": 0, + "skipped": 0, + "flaky": 0 + }, + { + "file": "data-collection-history.spec.ts", + "passed": 5, + "failed": 0, + "skipped": 0, + "flaky": 0 + }, + { + "file": "data-collection-operations.spec.ts", + "passed": 10, + "failed": 0, + "skipped": 0, + "flaky": 0 + }, + { + "file": "data-collection-race.spec.ts", + "passed": 2, + "failed": 0, + "skipped": 0, + "flaky": 0 + }, + { + "file": "data-collection-responsive.spec.ts", + "passed": 3, + "failed": 0, + "skipped": 0, + "flaky": 0 + }, + { + "file": "data-collection-settings.spec.ts", + "passed": 16, + "failed": 0, + "skipped": 0, + "flaky": 0 + }, + { + "file": "data-collection-snapshot.spec.ts", + "passed": 4, + "failed": 0, + "skipped": 0, + "flaky": 0 + }, + { + "file": "data-collection-status.spec.ts", + "passed": 4, + "failed": 0, + "skipped": 0, + "flaky": 0 + }, + { + "file": "evobgp-catalog-error.spec.ts", + "passed": 1, + "failed": 0, + "skipped": 0, + "flaky": 0 + }, + { + "file": "evobgp-consumers.spec.ts", + "passed": 18, + "failed": 0, + "skipped": 0, + "flaky": 0 + }, + { + "file": "evobgp-counts.spec.ts", + "passed": 1, + "failed": 0, + "skipped": 0, + "flaky": 0 + }, + { + "file": "evobgp-form.spec.ts", + "passed": 7, + "failed": 0, + "skipped": 0, + "flaky": 0 + }, + { + "file": "evobgp-provider.spec.ts", + "passed": 8, + "failed": 0, + "skipped": 0, + "flaky": 0 + }, + { + "file": "evobgp-responsive.spec.ts", + "passed": 3, + "failed": 0, + "skipped": 0, + "flaky": 0 + }, + { + "file": "evobgp-test-receipt.spec.ts", + "passed": 1, + "failed": 0, + "skipped": 0, + "flaky": 0 + }, + { + "file": "filters-copy-target.spec.ts", + "passed": 2, + "failed": 0, + "skipped": 0, + "flaky": 0 + }, + { + "file": "filters-copy.spec.ts", + "passed": 2, + "failed": 0, + "skipped": 0, + "flaky": 0 + }, + { + "file": "filters-data.spec.ts", + "passed": 5, + "failed": 0, + "skipped": 0, + "flaky": 0 + }, + { + "file": "filters-delete.spec.ts", + "passed": 2, + "failed": 0, + "skipped": 0, + "flaky": 0 + }, + { + "file": "filters-freshness.spec.ts", + "passed": 1, + "failed": 0, + "skipped": 0, + "flaky": 0 + }, + { + "file": "filters-gateways.spec.ts", + "passed": 2, + "failed": 0, + "skipped": 0, + "flaky": 0 + }, + { + "file": "filters-history-lock.spec.ts", + "passed": 4, + "failed": 0, + "skipped": 0, + "flaky": 0 + }, + { + "file": "filters-layout.spec.ts", + "passed": 2, + "failed": 0, + "skipped": 0, + "flaky": 0 + }, + { + "file": "filters-move.spec.ts", + "passed": 2, + "failed": 0, + "skipped": 0, + "flaky": 0 + }, + { + "file": "filters-read-race.spec.ts", + "passed": 2, + "failed": 0, + "skipped": 0, + "flaky": 0 + }, + { + "file": "filters-save.spec.ts", + "passed": 2, + "failed": 0, + "skipped": 0, + "flaky": 0 + }, + { + "file": "firewall-address-toggle.spec.ts", + "passed": 2, + "failed": 0, + "skipped": 0, + "flaky": 0 + }, + { + "file": "firewall-data.spec.ts", + "passed": 8, + "failed": 0, + "skipped": 0, + "flaky": 0 + }, + { + "file": "firewall-delete.spec.ts", + "passed": 4, + "failed": 0, + "skipped": 0, + "flaky": 0 + }, + { + "file": "firewall-draft-reset.spec.ts", + "passed": 3, + "failed": 0, + "skipped": 0, + "flaky": 0 + }, + { + "file": "firewall-freshness.spec.ts", + "passed": 2, + "failed": 0, + "skipped": 0, + "flaky": 0 + }, + { + "file": "firewall-history-lock.spec.ts", + "passed": 1, + "failed": 0, + "skipped": 0, + "flaky": 0 + }, + { + "file": "firewall-move.spec.ts", + "passed": 2, + "failed": 0, + "skipped": 0, + "flaky": 0 + }, + { + "file": "firewall-partial.spec.ts", + "passed": 3, + "failed": 0, + "skipped": 0, + "flaky": 0 + }, + { + "file": "firewall-save.spec.ts", + "passed": 8, + "failed": 0, + "skipped": 0, + "flaky": 0 + }, + { + "file": "firewall-stale.spec.ts", + "passed": 2, + "failed": 0, + "skipped": 0, + "flaky": 0 + }, + { + "file": "firewall-tables.spec.ts", + "passed": 5, + "failed": 0, + "skipped": 0, + "flaky": 0 + }, + { + "file": "firewall-toggle.spec.ts", + "passed": 2, + "failed": 0, + "skipped": 0, + "flaky": 0 + }, + { + "file": "geoip-responsive.spec.ts", + "passed": 3, + "failed": 0, + "skipped": 0, + "flaky": 0 + }, + { + "file": "geoip-settings.spec.ts", + "passed": 10, + "failed": 0, + "skipped": 0, + "flaky": 0 + }, + { + "file": "gre-data.spec.ts", + "passed": 8, + "failed": 0, + "skipped": 0, + "flaky": 0 + }, + { + "file": "gre-delete.spec.ts", + "passed": 1, + "failed": 0, + "skipped": 0, + "flaky": 0 + }, + { + "file": "gre-form.spec.ts", + "passed": 3, + "failed": 0, + "skipped": 0, + "flaky": 0 + }, + { + "file": "gre-freshness.spec.ts", + "passed": 1, + "failed": 0, + "skipped": 0, + "flaky": 0 + }, + { + "file": "gre-links.spec.ts", + "passed": 8, + "failed": 0, + "skipped": 0, + "flaky": 0 + }, + { + "file": "gre-pools.spec.ts", + "passed": 1, + "failed": 0, + "skipped": 0, + "flaky": 0 + }, + { + "file": "gre-psk.spec.ts", + "passed": 2, + "failed": 0, + "skipped": 0, + "flaky": 0 + }, + { + "file": "gre-readiness.spec.ts", + "passed": 2, + "failed": 0, + "skipped": 0, + "flaky": 0 + }, + { + "file": "gre-toggle.spec.ts", + "passed": 2, + "failed": 0, + "skipped": 0, + "flaky": 0 + }, + { + "file": "gre-vxlan-layout.spec.ts", + "passed": 4, + "failed": 0, + "skipped": 0, + "flaky": 0 + }, + { + "file": "ipsec-cert.spec.ts", + "passed": 2, + "failed": 0, + "skipped": 0, + "flaky": 0 + }, + { + "file": "ipsec-data.spec.ts", + "passed": 9, + "failed": 0, + "skipped": 0, + "flaky": 0 + }, + { + "file": "ipsec-delete.spec.ts", + "passed": 4, + "failed": 0, + "skipped": 0, + "flaky": 0 + }, + { + "file": "ipsec-freshness.spec.ts", + "passed": 1, + "failed": 0, + "skipped": 0, + "flaky": 0 + }, + { + "file": "ipsec-gre-tables.spec.ts", + "passed": 3, + "failed": 0, + "skipped": 0, + "flaky": 0 + }, + { + "file": "ipsec-init.spec.ts", + "passed": 1, + "failed": 0, + "skipped": 0, + "flaky": 0 + }, + { + "file": "ipsec-layout.spec.ts", + "passed": 2, + "failed": 0, + "skipped": 0, + "flaky": 0 + }, + { + "file": "ipsec-operation-lock.spec.ts", + "passed": 1, + "failed": 0, + "skipped": 0, + "flaky": 0 + }, + { + "file": "ipsec-peer.spec.ts", + "passed": 1, + "failed": 0, + "skipped": 0, + "flaky": 0 + }, + { + "file": "ipsec-readiness.spec.ts", + "passed": 1, + "failed": 0, + "skipped": 0, + "flaky": 0 + }, + { + "file": "ipsec-user.spec.ts", + "passed": 3, + "failed": 0, + "skipped": 0, + "flaky": 0 + }, + { + "file": "large-backups.spec.ts", + "passed": 1, + "failed": 0, + "skipped": 0, + "flaky": 0 + }, + { + "file": "large-bgp.spec.ts", + "passed": 1, + "failed": 0, + "skipped": 0, + "flaky": 0 + }, + { + "file": "large-certificates.spec.ts", + "passed": 1, + "failed": 0, + "skipped": 0, + "flaky": 0 + }, + { + "file": "large-communities.spec.ts", + "passed": 1, + "failed": 0, + "skipped": 0, + "flaky": 0 + }, + { + "file": "large-filters.spec.ts", + "passed": 1, + "failed": 0, + "skipped": 0, + "flaky": 0 + }, + { + "file": "large-firewall-scenario.spec.ts", + "passed": 1, + "failed": 0, + "skipped": 0, + "flaky": 0 + }, + { + "file": "large-firewall.spec.ts", + "passed": 1, + "failed": 0, + "skipped": 0, + "flaky": 0 + }, + { + "file": "large-gre.spec.ts", + "passed": 1, + "failed": 0, + "skipped": 0, + "flaky": 0 + }, + { + "file": "large-optimizer-community.spec.ts", + "passed": 1, + "failed": 0, + "skipped": 0, + "flaky": 0 + }, + { + "file": "large-optimizer-homes.spec.ts", + "passed": 1, + "failed": 0, + "skipped": 0, + "flaky": 0 + }, + { + "file": "large-optimizer-ospf-preview.spec.ts", + "passed": 1, + "failed": 0, + "skipped": 0, + "flaky": 0 + }, + { + "file": "large-optimizer-probes.spec.ts", + "passed": 2, + "failed": 0, + "skipped": 0, + "flaky": 0 + }, + { + "file": "large-optimizer-routes.spec.ts", + "passed": 1, + "failed": 0, + "skipped": 0, + "flaky": 0 + }, + { + "file": "large-optimizer-wan-matrix.spec.ts", + "passed": 2, + "failed": 0, + "skipped": 0, + "flaky": 0 + }, + { + "file": "large-ospf-bfd.spec.ts", + "passed": 1, + "failed": 0, + "skipped": 0, + "flaky": 0 + }, + { + "file": "large-ospf-neighbors.spec.ts", + "passed": 4, + "failed": 0, + "skipped": 0, + "flaky": 0 + }, + { + "file": "large-ospf-routes.spec.ts", + "passed": 1, + "failed": 0, + "skipped": 0, + "flaky": 0 + }, + { + "file": "large-recursive-form.spec.ts", + "passed": 1, + "failed": 0, + "skipped": 0, + "flaky": 0 + }, + { + "file": "large-recursive-routes.spec.ts", + "passed": 2, + "failed": 0, + "skipped": 0, + "flaky": 0 + }, + { + "file": "large-servers.spec.ts", + "passed": 1, + "failed": 0, + "skipped": 0, + "flaky": 0 + }, + { + "file": "large-speed-history.spec.ts", + "passed": 1, + "failed": 0, + "skipped": 0, + "flaky": 0 + }, + { + "file": "large-statistics-pivot.spec.ts", + "passed": 2, + "failed": 0, + "skipped": 0, + "flaky": 0 + }, + { + "file": "large-statistics.spec.ts", + "passed": 1, + "failed": 0, + "skipped": 0, + "flaky": 0 + }, + { + "file": "large-uptime-resources.spec.ts", + "passed": 1, + "failed": 0, + "skipped": 0, + "flaky": 0 + }, + { + "file": "large-users.spec.ts", + "passed": 1, + "failed": 0, + "skipped": 0, + "flaky": 0 + }, + { + "file": "large-vxlan.spec.ts", + "passed": 1, + "failed": 0, + "skipped": 0, + "flaky": 0 + }, + { + "file": "large-wireguard-interfaces.spec.ts", + "passed": 1, + "failed": 0, + "skipped": 0, + "flaky": 0 + }, + { + "file": "large-wireguard-peers.spec.ts", + "passed": 2, + "failed": 0, + "skipped": 0, + "flaky": 0 + }, + { + "file": "migrated-tables.spec.ts", + "passed": 6, + "failed": 0, + "skipped": 0, + "flaky": 0 + }, + { + "file": "navigation.spec.ts", + "passed": 4, + "failed": 0, + "skipped": 0, + "flaky": 0 + }, + { + "file": "netflow-responsive.spec.ts", + "passed": 3, + "failed": 0, + "skipped": 0, + "flaky": 0 + }, + { + "file": "netflow-settings.spec.ts", + "passed": 17, + "failed": 0, + "skipped": 0, + "flaky": 0 + }, + { + "file": "network-filters-table.spec.ts", + "passed": 1, + "failed": 0, + "skipped": 0, + "flaky": 0 + }, + { + "file": "network-map-data.spec.ts", + "passed": 12, + "failed": 0, + "skipped": 0, + "flaky": 0 + }, + { + "file": "network-map-detail.spec.ts", + "passed": 4, + "failed": 0, + "skipped": 0, + "flaky": 0 + }, + { + "file": "network-map-flow.spec.ts", + "passed": 8, + "failed": 0, + "skipped": 0, + "flaky": 0 + }, + { + "file": "network-map-layout.spec.ts", + "passed": 8, + "failed": 0, + "skipped": 0, + "flaky": 0 + }, + { + "file": "network-map-url.spec.ts", + "passed": 7, + "failed": 0, + "skipped": 0, + "flaky": 0 + }, + { + "file": "optimizer-matrix-geometry.spec.ts", + "passed": 6, + "failed": 0, + "skipped": 0, + "flaky": 0 + }, + { + "file": "optimizer-site-summary.spec.ts", + "passed": 2, + "failed": 0, + "skipped": 0, + "flaky": 0 + }, + { + "file": "ospf-data.spec.ts", + "passed": 7, + "failed": 0, + "skipped": 0, + "flaky": 0 + }, + { + "file": "ospf-freshness.spec.ts", + "passed": 1, + "failed": 0, + "skipped": 0, + "flaky": 0 + }, + { + "file": "ospf-identity.spec.ts", + "passed": 1, + "failed": 0, + "skipped": 0, + "flaky": 0 + }, + { + "file": "ospf-interface-values.spec.ts", + "passed": 3, + "failed": 0, + "skipped": 0, + "flaky": 0 + }, + { + "file": "ospf-layout.spec.ts", + "passed": 3, + "failed": 0, + "skipped": 0, + "flaky": 0 + }, + { + "file": "ospf-links.spec.ts", + "passed": 10, + "failed": 0, + "skipped": 0, + "flaky": 0 + }, + { + "file": "ospf-operations.spec.ts", + "passed": 6, + "failed": 0, + "skipped": 0, + "flaky": 0 + }, + { + "file": "ospf-states.spec.ts", + "passed": 1, + "failed": 0, + "skipped": 0, + "flaky": 0 + }, + { + "file": "ospf-values.spec.ts", + "passed": 1, + "failed": 0, + "skipped": 0, + "flaky": 0 + }, + { + "file": "page-header.spec.ts", + "passed": 4, + "failed": 0, + "skipped": 0, + "flaky": 0 + }, + { + "file": "probes-data.spec.ts", + "passed": 31, + "failed": 0, + "skipped": 0, + "flaky": 0 + }, + { + "file": "probes-layout.spec.ts", + "passed": 5, + "failed": 0, + "skipped": 0, + "flaky": 0 + }, + { + "file": "probes-schedule.spec.ts", + "passed": 8, + "failed": 0, + "skipped": 0, + "flaky": 0 + }, + { + "file": "probes-source.spec.ts", + "passed": 7, + "failed": 0, + "skipped": 0, + "flaky": 0 + }, + { + "file": "recursive-routes-data.spec.ts", + "passed": 15, + "failed": 0, + "skipped": 0, + "flaky": 0 + }, + { + "file": "recursive-routes-layout.spec.ts", + "passed": 3, + "failed": 0, + "skipped": 0, + "flaky": 0 + }, + { + "file": "recursive-routes-links.spec.ts", + "passed": 11, + "failed": 0, + "skipped": 0, + "flaky": 0 + }, + { + "file": "recursive-routes-table.spec.ts", + "passed": 1, + "failed": 0, + "skipped": 0, + "flaky": 0 + }, + { + "file": "recursive-routes-values.spec.ts", + "passed": 3, + "failed": 0, + "skipped": 0, + "flaky": 0 + }, + { + "file": "releases-layout.spec.ts", + "passed": 3, + "failed": 0, + "skipped": 0, + "flaky": 0 + }, + { + "file": "route-optimizer-data.spec.ts", + "passed": 10, + "failed": 0, + "skipped": 0, + "flaky": 0 + }, + { + "file": "route-optimizer-layout.spec.ts", + "passed": 4, + "failed": 0, + "skipped": 0, + "flaky": 0 + }, + { + "file": "route-optimizer-observed.spec.ts", + "passed": 6, + "failed": 0, + "skipped": 0, + "flaky": 0 + }, + { + "file": "route-optimizer-ospf-apply.spec.ts", + "passed": 8, + "failed": 0, + "skipped": 0, + "flaky": 0 + }, + { + "file": "route-optimizer-ospf-preview.spec.ts", + "passed": 15, + "failed": 0, + "skipped": 0, + "flaky": 0 + }, + { + "file": "route-optimizer-tables.spec.ts", + "passed": 6, + "failed": 0, + "skipped": 0, + "flaky": 0 + }, + { + "file": "route-optimizer-trust.spec.ts", + "passed": 2, + "failed": 0, + "skipped": 0, + "flaky": 0 + }, + { + "file": "routing-tables.spec.ts", + "passed": 10, + "failed": 0, + "skipped": 0, + "flaky": 0 + }, + { + "file": "servers.spec.ts", + "passed": 35, + "failed": 0, + "skipped": 0, + "flaky": 0 + }, + { + "file": "settings-general.spec.ts", + "passed": 8, + "failed": 0, + "skipped": 0, + "flaky": 0 + }, + { + "file": "sidebar-counts.spec.ts", + "passed": 5, + "failed": 0, + "skipped": 0, + "flaky": 0 + }, + { + "file": "statistics-data.spec.ts", + "passed": 15, + "failed": 0, + "skipped": 0, + "flaky": 0 + }, + { + "file": "system-database-form.spec.ts", + "passed": 8, + "failed": 0, + "skipped": 0, + "flaky": 0 + }, + { + "file": "system-database-receipt.spec.ts", + "passed": 2, + "failed": 0, + "skipped": 0, + "flaky": 0 + }, + { + "file": "terminal-data.spec.ts", + "passed": 17, + "failed": 0, + "skipped": 0, + "flaky": 0 + }, + { + "file": "terminal-layout.spec.ts", + "passed": 3, + "failed": 0, + "skipped": 0, + "flaky": 0 + }, + { + "file": "traffic-details.spec.ts", + "passed": 10, + "failed": 0, + "skipped": 0, + "flaky": 0 + }, + { + "file": "traffic-flow.spec.ts", + "passed": 28, + "failed": 0, + "skipped": 0, + "flaky": 0 + }, + { + "file": "traffic-list.spec.ts", + "passed": 2, + "failed": 0, + "skipped": 0, + "flaky": 0 + }, + { + "file": "traffic-live.spec.ts", + "passed": 5, + "failed": 0, + "skipped": 0, + "flaky": 0 + }, + { + "file": "traffic-mobile.spec.ts", + "passed": 6, + "failed": 0, + "skipped": 0, + "flaky": 0 + }, + { + "file": "uptime-links.spec.ts", + "passed": 64, + "failed": 0, + "skipped": 0, + "flaky": 0 + }, + { + "file": "uptime-speed-data.spec.ts", + "passed": 6, + "failed": 0, + "skipped": 0, + "flaky": 0 + }, + { + "file": "users-catalog.spec.ts", + "passed": 17, + "failed": 0, + "skipped": 0, + "flaky": 0 + }, + { + "file": "users-data.spec.ts", + "passed": 12, + "failed": 0, + "skipped": 0, + "flaky": 0 + }, + { + "file": "users-layout.spec.ts", + "passed": 4, + "failed": 0, + "skipped": 0, + "flaky": 0 + }, + { + "file": "users-operations.spec.ts", + "passed": 15, + "failed": 0, + "skipped": 0, + "flaky": 0 + }, + { + "file": "vpn-inventory.spec.ts", + "passed": 4, + "failed": 0, + "skipped": 0, + "flaky": 0 + }, + { + "file": "vxlan-freshness.spec.ts", + "passed": 1, + "failed": 0, + "skipped": 0, + "flaky": 0 + }, + { + "file": "vxlan-links.spec.ts", + "passed": 15, + "failed": 0, + "skipped": 0, + "flaky": 0 + }, + { + "file": "vxlan-table.spec.ts", + "passed": 1, + "failed": 0, + "skipped": 0, + "flaky": 0 + }, + { + "file": "wireguard-links.spec.ts", + "passed": 37, + "failed": 0, + "skipped": 0, + "flaky": 0 + }, + { + "file": "wireguard-tables.spec.ts", + "passed": 5, + "failed": 0, + "skipped": 0, + "flaky": 0 + } + ] +} \ No newline at end of file