M36: deepen operational and mobile UX

This commit is contained in:
NuklearRabbit
2026-08-10 22:53:45 +02:00
parent 809ba0ddcc
commit 9dfbd7c4bf
25 changed files with 341 additions and 60 deletions
+22
View File
@@ -86,6 +86,28 @@ test("key demo pages load without console errors", async ({ page }) => {
expect(errors, `Unexpected console errors: ${errors.join("\n")}`).toEqual([]);
});
test("mobile quality workbench keeps filters compact and bulk actions reachable", async ({ page }) => {
await page.setViewportSize({ width: 390, height: 844 });
await page.goto("/login");
await page.getByRole("button", { name: "Verken als Operationsmanager" }).click();
await expect(page).toHaveURL(/\/dashboard$/);
await page.goto("/data-quality?status=open");
const filterButton = page.getByRole("button", { name: /Filters/ });
await expect(filterButton).toBeVisible();
await expect(page.locator("#quality-filters")).toBeHidden();
await filterButton.click();
await expect(page.locator("#quality-filters")).toBeVisible();
await page.getByRole("button", { name: "Zichtbare problemen selecteren" }).click();
await expect(page.getByRole("region", { name: "Geselecteerde werkvoorraad bijwerken" })).toBeVisible();
const checked = await page.locator(".quality-table tbody input[type=checkbox]:checked").count();
expect(checked).toBeGreaterThan(1);
expect(await page.evaluate(() => document.documentElement.scrollWidth)).toBeLessThanOrEqual(
await page.evaluate(() => document.documentElement.clientWidth + 1),
);
});
test("status-recommendation panel is fully keyboard operable, respects reduced motion, and never signals status by colour alone", async ({
page,
request,
+6 -1
View File
@@ -28,7 +28,12 @@ test("operator can create and cancel a booking through the UI", async ({ page, r
await page.getByRole("button", { name: "Boeking aanmaken" }).click();
await expect(page).toHaveURL(/\/bookings\/BK-/);
await expect(page.getByText("gereserveerd", { exact: true })).toBeVisible();
await page.getByLabel("Reden").fill("Klant annuleert de geplande rit");
await expect(page.getByRole("heading", { name: "Vereisten controleren" })).toBeVisible();
await expect(page.getByRole("heading", { name: "Voertuig uitchecken" })).toHaveCount(0);
await page.getByLabel("Controlebewijs").fill("Rijbewijs en huurvoorwaarden gecontroleerd");
await page.getByRole("button", { name: "Vereisten bevestigen" }).click();
await expect(page.getByRole("heading", { name: "Voertuig uitchecken" })).toBeVisible();
await page.getByLabel("Reden", { exact: true }).fill("Klant annuleert de geplande rit");
await page.getByRole("button", { name: "Annulering bevestigen" }).click();
await expect(page.getByText("geannuleerd", { exact: true })).toBeVisible();
});