Files
MABEA/frontend/e2e/fortschritt.spec.ts
T
patrickandClaude Sonnet 5 e0cbf4b8de
CI / backend-tests (push) Successful in 1m6s
CI / frontend-build (push) Successful in 18s
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
2026-09-04 18:08:08 +02:00

42 lines
1.3 KiB
TypeScript

import { expect, test } from "@playwright/test";
import {
login,
mockKontrolleStart,
mockKontrollGrundgeruest,
mockLogin,
TEST_KONTROLLE,
TEST_OBJEKT,
TEST_POSITION,
} from "./mockApi";
test("Fortschrittsanzeige zählt bestätigte Positionen hoch", async ({ page }) => {
await mockLogin(page);
await mockKontrollGrundgeruest(page);
await mockKontrolleStart(page);
await page.route(`**/api/v1/kontrollen/${TEST_KONTROLLE.id}/positionen/${TEST_POSITION.material_id}`, (route) =>
route.fulfill({
json: {
id: "kp-1",
kontrolle_id: TEST_KONTROLLE.id,
material_id: TEST_POSITION.material_id,
sollmenge_snapshot: TEST_POSITION.sollmenge_effektiv,
istmenge_erfasst: TEST_POSITION.sollmenge_effektiv,
abweichung: false,
fehlbestand_id: null,
},
})
);
await login(page);
await page.goto(`/objekte/${TEST_OBJEKT.id}/kontrolle`);
await expect(page.getByText("0 von 1 Positionen bestätigt")).toBeVisible();
// Eingabe entspricht bereits der Sollmenge -> Button zeigt "Passt".
await page.getByRole("button", { name: "Passt" }).click();
await expect(page.getByText("1 von 1 Positionen bestätigt")).toBeVisible({ timeout: 5000 });
await expect(page.getByRole("button", { name: "Kontrolle abschließen" })).toBeEnabled();
});