Files
MobilityOps/frontend/e2e/privacy.spec.ts
T

30 lines
1.5 KiB
TypeScript

import { expect, test, type APIRequestContext, type Page } from "@playwright/test";
async function resetAndLogin(request: APIRequestContext, page: Page) {
await request.post("/api/v1/demo/login", { data: { role: "operations_manager" } });
await request.post("/api/v1/demo/reset");
await page.goto("/login");
await page.getByRole("button", { name: "Verken als Operationsmanager" }).click();
}
test("privacy centre reports policy and produces an audited CSV export", async ({ page, request }) => {
await resetAndLogin(request, page);
await page.goto("/privacy");
await expect(page.getByRole("heading", { name: "Privacybeheer" })).toBeVisible();
await expect(page.getByText("30 dagen")).toBeVisible();
const downloadPromise = page.waitForEvent("download");
await page.getByRole("link", { name: "Audit CSV downloaden" }).click();
const download = await downloadPromise;
expect(download.suggestedFilename()).toBe("mobilityops-audit.csv");
});
test("privacy centre refuses anonymisation of a customer with an active booking", async ({ page, request }) => {
await resetAndLogin(request, page);
await page.goto("/privacy");
await page.getByLabel("Klantreferentie").first().fill("CUS-0042");
await page.getByLabel("Gemotiveerde reden").fill("Gevalideerd verzoek van de betrokkene");
await page.getByLabel(/Typ CUS-0042 ter bevestiging/).fill("CUS-0042");
await page.getByRole("button", { name: "Definitief anonimiseren" }).click();
await expect(page.getByText(/kon niet worden uitgevoerd/)).toBeVisible();
});