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,30 @@
|
||||
import { expect, test } from "@playwright/test";
|
||||
|
||||
import { mockLogin, mockObjektliste } from "./mockApi";
|
||||
|
||||
test("erfolgreicher Login führt zur Objektliste", async ({ page }) => {
|
||||
await mockLogin(page);
|
||||
await mockObjektliste(page);
|
||||
|
||||
await page.goto("/login");
|
||||
await page.getByLabel("Login").fill("mitarbeiter1");
|
||||
await page.getByLabel("Passwort").fill("test-passwort-123");
|
||||
await page.getByRole("button", { name: "Anmelden" }).click();
|
||||
|
||||
await expect(page).toHaveURL(/\/objekte$/);
|
||||
await expect(page.getByRole("heading", { name: "Objekte" })).toBeVisible();
|
||||
});
|
||||
|
||||
test("falsches Passwort zeigt Fehlermeldung, bleibt auf Login", async ({ page }) => {
|
||||
await page.route("**/api/v1/auth/login", (route) =>
|
||||
route.fulfill({ status: 401, json: { detail: "Login oder Passwort falsch" } })
|
||||
);
|
||||
|
||||
await page.goto("/login");
|
||||
await page.getByLabel("Login").fill("mitarbeiter1");
|
||||
await page.getByLabel("Passwort").fill("falsch");
|
||||
await page.getByRole("button", { name: "Anmelden" }).click();
|
||||
|
||||
await expect(page.getByText("Login oder Passwort falsch")).toBeVisible();
|
||||
await expect(page).toHaveURL(/\/login$/);
|
||||
});
|
||||
Reference in New Issue
Block a user