Make the scroll-lock test able to fail, and name the tell a broken chain actually shows
CI / full-gate (push) Successful in 2m49s

This commit is contained in:
2026-09-09 15:01:15 +02:00
parent 9fbda833d5
commit 09d86eddad
3 changed files with 13 additions and 5 deletions
+2 -1
View File
@@ -207,6 +207,7 @@ test.describe.serial("authenticated admin journey", () => {
test("plugin page: a filled page scrolls its table, not the document, and the header stays put", async () => {
// The region is the viewport less ~185px of chrome, so this leaves ~75px: enough that the 3-row
// fixture overflows it by half its height, and enough to hold the header a row scrolls under.
const original = page.viewportSize();
await page.setViewportSize({ width: 1280, height: 260 });
await page.goto("/scheduling/shifts");
@@ -235,7 +236,7 @@ test.describe.serial("authenticated admin journey", () => {
await expect(page.locator("tbody tr").last()).toBeInViewport();
expect(await headTop(), "the header sticks to a scrollport that moves").toBe(before);
// The journey shares one page; leaving it short would hand the next test a window it never chose.
await page.setViewportSize({ width: 1280, height: 800 });
if (original) await page.setViewportSize(original);
});
test("plugin settings: the screen names the variable that sets each declared key", async () => {
+9 -2
View File
@@ -57,9 +57,16 @@ for (const [name, path, tail] of [
if (width <= 860) {
await page.locator(".hamburger").click(); // the label is the control; the checkbox takes no pointer
await expect(page.locator("#nav-toggle")).toBeChecked();
// The lock is one CSS rule, and whether a key press moves the page with the nav open turns
// out to differ by engine — so pin the rule itself, then the behaviour it buys.
expect(await page.evaluate(() => getComputedStyle(document.body).overflow)).toBe("hidden");
// Both directions: opening the nav may leave the page at either end, and a key press toward
// the end it already sits at cannot move it whether the lock holds or not.
const before = await page.evaluate(() => window.scrollY);
await page.keyboard.press("Home");
expect(await page.evaluate(() => window.scrollY), "a key press cannot scroll the page while the nav is open").toBe(before);
for (const key of ["End", "Home"]) {
await page.keyboard.press(key);
expect(await page.evaluate(() => window.scrollY), key + " cannot scroll the page while the nav is open").toBe(before);
}
}
});
}