import { expect, test } from "@playwright/test"; test.describe.configure({ mode: "serial" }); test("demo entry screen names the fictional org and never shows a password", async ({ page }) => { await page.goto("/login"); await expect(page.getByText(/Northstar Mobility/)).toBeVisible(); await expect(page.getByText(/Synthetische demo/)).toBeVisible(); await expect(page.getByRole("button", { name: "Start begeleide demo" })).toBeVisible(); await expect(page.getByRole("button", { name: "Verken als Operations Manager" })).toBeVisible(); await expect(page.getByRole("button", { name: "Verken als Rental Employee" })).toBeVisible(); await expect(page.locator('input[type="password"]')).toHaveCount(0); }); test("start guided demo logs in as Operations Manager and marks the guide to start", async ({ page }) => { await page.goto("/login"); await page.getByRole("button", { name: "Start begeleide demo" }).click(); await expect(page).toHaveURL(/\/dashboard\?guide=start$/); await expect(page.getByText("Amelie De Ridder")).toBeVisible(); }); test("permanent demo badge shows a popover with last reset info and a working About link", async ({ page }) => { await page.goto("/login"); await page.getByRole("button", { name: "Verken als Operations Manager" }).click(); await expect(page).toHaveURL(/\/dashboard$/); const trigger = page.getByRole("button", { name: /Synthetische demo/ }); await expect(trigger).toBeVisible(); await trigger.click(); await expect(page.getByRole("dialog", { name: "Over deze demo-omgeving" })).toBeVisible(); await expect(page.getByText(/Laatste reset:/)).toBeVisible(); await page.getByRole("link", { name: /Over deze demo/ }).click(); await expect(page).toHaveURL(/\/about$/); await expect(page.getByRole("heading", { name: "Wat MobilityOps wel en niet is" })).toBeVisible(); await expect(page.getByText("Northstar Mobility").first()).toBeVisible(); await expect(page.getByText("Demomodus — lokale kennisprovider")).toBeVisible(); await expect(page.getByText("Niet gekoppeld").first()).toBeVisible(); }); test("badge popover closes on Escape and outside click", async ({ page }) => { await page.goto("/login"); await page.getByRole("button", { name: "Verken als Operations Manager" }).click(); await expect(page).toHaveURL(/\/dashboard$/); const trigger = page.getByRole("button", { name: /Synthetische demo/ }); await trigger.click(); await expect(page.getByRole("dialog")).toBeVisible(); await page.keyboard.press("Escape"); await expect(page.getByRole("dialog")).toBeHidden(); await trigger.click(); await expect(page.getByRole("dialog")).toBeVisible(); await page.mouse.click(10, 10); await expect(page.getByRole("dialog")).toBeHidden(); });