Files
MobilityOps/frontend/e2e-live/smoke.spec.ts
T
NuklearRabbit acd8b82b09
MobilityOps acceptance / backend (push) Failing after 20s
MobilityOps acceptance / frontend (push) Successful in 26s
MobilityOps acceptance / e2e (push) Skipped
M44: harden release integrity and assurance
2026-08-21 18:32:02 +02:00

53 lines
1.9 KiB
TypeScript

import { expect, test } from "@playwright/test";
test.describe.configure({ mode: "serial" });
test("public health and HTTPS-facing shell are available", async ({ page, request, baseURL }) => {
const readiness = await request.get("/health/ready");
expect(readiness.ok()).toBeTruthy();
expect(await readiness.json()).toMatchObject({ status: "ready", database: "up" });
await page.goto("/login");
await expect(page).toHaveTitle(/Fleet Ops/);
await expect(page.getByRole("button", { name: "Verken als Operationsmanager" })).toBeVisible();
if (baseURL?.startsWith("https://")) {
expect(page.url()).toMatch(/^https:\/\//);
}
});
test("non-destructive operator canary covers routes and grounded knowledge", async ({ page }) => {
const pageErrors: string[] = [];
const serverErrors: string[] = [];
page.on("pageerror", (error) => pageErrors.push(error.message));
page.on("response", (response) => {
if (response.status() >= 500) serverErrors.push(`${response.status()} ${response.url()}`);
});
await page.goto("/login");
await page.getByRole("button", { name: "Verken als Operationsmanager" }).click();
await expect(page).toHaveURL(/\/dashboard$/);
for (const [path, heading] of [
["/vehicles", "Wagenpark"],
["/bookings", "Boekingen"],
["/data-quality", "Datakwaliteit"],
["/automation", "Integratiebeheer"],
["/audit", "Auditgeschiedenis"],
] as const) {
await page.goto(path);
await expect(page.getByRole("heading", { name: heading }).first()).toBeVisible();
}
await page.goto("/knowledge");
await page
.getByRole("textbox", { name: "Vraag" })
.fill("Wat moet ik doen wanneer een voertuig terugkomt met schade?");
await page.getByRole("button", { name: "Vraag stellen" }).click();
await expect(page.getByText("Onderbouwd met geciteerde procedures")).toBeVisible({
timeout: 20_000,
});
expect(pageErrors).toEqual([]);
expect(serverErrors).toEqual([]);
});