test(e2e): the nav spec opens the admin pages from their rail panel

E31 put the admin pages behind one rail row ("Administration", nav-admin)
that opens a panel. The spec still clicked nav-scheduler, nav-config,
nav-users and nav-audit as rows of their own, and timed out on every engine.
That went unseen from E31 to now because e2e ran in no required gate, the
exact hole E32 closes: the first run of the new release e2e step found it.

The rail test keeps the rail rows. A new test opens each admin page from the
panel and checks that the group row is current and that the reopened panel
marks the page. Seen red before the fix; the whole suite then passes, 52/52.
This commit is contained in:
2026-10-03 17:41:26 +02:00
parent 783f6408f9
commit 614d728561
+22 -12
View File
@@ -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);