M44: harden release integrity and assurance
This commit is contained in:
@@ -0,0 +1,52 @@
|
||||
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([]);
|
||||
});
|
||||
Reference in New Issue
Block a user