diff --git a/frontend/e2e/nav.spec.ts b/frontend/e2e/nav.spec.ts index 4427e1bc..5637be7d 100644 --- a/frontend/e2e/nav.spec.ts +++ b/frontend/e2e/nav.spec.ts @@ -6,18 +6,12 @@ import { openApp } from "./helpers"; // this exercises is precisely what the module-registry refactor replaces. test.describe("page switching", () => { // Core + admin modules (the E2E account is an admin, matching the real primary user), so this - // also exercises the render ternary's admin branches (scheduler / config / users / audit). - const RAIL = [ - "channels", - "playlists", - "stats", - "scheduler", - "config", - "users", - "audit", - "settings", - "feed", - ]; + // also exercises the admin pages. Since E31 those sit behind ONE rail row ("Administration", + // `nav-admin`) that opens a panel of them — the spec still listed them as rail rows of their own, + // and it failed on every run from E31 to E32 without anyone seeing it, because e2e was in no + // required gate (it is now part of `release`). + const RAIL = ["channels", "playlists", "stats", "settings", "feed"]; + const ADMIN = ["scheduler", "config", "users", "audit"]; test("each rail item activates its page", async ({ page }) => { await openApp(page); @@ -27,6 +21,22 @@ test.describe("page switching", () => { } }); + test("each admin page opens from the Administration panel and marks it current", async ({ + page, + }) => { + await openApp(page); + for (const id of ADMIN) { + await page.getByTestId("nav-admin").click(); + await page.getByTestId(`nav-admin-${id}`).click(); + // The panel closes on a pick; the group row carries the current page… + await expect(page.getByTestId("nav-admin")).toHaveAttribute("aria-current", "page"); + // …and, reopened, the panel marks which one. + await page.getByTestId("nav-admin").click(); + await expect(page.getByTestId(`nav-admin-${id}`)).toHaveAttribute("aria-current", "page"); + await page.keyboard.press("Escape"); + } + }); + test("browser Back steps through visited pages", async ({ page }) => { await openApp(page);