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,41 @@
|
||||
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();
|
||||
});
|
||||
Reference in New Issue
Block a user