From 8d6d82082cdc4a34d41a33bd1b6a22a0ca56d8f4 Mon Sep 17 00:00:00 2001 From: Denozordec Date: Sun, 4 Oct 2026 04:04:12 +0700 Subject: [PATCH] =?UTF-8?q?chore(test):=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=D1=81?= =?UTF-8?q?=D0=BC=D0=B5=D0=BD=D1=8B=20=D0=BA=D0=BE=D0=BD=D1=82=D0=B5=D0=BA?= =?UTF-8?q?=D1=81=D1=82=D0=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docs/ux-ui-plan.md | 2 +- docs/ux-ui-progress.md | 10 +- docs/ux-ui-stage-12.md | 8 + .../context-regression-2026-10-04.json | 208 ++++++++++++++++++ playwright.ux-context.config.ts | 23 ++ 5 files changed, 249 insertions(+), 2 deletions(-) create mode 100644 docs/ux-ui/acceptance/context-regression-2026-10-04.json create mode 100644 playwright.ux-context.config.ts diff --git a/docs/ux-ui-plan.md b/docs/ux-ui-plan.md index d9e981b3..1c42d41e 100644 --- a/docs/ux-ui-plan.md +++ b/docs/ux-ui-plan.md @@ -4,7 +4,7 @@ ## Актуальная точка продолжения — 2026-10-04 -Этап 11Б завершён в границах локальной приёмки (11Б.7); внешний выпуск не проверен. 12.1 принят локально: доступность оболочки/клавиатура/health в описанных сценариях. 12.2.1 принят локально: strict BGP catalog/partial/nullable counters. 12.2.2 принят локально: strict traffic DTO и агрегация без выдуманных точек. 12.2.3 принят локально: observations для server traffic от backend до dashboard. 12.2.4 принят локально: strict servers/probes и unknown server status. 12.2.5 принят локально: реальные ping samples/unknown/ось RTT/Recharts. 12.2.6 принят локально: strict GRE/WireGuard/VXLAN и device failures. 12.2.7 принят локально: strict Internet path snapshot/fallback. 12.2.8 принят локально: подтверждение полного backend сбора. 12.2.9 принят локально: метрики участков и наблюдаемый WAN без эвристической подмены. 12.3.1 принят локально:1000 серверов/штатная пагинация. 12.3.2 принят локально: пагинация CompactDataGrid/1000 строк статистики. 12.3.3 принят локально: порционный DOM очереди проблем. 12.3.4 принят локально: большой BGP каталог/страница при обновлении. Production build и123 профильных browser приняты локально на3978976. 12.2.10 принят локально: обязательные RouterOS поля. 12.3.5 принят локально: страница CompactDataGrid сохраняется при опросе,89 browser и повторный production build прошли. 12.3.6 сохранён: baseline1000 speed probes (ограничение DOM пока не выполнено). 12.3.7 принят локально:50 строк speed-проб/сохранение страницы/глобальная сортировка/1000→1; каталог1001 устройства остаётся в DOM. 12.3.8 принят локально:50 строк ресурсов, URL/поиск/сохранение страницы/1000→1; исправлена pagination оболочки с children, production build и8 больших browser прошли. 12.3.9 принят локально:порционное раскрытие1000 предупреждений ресурсов/клавиатура/axe; исходная ошибка ESLint speedDraft подтверждена. 12.3.10 принят локально:недоступные интерфейсы очищаются в обработчиках,54 browser/полный ESLint/production build прошли. 12.3.11 принят локально:ServerTileRail50 устройств/URL/поиск/клавиатура/две площадки/mobile Sheet/axe обе темы;47 browser и production build прошли. 12.3.12 принят локально:BGP ручная страница при выбранной URL сессии/refresh/reload,16 browser/build прошли. 12.4.1 записан:main1091 сценарий/1088 passed/3 устаревших fixtures; оба исправленных файла6 passed. Следующий блок12.4.2:23 context файла и backend-switch, затем оставшиеся grids/pivot;12.4/12.5 ещё не завершены. См. docs/ux-ui-stage-12.md. Внешние ограничения 11Б сохраняются. +Этап 11Б завершён в границах локальной приёмки (11Б.7); внешний выпуск не проверен. 12.1 принят локально: доступность оболочки/клавиатура/health в описанных сценариях. 12.2.1 принят локально: strict BGP catalog/partial/nullable counters. 12.2.2 принят локально: strict traffic DTO и агрегация без выдуманных точек. 12.2.3 принят локально: observations для server traffic от backend до dashboard. 12.2.4 принят локально: strict servers/probes и unknown server status. 12.2.5 принят локально: реальные ping samples/unknown/ось RTT/Recharts. 12.2.6 принят локально: strict GRE/WireGuard/VXLAN и device failures. 12.2.7 принят локально: strict Internet path snapshot/fallback. 12.2.8 принят локально: подтверждение полного backend сбора. 12.2.9 принят локально: метрики участков и наблюдаемый WAN без эвристической подмены. 12.3.1 принят локально:1000 серверов/штатная пагинация. 12.3.2 принят локально: пагинация CompactDataGrid/1000 строк статистики. 12.3.3 принят локально: порционный DOM очереди проблем. 12.3.4 принят локально: большой BGP каталог/страница при обновлении. Production build и123 профильных browser приняты локально на3978976. 12.2.10 принят локально: обязательные RouterOS поля. 12.3.5 принят локально: страница CompactDataGrid сохраняется при опросе,89 browser и повторный production build прошли. 12.3.6 сохранён: baseline1000 speed probes (ограничение DOM пока не выполнено). 12.3.7 принят локально:50 строк speed-проб/сохранение страницы/глобальная сортировка/1000→1; каталог1001 устройства остаётся в DOM. 12.3.8 принят локально:50 строк ресурсов, URL/поиск/сохранение страницы/1000→1; исправлена pagination оболочки с children, production build и8 больших browser прошли. 12.3.9 принят локально:порционное раскрытие1000 предупреждений ресурсов/клавиатура/axe; исходная ошибка ESLint speedDraft подтверждена. 12.3.10 принят локально:недоступные интерфейсы очищаются в обработчиках,54 browser/полный ESLint/production build прошли. 12.3.11 принят локально:ServerTileRail50 устройств/URL/поиск/клавиатура/две площадки/mobile Sheet/axe обе темы;47 browser и production build прошли. 12.3.12 принят локально:BGP ручная страница при выбранной URL сессии/refresh/reload,16 browser/build прошли. 12.4.1 записан:main1091 сценарий/1088 passed/3 устаревших fixtures; оба исправленных файла6 passed. 12.4.2 принят локально:context205/24 файла и unit28 прошли. Следующий блок12.3.13:wide pivot51×16, затем history200/probes-schedule и итоговая матрица;12.4/12.5 ещё не завершены. См. docs/ux-ui-stage-12.md. Внешние ограничения 11Б сохраняются. Реальные pg_dump/pg_restore, PG rollback и остановка UDP worker требуют внешней приёмки. Датированные продолжения ниже — история; точный следующий шаг также указан в начале [журнала](ux-ui-progress.md). diff --git a/docs/ux-ui-progress.md b/docs/ux-ui-progress.md index 41585579..291af8c1 100644 --- a/docs/ux-ui-progress.md +++ b/docs/ux-ui-progress.md @@ -29,13 +29,21 @@ | 10 | Маршрутизация, диагностика, карта и терминал | Завершён в границах локальной приёмки 2026-10-01; блоки 10.1–10.71, внешние ограничения в 10.71 | | 11А | Пользователи, контейнеры, сертификаты и резервные копии | Завершён в границах локальной приёмки 2026-10-01; 11А.1–11А.33, внешние ограничения в 11А.33 | | 11Б | Оповещения, сбор данных, интеграции, релизы и настройки | Завершён в границах локальной приёмки 2026-10-03; ограничения и evidence в11Б.7 | -| 12 | Итоговая доступность, адаптивность, производительность и регрессия | В работе;12.1/12.2.1–12.2.10 и12.3.1–12.3.5 и12.3.7–12.3.12 приняты в описанных локальных границах;12.4.1 main регрессия и профильный повтор записаны | +| 12 | Итоговая доступность, адаптивность, производительность и регрессия | В работе;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.4.2 — context-регрессия и чистые проверки источников (2026-10-04) + +Новая playwright.ux-context.config.ts переиспользует основной список23 testIgnore как testMatch, добавляет backend-switch.e2e.ts и запускает24 файла последовательно на3101 с NEXT_PUBLIC_BACKEND_URL=local. Индивидуальные конфигурации сохранены.205 passed/0 failed/0 skipped/0 flaky,7.0 минут,Edge/workers1/retries0. Проверены поздние чтения/записи при backend/demo/ABA, scoped unknown checkpoints, health, фоновые jobs/экспорт и смена контекста сетевых объектов. Отчёт: [context-regression-2026-10-04.json](ux-ui/acceptance/context-regression-2026-10-04.json). + +28 unit-проверок прошли:8 lib dashboard/Evolution профилей и4 чистых/DI backend профиля traffic-rate/BGP parser/OSPF values/Internet path snapshot. Реальная БД, migrations и сетевое применение не запускались. Typecheck и ESLint новой конфигурации прошли. Production код с момента c4110fa не менялся; frontend/contracts build34 страницы на нём принят.12.4 ещё требует итоговой матрицы и backend build;12.3 — оставшихся специализированных границ. Внешние ограничения12.5 остаются. + +Следующий блок12.3.13: browser профиль широкой pivot51×16 (50/15 cap + Other), глобальная сортировка/последняя страница/refresh/320px/переход к двум измерениям и возврат. Затем speed history200 и probes-schedule по фактическому API. Коммит локальный, без push. + ## 12.4.1 — общая регрессия и актуальные fixtures (2026-10-04) Main Playwright/Edge на c4110fa:1091 сценарий в163 файлах,1088 passed/3 failed/0 skipped/0 flaky,24.9 минуты,workers1/retries0. Все три падения воспроизведены как устаревшие fixtures: admin-tables обслуживал legacy /api/certificates вместо /api/certificates/state; Filters ожидал демо Community, не предоставляя подтверждённый Evolution catalog. Fixtures обновлены по strict schemas; keyboard/SAN/sort/write assertions сохранены. Повтор обоих файлов:6 passed. Полный прогон после fixtures не повторялся: production код не менялся; это1088 успешных сценариев общей регрессии плюс исправленные3 в профильном повторе, а не новый единый1091/1091 прогон. diff --git a/docs/ux-ui-stage-12.md b/docs/ux-ui-stage-12.md index 669ee540..0361d3ee 100644 --- a/docs/ux-ui-stage-12.md +++ b/docs/ux-ui-stage-12.md @@ -231,3 +231,11 @@ Main Playwright/Edge на c4110fa:1091 сценарий в163 файлах,1088 Typecheck и ESLint двух изменённых файлов прошли. Production/contracts build34 страницы ранее прошёл на том же production HEAD c4110fa. Исходный отчёт сохранён в [main-regression-2026-10-04.json](ux-ui/acceptance/main-regression-2026-10-04.json), новые просмотренные снимки rail320px — в docs/ux-ui/screens/large-server-rail-dark-320.png и large-server-rail-light-320.png. Перегенерированные исторические screenshots восстановлены; чужие изменения не включены. Карта производительности уточнена по фактическим backend caps (scheduler11/flows50/speed history200/pivot51×16 с Other); большие browser профили оставшихся25 grids и pivot ещё требуются. Следующий блок12.4.2: единый последовательный context прогон23 исключённых файлов с backend URL local, затем backend-switch. После context — оставшиеся границы производительности12.3 и матрица builds/checklist.12.5 реальная PG/RouterOS/интеграционная приёмка отдельно. Локальный коммит, без push. + +## 12.4.2 — context-регрессия и чистые проверки источников (2026-10-04) + +Новая playwright.ux-context.config.ts переиспользует основной список23 testIgnore как testMatch, добавляет backend-switch.e2e.ts и запускает24 файла последовательно на3101 с NEXT_PUBLIC_BACKEND_URL=local. Индивидуальные конфигурации сохранены.205 passed/0 failed/0 skipped/0 flaky,7.0 минут,Edge/workers1/retries0. Проверены поздние чтения/записи при backend/demo/ABA, scoped unknown checkpoints, health, фоновые jobs/экспорт и смена контекста сетевых объектов. Отчёт: [context-regression-2026-10-04.json](ux-ui/acceptance/context-regression-2026-10-04.json). + +28 unit-проверок прошли:8 lib dashboard/Evolution профилей и4 чистых/DI backend профиля traffic-rate/BGP parser/OSPF values/Internet path snapshot. Реальная БД, migrations и сетевое применение не запускались. Typecheck и ESLint новой конфигурации прошли. Production код с момента c4110fa не менялся; frontend/contracts build34 страницы на нём принят.12.4 ещё требует итоговой матрицы и backend build;12.3 — оставшихся специализированных границ. Внешние ограничения12.5 остаются. + +Следующий блок12.3.13: browser профиль широкой pivot51×16 (50/15 cap + Other), глобальная сортировка/последняя страница/refresh/320px/переход к двум измерениям и возврат. Затем speed history200 и probes-schedule по фактическому API. Коммит локальный, без push. diff --git a/docs/ux-ui/acceptance/context-regression-2026-10-04.json b/docs/ux-ui/acceptance/context-regression-2026-10-04.json new file mode 100644 index 00000000..4058cb85 --- /dev/null +++ b/docs/ux-ui/acceptance/context-regression-2026-10-04.json @@ -0,0 +1,208 @@ +{ + "head": "91c1194", + "config": "playwright.ux-context.config.ts", + "browser": "msedge", + "workers": 1, + "retries": 0, + "maxFailures": 12, + "source": "test-results/ux-ui-regression-context.json", + "stats": { + "startTime": "2026-10-03T20:55:58.353Z", + "duration": 418038.656, + "expected": 205, + "skipped": 0, + "unexpected": 0, + "flaky": 0 + }, + "errors": [], + "files": [ + { + "file": "alerts-context.spec.ts", + "passed": 14, + "failed": 0, + "skipped": 0, + "failures": [] + }, + { + "file": "backend-switch.e2e.ts", + "passed": 3, + "failed": 0, + "skipped": 0, + "failures": [] + }, + { + "file": "backups-context.spec.ts", + "passed": 28, + "failed": 0, + "skipped": 0, + "failures": [] + }, + { + "file": "bgp-context.spec.ts", + "passed": 4, + "failed": 0, + "skipped": 0, + "failures": [] + }, + { + "file": "certificates-context.spec.ts", + "passed": 16, + "failed": 0, + "skipped": 0, + "failures": [] + }, + { + "file": "containers-context.spec.ts", + "passed": 8, + "failed": 0, + "skipped": 0, + "failures": [] + }, + { + "file": "data-collection-context.spec.ts", + "passed": 6, + "failed": 0, + "skipped": 0, + "failures": [] + }, + { + "file": "evobgp-context.spec.ts", + "passed": 8, + "failed": 0, + "skipped": 0, + "failures": [] + }, + { + "file": "filters-context.spec.ts", + "passed": 6, + "failed": 0, + "skipped": 0, + "failures": [] + }, + { + "file": "firewall-context.spec.ts", + "passed": 4, + "failed": 0, + "skipped": 0, + "failures": [] + }, + { + "file": "geoip-context.spec.ts", + "passed": 6, + "failed": 0, + "skipped": 0, + "failures": [] + }, + { + "file": "gre-context.spec.ts", + "passed": 6, + "failed": 0, + "skipped": 0, + "failures": [] + }, + { + "file": "ipsec-context.spec.ts", + "passed": 6, + "failed": 0, + "skipped": 0, + "failures": [] + }, + { + "file": "netflow-context.spec.ts", + "passed": 10, + "failed": 0, + "skipped": 0, + "failures": [] + }, + { + "file": "network-map-context.spec.ts", + "passed": 12, + "failed": 0, + "skipped": 0, + "failures": [] + }, + { + "file": "ospf-context.spec.ts", + "passed": 8, + "failed": 0, + "skipped": 0, + "failures": [] + }, + { + "file": "probes-context.spec.ts", + "passed": 8, + "failed": 0, + "skipped": 0, + "failures": [] + }, + { + "file": "recursive-routes-context.spec.ts", + "passed": 8, + "failed": 0, + "skipped": 0, + "failures": [] + }, + { + "file": "route-optimizer-context.spec.ts", + "passed": 8, + "failed": 0, + "skipped": 0, + "failures": [] + }, + { + "file": "settings-context.spec.ts", + "passed": 10, + "failed": 0, + "skipped": 0, + "failures": [] + }, + { + "file": "system-database-context.spec.ts", + "passed": 6, + "failed": 0, + "skipped": 0, + "failures": [] + }, + { + "file": "terminal-context.spec.ts", + "passed": 8, + "failed": 0, + "skipped": 0, + "failures": [] + }, + { + "file": "users-context.spec.ts", + "passed": 8, + "failed": 0, + "skipped": 0, + "failures": [] + }, + { + "file": "vxlan-context.spec.ts", + "passed": 4, + "failed": 0, + "skipped": 0, + "failures": [] + } + ], + "unitFollowup": { + "command": "node --import tsx --test (8 dashboard/Evolution lib files + 4 pure/DI backend files)", + "passed": 28, + "failed": 0, + "realDatabaseUsed": false, + "files": [ + "lib/dashboard-bgp.test.ts", + "lib/dashboard-traffic.test.ts", + "lib/dashboard-readers.test.ts", + "lib/dashboard-probes.test.ts", + "lib/dashboard-overlays.test.ts", + "lib/dashboard-path-response.test.ts", + "lib/dashboard-permissions.test.ts", + "lib/evobgp-catalog.test.ts", + "backend/src/services/traffic-rate.test.ts", + "backend/src/services/bgp-catalog-parse.test.ts", + "backend/src/services/ospf-observed-values.test.ts", + "backend/src/services/internet-path-snapshot.test.ts" + ] + } +} diff --git a/playwright.ux-context.config.ts b/playwright.ux-context.config.ts new file mode 100644 index 00000000..b35deeeb --- /dev/null +++ b/playwright.ux-context.config.ts @@ -0,0 +1,23 @@ +import { defineConfig } from "@playwright/test" +import base from "./playwright.config" + +const server = base.webServer +const contextFiles = base.testIgnore +if (!server || Array.isArray(server)) throw new Error("Ожидается один локальный frontend сервер") +if (!Array.isArray(contextFiles) || contextFiles.some(file => typeof file !== "string")) { + throw new Error("Ожидается список context файлов, исключённых из основной регрессии") +} + +// Same isolation as individual context configs, with one sequential server session. +export default defineConfig({ + ...base, + use: { ...base.use, baseURL: "http://127.0.0.1:3101" }, + testIgnore: [], + testMatch: [...contextFiles, "**/backend-switch.e2e.ts"], + webServer: { + ...server, + command: "node node_modules/next/dist/bin/next dev --hostname 127.0.0.1 --port 3101", + url: "http://127.0.0.1:3101", + env: { ...server.env, NEXT_PUBLIC_BACKEND_URL: "local" }, + }, +})