From a5c8e614bd48f5487af9b205f1667300ffdb273f Mon Sep 17 00:00:00 2001 From: Denozordec Date: Sat, 3 Oct 2026 17:51:49 +0700 Subject: [PATCH] =?UTF-8?q?fix(test):=20=D1=83=D1=87=D0=B5=D1=81=D1=82?= =?UTF-8?q?=D1=8C=20=D0=BE=D0=B1=D1=89=D0=B8=D0=B9=20=D0=BE=D0=BF=D1=80?= =?UTF-8?q?=D0=BE=D1=81=20=D0=B2=20=D0=BF=D1=80=D0=BE=D0=B2=D0=B5=D1=80?= =?UTF-8?q?=D0=BA=D0=B5=20=D0=BF=D1=80=D0=B0=D0=B2=20=D0=BA=D0=B0=D1=82?= =?UTF-8?q?=D0=B0=D0=BB=D0=BE=D0=B3=D0=BE=D0=B2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docs/ux-ui-progress.md | 2 +- tests/e2e/alerts-targets.spec.ts | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/docs/ux-ui-progress.md b/docs/ux-ui-progress.md index 3c9decb0..59efbd1c 100644 --- a/docs/ux-ui-progress.md +++ b/docs/ux-ui-progress.md @@ -40,7 +40,7 @@ - Primary strict reader больше не ждёт BGP/server labels/GRE. Каждый каталог имеет собственные abort/revision/lifetime, loading/error/known/time, retry и последний успешный snapshot; header refresh запускает их независимо. Unknown не отображается как пустой каталог. - Неполный GRE с failures не заменяет последний полный список. Первоначальный partial остаётся unknown; missing status не становится down/degraded. Для отсутствующей подписи сервера используется ID с объяснением зависимости. BGP API не сообщает completeness — это прямо указано. -- 7 основных browser сценариев (3 primary, 3 catalogs и права BGP/GRE), 2 source ABA (late success/error), typecheck без incremental, lint и ReUI Frame audit пройдены. Первые test assertions на абсолютное количество GET скорректированы: initial source/StrictMode допускают отменённые GET; manual refresh проверяется относительно baseline. Общий dashboard reader отдельно обращается к /servers — его права не приняты этим блоком. +- 7 основных browser сценариев (3 primary, 3 catalogs и права BGP/GRE), 2 source ABA (late success/error), typecheck без incremental, lint и ReUI Frame audit пройдены. Первые test assertions на абсолютное количество GET скорректированы: initial source/StrictMode допускают отменённые GET; manual refresh проверяется относительно baseline. Первоначальная отметка права теста в 526f305 была преждевременной: общий dashboard reader обращается к /servers и /filters/gre-tunnels. Скорректированный browser test подтверждает отсутствие BGP GET и новых сетевых GET при retry запрещённых каталогов Alerts; он прошёл отдельно. Права общего dashboard reader не приняты этим блоком и требуют исправления перед этапом 12. - Переиспользован установленный OpsPanel/Frame, добавлен min-h-0 scroll chain и responsive padding. Контракт компонента не менялся. Реальные RouterOS/PG/Telegram не вызывались; весь Alerts ещё не принят. - Следующий точный шаг 11Б.4.3.2: Telegram dirty draft/selective save/test/rights/unknown review/source; затем правила, GET/revision/outbox audit и оставшиеся 11Б/12. diff --git a/tests/e2e/alerts-targets.spec.ts b/tests/e2e/alerts-targets.spec.ts index 508b0eff..859d7f1b 100644 --- a/tests/e2e/alerts-targets.spec.ts +++ b/tests/e2e/alerts-targets.spec.ts @@ -23,8 +23,8 @@ test("Alerts catalogs: initial partial GRE remains unknown",async({page})=>{awai test("Alerts catalogs: alerts read permission does not grant network catalog access",async({page})=>{ const token="header."+Buffer.from(JSON.stringify({sub:"fixture",apps:["mm"],permissions:["mm:alerts:read"],exp:Math.floor(Date.now()/1000)+3600})).toString("base64url")+".fixture" await page.addInitScript(value=>localStorage.setItem("mmapp_token",value),token) - let calls=0;await setup(page,(r,path)=>{if(["/api/bgp/sessions","/api/filters/gre-tunnels"].includes(path))calls++;return r.fulfill({json:[]})},true) + const calls:string[]=[];await setup(page,(r,path)=>{if(["/api/bgp/sessions","/api/filters/gre-tunnels"].includes(path))calls.push(path);return r.fulfill({json:[]})},true) await expect(page.getByText("Всего: 0",{exact:true})).toBeVisible() for(const label of ["BGP","Серверы","GRE"])await expect(page.getByRole("region",{name:"Каталог "+label,exact:true}).getByRole("alert")).toHaveText("Нет доступа к каталогу") - expect(calls).toBe(0) + const baseline=[...calls];for(const label of ["BGP","Серверы","GRE"])await page.getByRole("button",{name:"Обновить каталог "+label,exact:true}).click();expect(calls).toEqual(baseline);expect(calls).not.toContain("/api/bgp/sessions") })