import { expect, test } from "@playwright/test"; import { anmelden, E2E_PRAEFIX, keinQuerscrollen } from "./helfer"; test("Admin legt einen Benutzer an, stuft ihn hoch, sperrt ihn; das Audit-Log zeigt es", async ({ page }) => { const name = `${E2E_PRAEFIX}-benutzer-${test.info().project.name}`; await anmelden(page, "/einstellungen"); const vorhanden = (await (await page.request.get("/api/v1/benutzer")).json()) as Array<{ id: string; benutzername: string; }>; const alt = vorhanden.find((b) => b.benutzername === name); if (alt) { // Vom letzten Lauf: zurück auf Operator und aktiv. await page.request.patch(`/api/v1/benutzer/${alt.id}`, { data: { rolle: "OPERATOR", aktiv: true } }); await page.reload(); } else { await page.locator("#b-name").fill(name); await page.locator("#b-anzeige").fill("E2E Test"); await page.locator("#b-passwort").fill("e2e-passwort-lang"); await page.getByRole("button", { name: "Benutzer anlegen" }).click(); await expect(page.getByText(`${name} angelegt.`)).toBeVisible(); } await keinQuerscrollen(page); await page.getByLabel(`Rolle von ${name}`).selectOption("ADMIN"); await expect(page.getByText(`${name} ist jetzt Admin.`)).toBeVisible(); await page.getByRole("button", { name: `${name} sperren` }).click(); await expect(page.getByText(`${name} gesperrt – Sitzungen beendet.`)).toBeVisible(); await expect(page.getByRole("button", { name: `${name} entsperren` })).toBeVisible(); // Am Handy steckt die Navigation in der Schublade. const menue = page.getByRole("button", { name: "Navigation öffnen" }); if (await menue.isVisible()) await menue.click(); await page.getByRole("link", { name: "Audit-Log" }).filter({ visible: true }).click(); await expect(page).toHaveURL(/\/protokoll/); await page.getByLabel("Suche").fill(`benutzer:${name}`); await page.getByRole("button", { name: "Filtern" }).click(); await expect(page).toHaveURL(new RegExp(`suche=benutzer%3A${name}`)); await expect(page.getByText("Benutzer gesperrt").first()).toBeVisible(); await keinQuerscrollen(page); });