Playwright-E2E-Tests für die PWA (Login, Sperrlogik, Fortschritt, Offline-Queue)
Läuft komplett gegen gemockten Backend (e2e/mockApi.ts, page.route) - kein echtes Backend/DB nötig, playwright.config.ts startet npm run dev automatisch. Deckt Login-Erfolg/-Fehler, 409-Objektsperre mit Übernahme, hochzählende Fortschrittsanzeige und Offline-Queue-Verhalten (kein Request während offline, Sync bei Reconnect) ab. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01CVgbozhYmuEhiEJHffRXCV
This commit is contained in:
@@ -0,0 +1,34 @@
|
||||
import { expect, test } from "@playwright/test";
|
||||
|
||||
import { login, mockKontrollGrundgeruest, mockLogin, TEST_KONTROLLE, TEST_OBJEKT } from "./mockApi";
|
||||
|
||||
test("Objekt-Sperre zeigt Übernahme-Dialog, Übernehmen startet neue Kontrolle", async ({ page }) => {
|
||||
await mockLogin(page);
|
||||
await mockKontrollGrundgeruest(page);
|
||||
|
||||
let uebernommen = false;
|
||||
await page.route("**/api/v1/objekte/*/kontrollen", async (route) => {
|
||||
const body = route.request().postDataJSON() as { uebernehmen: boolean };
|
||||
if (!body.uebernehmen) {
|
||||
await route.fulfill({
|
||||
status: 409,
|
||||
json: { benutzer: "Kollege Müller", seit: "vor 12 Minuten" },
|
||||
});
|
||||
return;
|
||||
}
|
||||
uebernommen = true;
|
||||
await route.fulfill({ status: 201, json: TEST_KONTROLLE });
|
||||
});
|
||||
|
||||
await login(page);
|
||||
await page.goto(`/objekte/${TEST_OBJEKT.id}/kontrolle`);
|
||||
|
||||
await expect(page.getByRole("heading", { name: "Objekt gesperrt" })).toBeVisible();
|
||||
await expect(page.getByText("Kollege Müller")).toBeVisible();
|
||||
await expect(page.getByText("vor 12 Minuten")).toBeVisible();
|
||||
|
||||
await page.getByRole("button", { name: "Trotzdem übernehmen" }).click();
|
||||
|
||||
await expect(page.getByRole("heading", { name: "Objekt gesperrt" })).not.toBeVisible();
|
||||
expect(uebernommen).toBe(true);
|
||||
});
|
||||
Reference in New Issue
Block a user