From b9000b16e4282da074e79e689a29a040bc197f22 Mon Sep 17 00:00:00 2001 From: Denozordec Date: Tue, 13 Oct 2026 16:50:12 +0700 Subject: [PATCH] =?UTF-8?q?fix(ui):=20=D1=83=D0=BB=D1=83=D1=87=D1=88=D0=B8?= =?UTF-8?q?=D1=82=D1=8C=20=D0=BA=D0=BE=D0=BD=D1=82=D1=80=D0=B0=D1=81=D1=82?= =?UTF-8?q?=20=D1=82=D1=80=D0=B0=D1=84=D0=B8=D0=BA=D0=B0=20=D0=B8=20=D0=BF?= =?UTF-8?q?=D1=80=D0=B5=D0=B4=D1=83=D0=BF=D1=80=D0=B5=D0=B6=D0=B4=D0=B5?= =?UTF-8?q?=D0=BD=D0=B8=D0=B9=20=D1=86=D0=B5=D0=BB=D0=B5=D0=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/(main)/traffic/page.tsx | 12 +- components/alerts-target-issues.tsx | 2 +- docs/ux-ui-external-acceptance.md | 16 +- docs/ux-ui-plan.md | 6 +- docs/ux-ui-progress.md | 14 +- docs/ux-ui-remaining-acceptance.md | 20 +- docs/ux-ui-stage-12.md | 14 +- docs/ux-ui-test-server.md | 16 +- .../accessibility205-baseline-2026-10-13.json | 278 ++++++++++++++++++ ...ccessibility205-deployment-2026-10-13.json | 12 + .../accessibility205-e2e-2026-10-13.json | 14 + .../accessibility205-live-2026-10-13.json | 125 ++++++++ 12 files changed, 509 insertions(+), 20 deletions(-) create mode 100644 docs/ux-ui/acceptance/accessibility205-baseline-2026-10-13.json create mode 100644 docs/ux-ui/acceptance/accessibility205-deployment-2026-10-13.json create mode 100644 docs/ux-ui/acceptance/accessibility205-e2e-2026-10-13.json create mode 100644 docs/ux-ui/acceptance/accessibility205-live-2026-10-13.json diff --git a/app/(main)/traffic/page.tsx b/app/(main)/traffic/page.tsx index dd50b29c..aa6fef19 100644 --- a/app/(main)/traffic/page.tsx +++ b/app/(main)/traffic/page.tsx @@ -377,11 +377,11 @@ function ServerCard({ s, selected, onClick }: { s: ServerTraffic; selected: bool
- {fmtRate(s.rxNow)} + {fmtRate(s.rxNow)}
- {fmtRate(s.txNow)} + {fmtRate(s.txNow)}
{s.boundIfaces.length > 0 && (
@@ -421,11 +421,11 @@ function UserCard({ u, selected, onClick }: { u: UserTraffic; selected: boolean;
- {fmtRate(u.rxNow)} + {fmtRate(u.rxNow)}
- {fmtRate(u.txNow)} + {fmtRate(u.txNow)}
@@ -459,11 +459,11 @@ function IfaceCard({ c, selected, onClick }: { c: BoundIfaceTraffic; selected: b
- {fmtRate(c.rxNow)} + {fmtRate(c.rxNow)}
- {fmtRate(c.txNow)} + {fmtRate(c.txNow)}
diff --git a/components/alerts-target-issues.tsx b/components/alerts-target-issues.tsx index 422a4d75..d8575873 100644 --- a/components/alerts-target-issues.tsx +++ b/components/alerts-target-issues.tsx @@ -1,7 +1,7 @@ import Link from "next/link" import { TriangleAlertIcon } from "lucide-react" import type { AlertTargetIssue } from "@mmapp/contracts/alerts" -import { Alert, AlertTitle, AlertDescription } from "@/components/ui/alert" +import { Alert, AlertTitle, AlertDescription } from "@/components/reui/alert" const kinds = { server: "Доступность сервера", traffic: "Трафик", probe: "Ping-проба" } const reasons = { diff --git a/docs/ux-ui-external-acceptance.md b/docs/ux-ui-external-acceptance.md index 5d3ae171..d9d4a4a0 100644 --- a/docs/ux-ui-external-acceptance.md +++ b/docs/ux-ui-external-acceptance.md @@ -1,6 +1,6 @@ # UX/UI: протокол внешней приёмки 12.5 -Актуальное продолжение 2026-10-13:204 live navigation52 (13 разделов×reader/admin×1440/320), профильный API200, route/header/overflow/errors passed, mutation requests0.203 populated secrets9 passed,201 whole Telegram accepted,200 collector fixed/deployed. Runtime backend ux-lock200/frontend ux-portal199. Следующий205 — live WCAG-tagged audit основных data sections вlight/dark на ПК/телефоне.12.5 открыта. +Актуальное продолжение 2026-10-13:205 исправил light contrast RX/TX и warning целей через установленный ReUI Alert; TypeScript/ESLint/25 E2E и12 actual WCAG-tagged audits passed. Frontend ux-accessibility205/backend ux-lock200.200–204 приняты в записанных границах, Telegram201 подтверждён пользователем. Следующий206 — live keyboard/focus Dialog/Sheet/menus без применения операций.12.5 открыта. IPsec78: реальный PSK responder established, mode-config198.18.78.10 и online=true подтверждены API; точные собственные объекты удалены. Сертификатный/DN online, late failure и history restore остаются открытыми. [Отчёт](ux-ui/acceptance/ipsec-mode-config-2026-10-09.json), [журнал](ux-ui-progress.md). @@ -696,7 +696,7 @@ flowchart LR ## 12.5.77 — основной блок IPsec (2026-10-09) -Актуальное продолжение 2026-10-13:204 live navigation52 (13 разделов×reader/admin×1440/320), профильный API200, route/header/overflow/errors passed, mutation requests0.203 populated secrets9 passed,201 whole Telegram accepted,200 collector fixed/deployed. Runtime backend ux-lock200/frontend ux-portal199. Следующий205 — live WCAG-tagged audit основных data sections вlight/dark на ПК/телефоне.12.5 открыта. +Актуальное продолжение 2026-10-13:205 исправил light contrast RX/TX и warning целей через установленный ReUI Alert; TypeScript/ESLint/25 E2E и12 actual WCAG-tagged audits passed. Frontend ux-accessibility205/backend ux-lock200.200–204 приняты в записанных границах, Telegram201 подтверждён пользователем. Следующий206 — live keyboard/focus Dialog/Sheet/menus без применения операций.12.5 открыта. Подробный объём, протоколы, схема и ограничения: [12.5.77 в журнале](ux-ui-progress.md). @@ -2480,3 +2480,15 @@ Actual Portal1.3.1 issued admin/own reader JWT, deployed frontend ux-portal199/b Первый диагностический обход проверял любой shared GET200 и был недостаточен для подтверждения data fetch; финальный52 усилен specific endpoint ожиданием. Counts не складываются. API/Portal ответы не mock, JWT storage seed использует реально выданный token. Своя reader fixture удалена204. Tunnel/form actions не выполнялись и новые native объекты не создавались; обычные GET могут опрашивать RouterOS. Это проверка navigation/session/section API/адаптивности после общих auth changes, не полная приёмка каждой формы/native state или throughput. Протокол: [live navigation52](ux-ui/acceptance/section204-live-navigation-2026-10-13.json). Source/runtime не менялись. Следующий205: scoped automated WCAG-tagged audit data sections(light/dark,ПК/телефон) на реальном приложении; не считать его полным WCAG сертификатом.12.5 открыта. + +## 12.5.205 — контраст живых данных и предупреждения целей (2026-10-13) + +Actual admin Portal JWT, без API mocks: traffic/alerts/backups ×light/dark×1440/320, axe-core4.11.3 tags WCAG2A/AA,2.1A/AA,2.2AA вmain-content иосновной навигации. Baseline выявил4 failing combinations: light traffic RX/TX2.07–3.76:1 иlight alerts warning4.32:1 при требовании4.5:1. Dark иbackup passed. Baseline сохранён, не переписан successful result. + +В app traffic6 numeric spans RX/TX теперь используют semantic text-foreground; стрелки/графики/форматеры сохранены. AlertsTargetIssues переиспользует установленный ReUI Alert вместоlegacy UI Alert, предупреждениеvariant warning/role status исуществующее содержимое сохранены. Vendor/shared theme не менялись. API прочитан через ReUI MCP: [docs](https://reui.io/docs/components/base/alert?ref=mcp), [preview](https://reui.io/components/alert?ref=mcp). Замечание axe ксерой кнопке «Обновить» перепроверено после actual enabled state: initial snapshot был вtransition загрузки. Стили кнопки не менялись, финальный тест ждёт завершения загрузки данных, ане исключает contrast rule. + +TypeScript/scoped ESLint passed;25 unique E2E34060ms,0unexpected/skips (target warning +shell accessibility/keyboard/layers).4 clean shell screenshots восстановленыпослетеста,8 исходных dirty GRE/VXLAN скриншотов сохранены. Production build/source527 matched, frontend ux-accessibility205 развёрнут, backend ux-lock200/Portal/AUTH_REQUIRED сохранены. Повторный actual tagged audit12/12 безviolations, includinglight numbers/warning. Incomplete checks сохраняются вprotocol, не объявлены passed WCAG критериями. Это default visible admin states, не полный WCAG сертификат, manual keyboard audit всехforms или reader dialogs. + +Протоколы: [baseline](ux-ui/acceptance/accessibility205-baseline-2026-10-13.json), [fixture E2E25](ux-ui/acceptance/accessibility205-e2e-2026-10-13.json), [live audit12](ux-ui/acceptance/accessibility205-live-2026-10-13.json), [deployment](ux-ui/acceptance/accessibility205-deployment-2026-10-13.json). + +Следующий206: actual live keyboard/focus для общихmenus итиповых Dialog/Sheet, ПК/телефон/роли, безapply/native mutation.200 collector loss реагирует только наobserved errors/end (неfencing);201 whole Telegram accepted, initial197 cause unproven.12.5 остаётся открытой из-за остальныхграниц внешней матрицы. diff --git a/docs/ux-ui-plan.md b/docs/ux-ui-plan.md index b2d5b531..50e4886c 100644 --- a/docs/ux-ui-plan.md +++ b/docs/ux-ui-plan.md @@ -1,12 +1,12 @@ # План реализации UX/UI по пятичасовым окнам -Актуальное продолжение 2026-10-13:204 live navigation52 (13 разделов×reader/admin×1440/320), профильный API200, route/header/overflow/errors passed, mutation requests0.203 populated secrets9 passed,201 whole Telegram accepted,200 collector fixed/deployed. Runtime backend ux-lock200/frontend ux-portal199. Следующий205 — live WCAG-tagged audit основных data sections вlight/dark на ПК/телефоне.12.5 открыта. +Актуальное продолжение 2026-10-13:205 исправил light contrast RX/TX и warning целей через установленный ReUI Alert; TypeScript/ESLint/25 E2E и12 actual WCAG-tagged audits passed. Frontend ux-accessibility205/backend ux-lock200.200–204 приняты в записанных границах, Telegram201 подтверждён пользователем. Следующий206 — live keyboard/focus Dialog/Sheet/menus без применения операций.12.5 открыта. Общий план проекта MikrotikManager. Основан на согласованном плане из задачи; точка продолжения обновлена 2026-10-13. Источник фактического прогресса, проверок и ограничений — [журнал реализации](ux-ui-progress.md). Этот документ задаёт объём и критерии завершения, журнал фиксирует результат. ## Актуальная точка продолжения — 2026-10-13 -Актуальное продолжение 2026-10-13:204 live navigation52 (13 разделов×reader/admin×1440/320), профильный API200, route/header/overflow/errors passed, mutation requests0.203 populated secrets9 passed,201 whole Telegram accepted,200 collector fixed/deployed. Runtime backend ux-lock200/frontend ux-portal199. Следующий205 — live WCAG-tagged audit основных data sections вlight/dark на ПК/телефоне.12.5 открыта. +Актуальное продолжение 2026-10-13:205 исправил light contrast RX/TX и warning целей через установленный ReUI Alert; TypeScript/ESLint/25 E2E и12 actual WCAG-tagged audits passed. Frontend ux-accessibility205/backend ux-lock200.200–204 приняты в записанных границах, Telegram201 подтверждён пользователем. Следующий206 — live keyboard/focus Dialog/Sheet/menus без применения операций.12.5 открыта. Этапы0–11 завершены в локальных границах журнала. История выполненных внешних блоков и доказательства сохранены в [журнале](ux-ui-stage-12.md) и [протоколе](ux-ui-external-acceptance.md). Реальная Telegram доставка, Portal SSO, multi-instance и оставшиеся профильные сетевые ограничения открыты. @@ -371,6 +371,6 @@ flowchart LR ## 12.5.77 — основной блок IPsec (2026-10-09) -Актуальное продолжение 2026-10-13:204 live navigation52 (13 разделов×reader/admin×1440/320), профильный API200, route/header/overflow/errors passed, mutation requests0.203 populated secrets9 passed,201 whole Telegram accepted,200 collector fixed/deployed. Runtime backend ux-lock200/frontend ux-portal199. Следующий205 — live WCAG-tagged audit основных data sections вlight/dark на ПК/телефоне.12.5 открыта. +Актуальное продолжение 2026-10-13:205 исправил light contrast RX/TX и warning целей через установленный ReUI Alert; TypeScript/ESLint/25 E2E и12 actual WCAG-tagged audits passed. Frontend ux-accessibility205/backend ux-lock200.200–204 приняты в записанных границах, Telegram201 подтверждён пользователем. Следующий206 — live keyboard/focus Dialog/Sheet/menus без применения операций.12.5 открыта. Подробный объём, протоколы, схема и ограничения: [12.5.77 в журнале](ux-ui-progress.md). diff --git a/docs/ux-ui-progress.md b/docs/ux-ui-progress.md index 28607922..4ed5c26c 100644 --- a/docs/ux-ui-progress.md +++ b/docs/ux-ui-progress.md @@ -1,6 +1,6 @@ # UX/UI: журнал реализации -Актуальное продолжение 2026-10-13:204 live navigation52 (13 разделов×reader/admin×1440/320), профильный API200, route/header/overflow/errors passed, mutation requests0.203 populated secrets9 passed,201 whole Telegram accepted,200 collector fixed/deployed. Runtime backend ux-lock200/frontend ux-portal199. Следующий205 — live WCAG-tagged audit основных data sections вlight/dark на ПК/телефоне.12.5 открыта. +Актуальное продолжение 2026-10-13:205 исправил light contrast RX/TX и warning целей через установленный ReUI Alert; TypeScript/ESLint/25 E2E и12 actual WCAG-tagged audits passed. Frontend ux-accessibility205/backend ux-lock200.200–204 приняты в записанных границах, Telegram201 подтверждён пользователем. Следующий206 — live keyboard/focus Dialog/Sheet/menus без применения операций.12.5 открыта. Общий план: [UX/UI по этапам и пятичасовым окнам](ux-ui-plan.md). План задаёт объём, этот журнал фиксирует выполненные блоки и ограничения. Записи расположены от новых к старым; подробная история этапа12 также сохранена в [ux-ui-stage-12.md](ux-ui-stage-12.md). @@ -38,6 +38,18 @@ | 11Б | Оповещения, сбор данных, интеграции, релизы и настройки | Завершён в границах локальной приёмки 2026-10-03; ограничения и evidence в11Б.7 | | 12 | Итоговая доступность, адаптивность, производительность и регрессия | Локальная приёмка завершена в границах12.3.83; внешняя12.5 в работе, выполненные блоки1–196 и ограничения ниже. Runtime backend/frontend ux-peak196. | +## 12.5.205 — контраст живых данных и предупреждения целей (2026-10-13) + +Actual admin Portal JWT, без API mocks: traffic/alerts/backups ×light/dark×1440/320, axe-core4.11.3 tags WCAG2A/AA,2.1A/AA,2.2AA вmain-content иосновной навигации. Baseline выявил4 failing combinations: light traffic RX/TX2.07–3.76:1 иlight alerts warning4.32:1 при требовании4.5:1. Dark иbackup passed. Baseline сохранён, не переписан successful result. + +В app traffic6 numeric spans RX/TX теперь используют semantic text-foreground; стрелки/графики/форматеры сохранены. AlertsTargetIssues переиспользует установленный ReUI Alert вместоlegacy UI Alert, предупреждениеvariant warning/role status исуществующее содержимое сохранены. Vendor/shared theme не менялись. API прочитан через ReUI MCP: [docs](https://reui.io/docs/components/base/alert?ref=mcp), [preview](https://reui.io/components/alert?ref=mcp). Замечание axe ксерой кнопке «Обновить» перепроверено после actual enabled state: initial snapshot был вtransition загрузки. Стили кнопки не менялись, финальный тест ждёт завершения загрузки данных, ане исключает contrast rule. + +TypeScript/scoped ESLint passed;25 unique E2E34060ms,0unexpected/skips (target warning +shell accessibility/keyboard/layers).4 clean shell screenshots восстановленыпослетеста,8 исходных dirty GRE/VXLAN скриншотов сохранены. Production build/source527 matched, frontend ux-accessibility205 развёрнут, backend ux-lock200/Portal/AUTH_REQUIRED сохранены. Повторный actual tagged audit12/12 безviolations, includinglight numbers/warning. Incomplete checks сохраняются вprotocol, не объявлены passed WCAG критериями. Это default visible admin states, не полный WCAG сертификат, manual keyboard audit всехforms или reader dialogs. + +Протоколы: [baseline](ux-ui/acceptance/accessibility205-baseline-2026-10-13.json), [fixture E2E25](ux-ui/acceptance/accessibility205-e2e-2026-10-13.json), [live audit12](ux-ui/acceptance/accessibility205-live-2026-10-13.json), [deployment](ux-ui/acceptance/accessibility205-deployment-2026-10-13.json). + +Следующий206: actual live keyboard/focus для общихmenus итиповых Dialog/Sheet, ПК/телефон/роли, безapply/native mutation.200 collector loss реагирует только наobserved errors/end (неfencing);201 whole Telegram accepted, initial197 cause unproven.12.5 остаётся открытой из-за остальныхграниц внешней матрицы. + ## 12.5.204 — навигация основных разделов с реальными ролями (2026-10-13) Actual Portal1.3.1 issued admin/own reader JWT, deployed frontend ux-portal199/backend ux-lock200.13 разделов: dashboard, servers, uptime, traffic, statistics, WireGuard, IPsec, GRE, VXLAN, BGP, OSPF, alerts, backups ×reader/admin×1440/320 =52 scoped live сценария. Перед проверкой каждого маршрута дождались HTTP200 его профильного API (dashboard использует servers read gate), а не только общего header/auth config. Сохранены успешные пути API и non200 ответов нет. Reader server Add disabled/admin enabled; fragment отсутствует, JavaScript errors0, overflow нет, mutation requests0. diff --git a/docs/ux-ui-remaining-acceptance.md b/docs/ux-ui-remaining-acceptance.md index 0a2daa56..3a4f5385 100644 --- a/docs/ux-ui-remaining-acceptance.md +++ b/docs/ux-ui-remaining-acceptance.md @@ -1,10 +1,10 @@ # Оставшаяся внешняя приёмка — 2026-10-13 -Актуальное продолжение 2026-10-13:204 live navigation52 (13 разделов×reader/admin×1440/320), профильный API200, route/header/overflow/errors passed, mutation requests0.203 populated secrets9 passed,201 whole Telegram accepted,200 collector fixed/deployed. Runtime backend ux-lock200/frontend ux-portal199. Следующий205 — live WCAG-tagged audit основных data sections вlight/dark на ПК/телефоне.12.5 открыта. +Актуальное продолжение 2026-10-13:205 исправил light contrast RX/TX и warning целей через установленный ReUI Alert; TypeScript/ESLint/25 E2E и12 actual WCAG-tagged audits passed. Frontend ux-accessibility205/backend ux-lock200.200–204 приняты в записанных границах, Telegram201 подтверждён пользователем. Следующий206 — live keyboard/focus Dialog/Sheet/menus без применения операций.12.5 открыта. -Это актуальная матрица после 12.5.204. Исторические записи сохраняют версии и ограничения на момент выполнения; поздние проверки ниже уточняют их. Этап 12.5 открыт. Успех в двух CHR и одном backend не означает приёмку всех конфигураций, интеграций или полной регрессии. +Это актуальная матрица после 12.5.205. Исторические записи сохраняют версии и ограничения на момент выполнения; поздние проверки ниже уточняют их. Этап 12.5 открыт. Успех в двух CHR и одном backend не означает приёмку всех конфигураций, интеграций или полной регрессии. -Стенд: Debian13/Compose, PostgreSQL18.6, два CHR RouterOS7.24.5. Backend `ux-lock200`, frontend `ux-portal199`; production lab с195 использует AUTH_REQUIRED=true и Portal1.3.1. Подписанные JWT/RBAC проверялись в изолированных процессах. Все собственные объекты112 удалены, исходные13 коллекций×2 (включая logging/certificates/files/routes) проверены; пароли не менялись. +Стенд: Debian13/Compose, PostgreSQL18.6, два CHR RouterOS7.24.5. Backend `ux-lock200`, frontend `ux-accessibility205`; production lab с195 использует AUTH_REQUIRED=true и Portal1.3.1. Подписанные JWT/RBAC проверялись в изолированных процессах. Все собственные объекты112 удалены, исходные13 коллекций×2 (включая logging/certificates/files/routes) проверены; пароли не менялись. | Раздел | Подтверждено | Осталось / условие завершения | | --- | --- | --- | @@ -26,7 +26,7 @@ ## Следующая последовательность — 2026-10-13 -1. **205 — live accessibility:** automated WCAG-tagged audit основных data sections вlight/dark,ПК/телефон. Scope/report ограничить DOM, не объявлять full WCAG/native regression. +1. **206 — live keyboard/focus:** общиеmenus итиповые Dialog/Sheet,ПК/телефон/роли, безapply/native mutation.205 tagged audit12 принят, не full WCAG certification. 2. **Профильный контроль:** для новых изменений выполнять затронутые SQL/API/UI проверки. Общая регрессия192 выполнена; не повторять её без изменений общей основы или нового основания. 3. **Внешние зависимости:** Portal issuer/login/revoke, Telegram bot/chat/разрешённое сообщение, клиентские ОС, независимые WAN/public IPv6 и scale/multi-instance — отдельные группы по таблице выше. Ограничения текущего стенда не превращать в обещание приёмки всех конфигураций. @@ -1396,3 +1396,15 @@ Actual Portal1.3.1 issued admin/own reader JWT, deployed frontend ux-portal199/b Первый диагностический обход проверял любой shared GET200 и был недостаточен для подтверждения data fetch; финальный52 усилен specific endpoint ожиданием. Counts не складываются. API/Portal ответы не mock, JWT storage seed использует реально выданный token. Своя reader fixture удалена204. Tunnel/form actions не выполнялись и новые native объекты не создавались; обычные GET могут опрашивать RouterOS. Это проверка navigation/session/section API/адаптивности после общих auth changes, не полная приёмка каждой формы/native state или throughput. Протокол: [live navigation52](ux-ui/acceptance/section204-live-navigation-2026-10-13.json). Source/runtime не менялись. Следующий205: scoped automated WCAG-tagged audit data sections(light/dark,ПК/телефон) на реальном приложении; не считать его полным WCAG сертификатом.12.5 открыта. + +## 12.5.205 — контраст живых данных и предупреждения целей (2026-10-13) + +Actual admin Portal JWT, без API mocks: traffic/alerts/backups ×light/dark×1440/320, axe-core4.11.3 tags WCAG2A/AA,2.1A/AA,2.2AA вmain-content иосновной навигации. Baseline выявил4 failing combinations: light traffic RX/TX2.07–3.76:1 иlight alerts warning4.32:1 при требовании4.5:1. Dark иbackup passed. Baseline сохранён, не переписан successful result. + +В app traffic6 numeric spans RX/TX теперь используют semantic text-foreground; стрелки/графики/форматеры сохранены. AlertsTargetIssues переиспользует установленный ReUI Alert вместоlegacy UI Alert, предупреждениеvariant warning/role status исуществующее содержимое сохранены. Vendor/shared theme не менялись. API прочитан через ReUI MCP: [docs](https://reui.io/docs/components/base/alert?ref=mcp), [preview](https://reui.io/components/alert?ref=mcp). Замечание axe ксерой кнопке «Обновить» перепроверено после actual enabled state: initial snapshot был вtransition загрузки. Стили кнопки не менялись, финальный тест ждёт завершения загрузки данных, ане исключает contrast rule. + +TypeScript/scoped ESLint passed;25 unique E2E34060ms,0unexpected/skips (target warning +shell accessibility/keyboard/layers).4 clean shell screenshots восстановленыпослетеста,8 исходных dirty GRE/VXLAN скриншотов сохранены. Production build/source527 matched, frontend ux-accessibility205 развёрнут, backend ux-lock200/Portal/AUTH_REQUIRED сохранены. Повторный actual tagged audit12/12 безviolations, includinglight numbers/warning. Incomplete checks сохраняются вprotocol, не объявлены passed WCAG критериями. Это default visible admin states, не полный WCAG сертификат, manual keyboard audit всехforms или reader dialogs. + +Протоколы: [baseline](ux-ui/acceptance/accessibility205-baseline-2026-10-13.json), [fixture E2E25](ux-ui/acceptance/accessibility205-e2e-2026-10-13.json), [live audit12](ux-ui/acceptance/accessibility205-live-2026-10-13.json), [deployment](ux-ui/acceptance/accessibility205-deployment-2026-10-13.json). + +Следующий206: actual live keyboard/focus для общихmenus итиповых Dialog/Sheet, ПК/телефон/роли, безapply/native mutation.200 collector loss реагирует только наobserved errors/end (неfencing);201 whole Telegram accepted, initial197 cause unproven.12.5 остаётся открытой из-за остальныхграниц внешней матрицы. diff --git a/docs/ux-ui-stage-12.md b/docs/ux-ui-stage-12.md index 313eac0c..149199b3 100644 --- a/docs/ux-ui-stage-12.md +++ b/docs/ux-ui-stage-12.md @@ -1,6 +1,6 @@ # Этап 12: итоговая приёмка UX/UI -Актуальное продолжение 2026-10-13:204 live navigation52 (13 разделов×reader/admin×1440/320), профильный API200, route/header/overflow/errors passed, mutation requests0.203 populated secrets9 passed,201 whole Telegram accepted,200 collector fixed/deployed. Runtime backend ux-lock200/frontend ux-portal199. Следующий205 — live WCAG-tagged audit основных data sections вlight/dark на ПК/телефоне.12.5 открыта. +Актуальное продолжение 2026-10-13:205 исправил light contrast RX/TX и warning целей через установленный ReUI Alert; TypeScript/ESLint/25 E2E и12 actual WCAG-tagged audits passed. Frontend ux-accessibility205/backend ux-lock200.200–204 приняты в записанных границах, Telegram201 подтверждён пользователем. Следующий206 — live keyboard/focus Dialog/Sheet/menus без применения операций.12.5 открыта. План: [ux-ui-plan.md](ux-ui-plan.md). Фактические результаты: [ux-ui-progress.md](ux-ui-progress.md). Подготовлен после сводных проверок 11Б; завершение каждого блока требует локального коммита без push. @@ -3785,3 +3785,15 @@ Actual Portal1.3.1 issued admin/own reader JWT, deployed frontend ux-portal199/b Первый диагностический обход проверял любой shared GET200 и был недостаточен для подтверждения data fetch; финальный52 усилен specific endpoint ожиданием. Counts не складываются. API/Portal ответы не mock, JWT storage seed использует реально выданный token. Своя reader fixture удалена204. Tunnel/form actions не выполнялись и новые native объекты не создавались; обычные GET могут опрашивать RouterOS. Это проверка navigation/session/section API/адаптивности после общих auth changes, не полная приёмка каждой формы/native state или throughput. Протокол: [live navigation52](ux-ui/acceptance/section204-live-navigation-2026-10-13.json). Source/runtime не менялись. Следующий205: scoped automated WCAG-tagged audit data sections(light/dark,ПК/телефон) на реальном приложении; не считать его полным WCAG сертификатом.12.5 открыта. + +## 12.5.205 — контраст живых данных и предупреждения целей (2026-10-13) + +Actual admin Portal JWT, без API mocks: traffic/alerts/backups ×light/dark×1440/320, axe-core4.11.3 tags WCAG2A/AA,2.1A/AA,2.2AA вmain-content иосновной навигации. Baseline выявил4 failing combinations: light traffic RX/TX2.07–3.76:1 иlight alerts warning4.32:1 при требовании4.5:1. Dark иbackup passed. Baseline сохранён, не переписан successful result. + +В app traffic6 numeric spans RX/TX теперь используют semantic text-foreground; стрелки/графики/форматеры сохранены. AlertsTargetIssues переиспользует установленный ReUI Alert вместоlegacy UI Alert, предупреждениеvariant warning/role status исуществующее содержимое сохранены. Vendor/shared theme не менялись. API прочитан через ReUI MCP: [docs](https://reui.io/docs/components/base/alert?ref=mcp), [preview](https://reui.io/components/alert?ref=mcp). Замечание axe ксерой кнопке «Обновить» перепроверено после actual enabled state: initial snapshot был вtransition загрузки. Стили кнопки не менялись, финальный тест ждёт завершения загрузки данных, ане исключает contrast rule. + +TypeScript/scoped ESLint passed;25 unique E2E34060ms,0unexpected/skips (target warning +shell accessibility/keyboard/layers).4 clean shell screenshots восстановленыпослетеста,8 исходных dirty GRE/VXLAN скриншотов сохранены. Production build/source527 matched, frontend ux-accessibility205 развёрнут, backend ux-lock200/Portal/AUTH_REQUIRED сохранены. Повторный actual tagged audit12/12 безviolations, includinglight numbers/warning. Incomplete checks сохраняются вprotocol, не объявлены passed WCAG критериями. Это default visible admin states, не полный WCAG сертификат, manual keyboard audit всехforms или reader dialogs. + +Протоколы: [baseline](ux-ui/acceptance/accessibility205-baseline-2026-10-13.json), [fixture E2E25](ux-ui/acceptance/accessibility205-e2e-2026-10-13.json), [live audit12](ux-ui/acceptance/accessibility205-live-2026-10-13.json), [deployment](ux-ui/acceptance/accessibility205-deployment-2026-10-13.json). + +Следующий206: actual live keyboard/focus для общихmenus итиповых Dialog/Sheet, ПК/телефон/роли, безapply/native mutation.200 collector loss реагирует только наobserved errors/end (неfencing);201 whole Telegram accepted, initial197 cause unproven.12.5 остаётся открытой из-за остальныхграниц внешней матрицы. diff --git a/docs/ux-ui-test-server.md b/docs/ux-ui-test-server.md index 49c26fe3..7888acd7 100644 --- a/docs/ux-ui-test-server.md +++ b/docs/ux-ui-test-server.md @@ -1,6 +1,6 @@ # Тестовый сервер UX/UI — 2026-10-10 -Актуальное продолжение 2026-10-13:204 live navigation52 (13 разделов×reader/admin×1440/320), профильный API200, route/header/overflow/errors passed, mutation requests0.203 populated secrets9 passed,201 whole Telegram accepted,200 collector fixed/deployed. Runtime backend ux-lock200/frontend ux-portal199. Следующий205 — live WCAG-tagged audit основных data sections вlight/dark на ПК/телефоне.12.5 открыта. +Актуальное продолжение 2026-10-13:205 исправил light contrast RX/TX и warning целей через установленный ReUI Alert; TypeScript/ESLint/25 E2E и12 actual WCAG-tagged audits passed. Frontend ux-accessibility205/backend ux-lock200.200–204 приняты в записанных границах, Telegram201 подтверждён пользователем. Следующий206 — live keyboard/focus Dialog/Sheet/menus без применения операций.12.5 открыта. | Параметр | Проверенное состояние | | --- | --- | @@ -708,7 +708,7 @@ flowchart LR ## 12.5.77 — основной блок IPsec (2026-10-09) -Актуальное продолжение 2026-10-13:204 live navigation52 (13 разделов×reader/admin×1440/320), профильный API200, route/header/overflow/errors passed, mutation requests0.203 populated secrets9 passed,201 whole Telegram accepted,200 collector fixed/deployed. Runtime backend ux-lock200/frontend ux-portal199. Следующий205 — live WCAG-tagged audit основных data sections вlight/dark на ПК/телефоне.12.5 открыта. +Актуальное продолжение 2026-10-13:205 исправил light contrast RX/TX и warning целей через установленный ReUI Alert; TypeScript/ESLint/25 E2E и12 actual WCAG-tagged audits passed. Frontend ux-accessibility205/backend ux-lock200.200–204 приняты в записанных границах, Telegram201 подтверждён пользователем. Следующий206 — live keyboard/focus Dialog/Sheet/menus без применения операций.12.5 открыта. Подробный объём, протоколы, схема и ограничения: [12.5.77 в журнале](ux-ui-progress.md). @@ -2211,3 +2211,15 @@ Actual Portal1.3.1 issued admin/own reader JWT, deployed frontend ux-portal199/b Первый диагностический обход проверял любой shared GET200 и был недостаточен для подтверждения data fetch; финальный52 усилен specific endpoint ожиданием. Counts не складываются. API/Portal ответы не mock, JWT storage seed использует реально выданный token. Своя reader fixture удалена204. Tunnel/form actions не выполнялись и новые native объекты не создавались; обычные GET могут опрашивать RouterOS. Это проверка navigation/session/section API/адаптивности после общих auth changes, не полная приёмка каждой формы/native state или throughput. Протокол: [live navigation52](ux-ui/acceptance/section204-live-navigation-2026-10-13.json). Source/runtime не менялись. Следующий205: scoped automated WCAG-tagged audit data sections(light/dark,ПК/телефон) на реальном приложении; не считать его полным WCAG сертификатом.12.5 открыта. + +## 12.5.205 — контраст живых данных и предупреждения целей (2026-10-13) + +Actual admin Portal JWT, без API mocks: traffic/alerts/backups ×light/dark×1440/320, axe-core4.11.3 tags WCAG2A/AA,2.1A/AA,2.2AA вmain-content иосновной навигации. Baseline выявил4 failing combinations: light traffic RX/TX2.07–3.76:1 иlight alerts warning4.32:1 при требовании4.5:1. Dark иbackup passed. Baseline сохранён, не переписан successful result. + +В app traffic6 numeric spans RX/TX теперь используют semantic text-foreground; стрелки/графики/форматеры сохранены. AlertsTargetIssues переиспользует установленный ReUI Alert вместоlegacy UI Alert, предупреждениеvariant warning/role status исуществующее содержимое сохранены. Vendor/shared theme не менялись. API прочитан через ReUI MCP: [docs](https://reui.io/docs/components/base/alert?ref=mcp), [preview](https://reui.io/components/alert?ref=mcp). Замечание axe ксерой кнопке «Обновить» перепроверено после actual enabled state: initial snapshot был вtransition загрузки. Стили кнопки не менялись, финальный тест ждёт завершения загрузки данных, ане исключает contrast rule. + +TypeScript/scoped ESLint passed;25 unique E2E34060ms,0unexpected/skips (target warning +shell accessibility/keyboard/layers).4 clean shell screenshots восстановленыпослетеста,8 исходных dirty GRE/VXLAN скриншотов сохранены. Production build/source527 matched, frontend ux-accessibility205 развёрнут, backend ux-lock200/Portal/AUTH_REQUIRED сохранены. Повторный actual tagged audit12/12 безviolations, includinglight numbers/warning. Incomplete checks сохраняются вprotocol, не объявлены passed WCAG критериями. Это default visible admin states, не полный WCAG сертификат, manual keyboard audit всехforms или reader dialogs. + +Протоколы: [baseline](ux-ui/acceptance/accessibility205-baseline-2026-10-13.json), [fixture E2E25](ux-ui/acceptance/accessibility205-e2e-2026-10-13.json), [live audit12](ux-ui/acceptance/accessibility205-live-2026-10-13.json), [deployment](ux-ui/acceptance/accessibility205-deployment-2026-10-13.json). + +Следующий206: actual live keyboard/focus для общихmenus итиповых Dialog/Sheet, ПК/телефон/роли, безapply/native mutation.200 collector loss реагирует только наobserved errors/end (неfencing);201 whole Telegram accepted, initial197 cause unproven.12.5 остаётся открытой из-за остальныхграниц внешней матрицы. diff --git a/docs/ux-ui/acceptance/accessibility205-baseline-2026-10-13.json b/docs/ux-ui/acceptance/accessibility205-baseline-2026-10-13.json new file mode 100644 index 00000000..3cf0364c --- /dev/null +++ b/docs/ux-ui/acceptance/accessibility205-baseline-2026-10-13.json @@ -0,0 +1,278 @@ +{ + "date": "2026-10-13", + "block": "12.5.205", + "runtime": { + "backend": "ux-lock200", + "frontend": "ux-portal199" + }, + "actualPortalJWT": true, + "apiMocks": false, + "scope": [ + "#main-content", + "[aria-label=\"Основная навигация\"]" + ], + "tags": [ + "wcag2a", + "wcag2aa", + "wcag21a", + "wcag21aa", + "wcag22aa" + ], + "cases": [ + { + "path": "/traffic", + "theme": "light", + "width": 1440, + "passes": 22, + "incomplete": 2, + "violations": [ + { + "id": "color-contrast", + "impact": "serious", + "nodes": [ + { + "target": [ + ".dark\\:border-input" + ], + "summary": "Fix any of the following:\n Element has insufficient color contrast of 3.65 (foreground color: #7e8083, background color: #f4f6f9, font size: 9.6pt (12.8px), font weight: normal). Expected contrast ratio of 4.5:1" + }, + { + "target": [ + ".bg-primary\\/5 > .mt-2.justify-between.gap-2 > .text-\\[11px\\].gap-1:nth-child(1) > .text-emerald-500.font-mono.font-medium" + ], + "summary": "Fix any of the following:\n Element has insufficient color contrast of 2.07 (foreground color: #00bc7d, background color: #e9ebee, font size: 8.3pt (11px), font weight: normal). Expected contrast ratio of 4.5:1" + }, + { + "target": [ + ".bg-primary\\/5 > .mt-2.justify-between.gap-2 > .text-\\[11px\\].gap-1:nth-child(2) > .text-blue-500.font-mono.font-medium" + ], + "summary": "Fix any of the following:\n Element has insufficient color contrast of 3.14 (foreground color: #2b7fff, background color: #e9ebee, font size: 8.3pt (11px), font weight: normal). Expected contrast ratio of 4.5:1" + }, + { + "target": [ + ".bg-card > .mt-2.justify-between.gap-2 > .text-\\[11px\\].gap-1:nth-child(1) > .text-emerald-500.font-mono.font-medium" + ], + "summary": "Fix any of the following:\n Element has insufficient color contrast of 2.47 (foreground color: #00bc7d, background color: #ffffff, font size: 8.3pt (11px), font weight: normal). Expected contrast ratio of 4.5:1" + }, + { + "target": [ + ".bg-card > .mt-2.justify-between.gap-2 > .text-\\[11px\\].gap-1:nth-child(2) > .text-blue-500.font-mono.font-medium" + ], + "summary": "Fix any of the following:\n Element has insufficient color contrast of 3.76 (foreground color: #2b7fff, background color: #ffffff, font size: 8.3pt (11px), font weight: normal). Expected contrast ratio of 4.5:1" + } + ] + } + ] + }, + { + "path": "/alerts", + "theme": "light", + "width": 1440, + "passes": 23, + "incomplete": 1, + "violations": [ + { + "id": "color-contrast", + "impact": "serious", + "nodes": [ + { + "target": [ + ".leading-none" + ], + "summary": "Fix any of the following:\n Element has insufficient color contrast of 4.32 (foreground color: #bb4d00, background color: #f5ede0, font size: 10.5pt (14px), font weight: normal). Expected contrast ratio of 4.5:1" + }, + { + "target": [ + "summary" + ], + "summary": "Fix any of the following:\n Element has insufficient color contrast of 4.32 (foreground color: #bb4d00, background color: #f5ede0, font size: 10.5pt (14px), font weight: normal). Expected contrast ratio of 4.5:1" + }, + { + "target": [ + ".\\[overflow-wrap\\:anywhere\\]" + ], + "summary": "Fix any of the following:\n Element has insufficient color contrast of 4.32 (foreground color: #bb4d00, background color: #f5ede0, font size: 10.5pt (14px), font weight: normal). Expected contrast ratio of 4.5:1" + }, + { + "target": [ + "strong" + ], + "summary": "Fix any of the following:\n Element has insufficient color contrast of 4.32 (foreground color: #bb4d00, background color: #f5ede0, font size: 10.5pt (14px), font weight: bold). Expected contrast ratio of 4.5:1" + }, + { + "target": [ + ".\\[\\&_p\\]\\:leading-relaxed > p:nth-child(2)" + ], + "summary": "Fix any of the following:\n Element has insufficient color contrast of 4.32 (foreground color: #bb4d00, background color: #f5ede0, font size: 10.5pt (14px), font weight: normal). Expected contrast ratio of 4.5:1" + }, + { + "target": [ + ".underline" + ], + "summary": "Fix any of the following:\n Element has insufficient color contrast of 4.32 (foreground color: #bb4d00, background color: #f5ede0, font size: 10.5pt (14px), font weight: normal). Expected contrast ratio of 4.5:1" + } + ] + } + ] + }, + { + "path": "/backups", + "theme": "light", + "width": 1440, + "passes": 26, + "incomplete": 2, + "violations": [] + }, + { + "path": "/traffic", + "theme": "light", + "width": 320, + "passes": 22, + "incomplete": 1, + "violations": [ + { + "id": "color-contrast", + "impact": "serious", + "nodes": [ + { + "target": [ + ".bg-primary\\/5 > .mt-2.justify-between.gap-2 > .text-\\[11px\\].gap-1.items-center:nth-child(1) > .text-emerald-500.font-mono" + ], + "summary": "Fix any of the following:\n Element has insufficient color contrast of 2.07 (foreground color: #00bc7d, background color: #e9ebee, font size: 8.3pt (11px), font weight: normal). Expected contrast ratio of 4.5:1" + }, + { + "target": [ + ".bg-primary\\/5 > .mt-2.justify-between.gap-2 > .text-\\[11px\\].gap-1.items-center:nth-child(2) > .text-blue-500.font-mono" + ], + "summary": "Fix any of the following:\n Element has insufficient color contrast of 3.14 (foreground color: #2b7fff, background color: #e9ebee, font size: 8.3pt (11px), font weight: normal). Expected contrast ratio of 4.5:1" + }, + { + "target": [ + ".bg-card > .mt-2.justify-between.gap-2 > .text-\\[11px\\].gap-1.items-center:nth-child(1) > .text-emerald-500.font-mono" + ], + "summary": "Fix any of the following:\n Element has insufficient color contrast of 2.47 (foreground color: #00bc7d, background color: #ffffff, font size: 8.3pt (11px), font weight: normal). Expected contrast ratio of 4.5:1" + }, + { + "target": [ + ".bg-card > .mt-2.justify-between.gap-2 > .text-\\[11px\\].gap-1.items-center:nth-child(2) > .text-blue-500.font-mono" + ], + "summary": "Fix any of the following:\n Element has insufficient color contrast of 3.76 (foreground color: #2b7fff, background color: #ffffff, font size: 8.3pt (11px), font weight: normal). Expected contrast ratio of 4.5:1" + } + ] + } + ] + }, + { + "path": "/alerts", + "theme": "light", + "width": 320, + "passes": 23, + "incomplete": 0, + "violations": [ + { + "id": "color-contrast", + "impact": "serious", + "nodes": [ + { + "target": [ + ".leading-none" + ], + "summary": "Fix any of the following:\n Element has insufficient color contrast of 4.32 (foreground color: #bb4d00, background color: #f5ede0, font size: 10.5pt (14px), font weight: normal). Expected contrast ratio of 4.5:1" + }, + { + "target": [ + "summary" + ], + "summary": "Fix any of the following:\n Element has insufficient color contrast of 4.32 (foreground color: #bb4d00, background color: #f5ede0, font size: 10.5pt (14px), font weight: normal). Expected contrast ratio of 4.5:1" + }, + { + "target": [ + ".\\[overflow-wrap\\:anywhere\\]" + ], + "summary": "Fix any of the following:\n Element has insufficient color contrast of 4.32 (foreground color: #bb4d00, background color: #f5ede0, font size: 10.5pt (14px), font weight: normal). Expected contrast ratio of 4.5:1" + }, + { + "target": [ + "strong" + ], + "summary": "Fix any of the following:\n Element has insufficient color contrast of 4.32 (foreground color: #bb4d00, background color: #f5ede0, font size: 10.5pt (14px), font weight: bold). Expected contrast ratio of 4.5:1" + }, + { + "target": [ + ".\\[\\&_p\\]\\:leading-relaxed > p:nth-child(2)" + ], + "summary": "Fix any of the following:\n Element has insufficient color contrast of 4.32 (foreground color: #bb4d00, background color: #f5ede0, font size: 10.5pt (14px), font weight: normal). Expected contrast ratio of 4.5:1" + }, + { + "target": [ + ".underline" + ], + "summary": "Fix any of the following:\n Element has insufficient color contrast of 4.32 (foreground color: #bb4d00, background color: #f5ede0, font size: 10.5pt (14px), font weight: normal). Expected contrast ratio of 4.5:1" + } + ] + } + ] + }, + { + "path": "/backups", + "theme": "light", + "width": 320, + "passes": 24, + "incomplete": 2, + "violations": [] + }, + { + "path": "/traffic", + "theme": "dark", + "width": 1440, + "passes": 23, + "incomplete": 2, + "violations": [] + }, + { + "path": "/alerts", + "theme": "dark", + "width": 1440, + "passes": 23, + "incomplete": 1, + "violations": [] + }, + { + "path": "/backups", + "theme": "dark", + "width": 1440, + "passes": 26, + "incomplete": 2, + "violations": [] + }, + { + "path": "/traffic", + "theme": "dark", + "width": 320, + "passes": 22, + "incomplete": 1, + "violations": [] + }, + { + "path": "/alerts", + "theme": "dark", + "width": 320, + "passes": 23, + "incomplete": 0, + "violations": [] + }, + { + "path": "/backups", + "theme": "dark", + "width": 320, + "passes": 24, + "incomplete": 2, + "violations": [] + } + ], + "passed": false, + "bounds": [ + "Automated tagged DOM audit; not a complete WCAG certification", + "Admin only, default visible state; dialogs and native mutation scenarios not covered" + ] +} diff --git a/docs/ux-ui/acceptance/accessibility205-deployment-2026-10-13.json b/docs/ux-ui/acceptance/accessibility205-deployment-2026-10-13.json new file mode 100644 index 00000000..c7fb92cd --- /dev/null +++ b/docs/ux-ui/acceptance/accessibility205-deployment-2026-10-13.json @@ -0,0 +1,12 @@ +{ + "date": "2026-10-13", + "block": "12.5.205", + "sourceFilesMatched": 527, + "productionBuildPassed": true, + "frontendImage": "mmapp-test/frontend:ux-accessibility205", + "imageId": "sha256:8f1eccf07d4d562a9100397806609a994280c3edf16a8a84b7cee5cbf98466ef8", + "backendImage": "mmapp-test/backend:ux-lock200", + "rollbackFrontendTag": "ux-portal199", + "vendorFilesChanged": 0, + "knownUserScreensPreserved": 8 +} diff --git a/docs/ux-ui/acceptance/accessibility205-e2e-2026-10-13.json b/docs/ux-ui/acceptance/accessibility205-e2e-2026-10-13.json new file mode 100644 index 00000000..82d17b82 --- /dev/null +++ b/docs/ux-ui/acceptance/accessibility205-e2e-2026-10-13.json @@ -0,0 +1,14 @@ +{ + "date": "2026-10-13", + "block": "12.5.205", + "stats": { + "startTime": "2026-10-13T09:43:05.106Z", + "duration": 34060.263, + "expected": 25, + "skipped": 0, + "unexpected": 0, + "flaky": 0 + }, + "errors": [], + "scope": "alerts target issues + shell tagged accessibility/keyboard/layers fixtures, not live production" +} diff --git a/docs/ux-ui/acceptance/accessibility205-live-2026-10-13.json b/docs/ux-ui/acceptance/accessibility205-live-2026-10-13.json new file mode 100644 index 00000000..8b65c4b4 --- /dev/null +++ b/docs/ux-ui/acceptance/accessibility205-live-2026-10-13.json @@ -0,0 +1,125 @@ +{ + "date": "2026-10-13", + "block": "12.5.205", + "runtime": { + "backend": "ux-lock200", + "frontend": "ux-accessibility205" + }, + "actualPortalJWT": true, + "apiMocks": false, + "scope": [ + "#main-content", + "[aria-label=\"Основная навигация\"]" + ], + "tags": [ + "wcag2a", + "wcag2aa", + "wcag21a", + "wcag21aa", + "wcag22aa" + ], + "cases": [ + { + "path": "/traffic", + "theme": "light", + "width": 1440, + "passes": 22, + "incomplete": 2, + "violations": [] + }, + { + "path": "/alerts", + "theme": "light", + "width": 1440, + "passes": 23, + "incomplete": 1, + "violations": [] + }, + { + "path": "/backups", + "theme": "light", + "width": 1440, + "passes": 26, + "incomplete": 2, + "violations": [] + }, + { + "path": "/traffic", + "theme": "light", + "width": 320, + "passes": 22, + "incomplete": 1, + "violations": [] + }, + { + "path": "/alerts", + "theme": "light", + "width": 320, + "passes": 23, + "incomplete": 0, + "violations": [] + }, + { + "path": "/backups", + "theme": "light", + "width": 320, + "passes": 24, + "incomplete": 2, + "violations": [] + }, + { + "path": "/traffic", + "theme": "dark", + "width": 1440, + "passes": 22, + "incomplete": 2, + "violations": [] + }, + { + "path": "/alerts", + "theme": "dark", + "width": 1440, + "passes": 23, + "incomplete": 1, + "violations": [] + }, + { + "path": "/backups", + "theme": "dark", + "width": 1440, + "passes": 26, + "incomplete": 2, + "violations": [] + }, + { + "path": "/traffic", + "theme": "dark", + "width": 320, + "passes": 22, + "incomplete": 1, + "violations": [] + }, + { + "path": "/alerts", + "theme": "dark", + "width": 320, + "passes": 23, + "incomplete": 0, + "violations": [] + }, + { + "path": "/backups", + "theme": "dark", + "width": 320, + "passes": 24, + "incomplete": 2, + "violations": [] + } + ], + "passed": true, + "bounds": [ + "Automated tagged DOM audit; not a complete WCAG certification", + "Admin only, default visible state; dialogs and native mutation scenarios not covered" + ], + "waitForTrafficRefreshEnabled": true +}