26 lines
960 B
TypeScript
26 lines
960 B
TypeScript
|
|
import { expect, test } from "@playwright/test";
|
||
|
|
import { signInAs } from "./fixtures/auth";
|
||
|
|
|
||
|
|
test("admin signs in and reaches each admin section", async ({ page }) => {
|
||
|
|
await signInAs(page, "admin", "/admin");
|
||
|
|
await page.goto("/admin");
|
||
|
|
await expect(page).toHaveURL(/\/admin\/bookings$/);
|
||
|
|
|
||
|
|
for (const [label, urlRe] of [
|
||
|
|
["bookings", /\/admin\/bookings/],
|
||
|
|
["services", /\/admin\/services/],
|
||
|
|
["rooms", /\/admin\/rooms/],
|
||
|
|
["therapists", /\/admin\/therapists/],
|
||
|
|
] as const) {
|
||
|
|
await page.getByRole("link", { name: new RegExp(`^${label}$`, "i") }).click();
|
||
|
|
await expect(page).toHaveURL(urlRe);
|
||
|
|
await expect(page.getByRole("heading", { level: 1 })).toBeVisible();
|
||
|
|
}
|
||
|
|
});
|
||
|
|
|
||
|
|
test("non-admin (therapist) hitting /admin sees the deny screen", async ({ page }) => {
|
||
|
|
await signInAs(page, "therapist", "/admin");
|
||
|
|
await page.goto("/admin");
|
||
|
|
await expect(page.getByRole("heading", { name: /not authorized/i })).toBeVisible();
|
||
|
|
});
|