test(e2e): distinguish notification caption from live count
CI and Deploy / deploy (push) Blocked by required conditions
CI and Deploy / test (push) Failing after 24m27s

This commit is contained in:
cesnimda
2026-10-20 09:45:39 +02:00
parent 9234d0af15
commit cc7977131a
2 changed files with 10 additions and 1 deletions
@@ -0,0 +1,9 @@
# Notification caption fixture — 20 October 2026
The full Linux diagnostic found four ordinary shell failures, each repeated by the existing CI retry: the loose `getByText(t.notificationsUnread)` query matched both the visible localized Unread caption and the shell's unread-count live announcement. Both are intentional accessibility/UI content. The fixture intended to assert the exact caption.
The locator now uses `{ exact: true }`. It still requires the visible translated caption, retains the live status announcement and preserves every notification mark-read/dismiss assertion and axe scan. No product behavior changes. Browser inventory stays 331.
All 20 existing shell-readiness cases pass without skips/flaky/retries at 07:42:01–07:44:53 UTC, across English/Bokmål and light/dark, with browser TypeScript passing. Whitespace checks pass. Full Linux acceptance remains required for the new main candidate; this focused result is not deployment success.
Run 828 completed its 331-case browser lane with 274 passing and 57 failing cases. All failed cases are accounted for by the five investigated causes: 35 shared-login 429, 15 Python-wrapper absence, four caption locator collisions, two stale route expectations and one keyboard-scroll axe violation. Original retries and failure artifacts remain retained. Subsequent corrected-run results must determine whether these repairs are sufficient.
+1 -1
View File
@@ -268,7 +268,7 @@ for (const mode of ["light", "dark"] as const) for (const language of ["en", "nb
? route.fulfill({ status: 204, body: "" }) : route.continue()); ? route.fulfill({ status: 204, body: "" }) : route.continue());
await page.getByRole("button", { name: t.notifications, exact: true }).click(); await page.getByRole("button", { name: t.notifications, exact: true }).click();
await expect(page.getByText("CV export failed")).toBeVisible(); await expect(page.getByText("CV export failed")).toBeVisible();
await expect(page.getByText(t.notificationsUnread)).toBeVisible(); await expect(page.getByText(t.notificationsUnread, { exact: true })).toBeVisible();
await capture(page, info, `utility-notifications-${suffix}`); await capture(page, info, `utility-notifications-${suffix}`);
await scan(page, info, `utility-notifications-${suffix}`, ".MuiPopover-paper"); await scan(page, info, `utility-notifications-${suffix}`, ".MuiPopover-paper");
await page.getByRole("button", { name: t.notificationsMarkRead }).click(); await page.getByRole("button", { name: t.notificationsMarkRead }).click();