Lange Zeilen unter „Letzte Deployments“ sprengten die Gitterspalte; der mobile Browser zoomte heraus, die Navigationsschublade verdeckte dann „Abmelden“. keinQuerscrollen misst jetzt gegen die eingestellte Breite – gegen innerWidth gemessen fiel das Herauszoomen nicht auf. Refs #023 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
31 lines
1.2 KiB
TypeScript
31 lines
1.2 KiB
TypeScript
import { expect, type Page } from "@playwright/test";
|
||
|
||
export const BENUTZER = process.env["E2E_BENUTZER"] ?? "admin";
|
||
export const PASSWORT = process.env["E2E_PASSWORT"] ?? "proxdeploy-dev-admin";
|
||
|
||
export async function anmelden(page: Page, ziel = "/") {
|
||
await page.goto(ziel);
|
||
await expect(page).toHaveURL(/\/anmelden/);
|
||
await page.getByLabel("Benutzername").fill(BENUTZER);
|
||
await page.getByLabel("Passwort").fill(PASSWORT);
|
||
await page.getByRole("button", { name: "Anmelden" }).click();
|
||
await expect(page).not.toHaveURL(/\/anmelden/);
|
||
}
|
||
|
||
/**
|
||
* Gegen die eingestellte Bildschirmbreite messen, nicht gegen innerWidth: bei mobiler Emulation
|
||
* zoomt der Browser bei zu breitem Inhalt heraus, und innerWidth wächst einfach mit.
|
||
*/
|
||
export async function keinQuerscrollen(page: Page) {
|
||
const breite = page.viewportSize()!.width;
|
||
const inhalt = await page.evaluate(() => ({
|
||
scroll: document.documentElement.scrollWidth,
|
||
fenster: window.innerWidth,
|
||
}));
|
||
expect(inhalt.fenster, "Der Browser hat herausgezoomt – etwas ist breiter als der Bildschirm").toBe(breite);
|
||
expect(inhalt.scroll).toBeLessThanOrEqual(breite);
|
||
}
|
||
|
||
/** Mit dem Präfix zz-e2e lassen sich Testdaten erkennen und aufräumen. */
|
||
export const E2E_PRAEFIX = "zz-e2e";
|