1import { expect, test, usePersona } from "../helpers/fixtures";
2import { PASSWORD, personas } from "../helpers/personas";
3
4test.describe("logged out", () => {
5 test.use({ storageState: { cookies: [], origins: [] } });
6
7 test("login returns to the requested page, then logs out", async ({ page }) => {
8 await page.goto("/opendesk/tickets");
9 await expect(page).toHaveURL(/\/login\?redirect-to=\/opendesk\/tickets/);
10
11 await page.getByRole("textbox", { name: "Email" }).fill(personas.agent.email);
12 await page.getByRole("textbox", { name: "Password" }).fill(PASSWORD);
13 await page.getByRole("button", { name: "Continue" }).click();
14
15 await expect(page).toHaveURL(/\/opendesk\/tickets$/);
16 await expect(page.getByRole("button", { name: "Filter", exact: true })).toBeVisible();
17
18 await page.getByRole("button", { name: /^Opendesk / }).click();
19 await page.getByRole("menuitem", { name: "Log out" }).click();
20 await expect(page).toHaveURL(/\/login/);
21 });
22});
23
24test.describe("agent", () => {
25 usePersona("agent");
26
27 test("lands on home", async ({ page }) => {
28 await page.goto("/opendesk");
29 await expect(page).toHaveURL(/\/opendesk\/home$/);
30 });
31});
32
33test.describe("customer", () => {
34 usePersona("customer");
35
36 test("lands on the portal and is kept out of agent routes", async ({ page, ticket }) => {
37 await page.goto("/opendesk");
38 await expect(page).toHaveURL(/\/help\/?$/);
39 await expect(page.getByRole("button", { name: "Customers" })).toHaveCount(0);
40
41 await page.goto(`/opendesk/tickets/${ticket.name}`);
42 await expect(page).toHaveURL(new RegExp(`/help/my-tickets/${ticket.name}$`));
43 });
44});
45