1import { expect, test as setup } from "@playwright/test";
2import { Api } from "./helpers/api";
3import { skipGettingStarted } from "./helpers/fixtures";
4import { seedSite } from "./helpers/seed";
5import { siteHeader } from "./helpers/site";
6import {
7 PASSWORD,
8 emailOf,
9 storageStateOf,
10 type PersonaKey,
11} from "./helpers/personas";
12
13const ADMIN_PASSWORD = process.env.ADMIN_PASSWORD || "admin";
14const PERSONAS: PersonaKey[] = [
15 "admin",
16 "manager",
17 "agent",
18 "agent2",
19 "customer",
20 "customerManager",
21];
22
23setup("seed site and log every persona in", async ({ browser, baseURL }) => {
24 const admin = await Api.login(baseURL!, "Administrator", ADMIN_PASSWORD);
25 await seedSite(admin);
26
27 for (const key of PERSONAS) {
28 const context = await browser.newContext({
29 baseURL,
30 extraHTTPHeaders: siteHeader(),
31 });
32 const password = key === "admin" ? ADMIN_PASSWORD : PASSWORD;
33 const response = await context.request.post("/api/method/login", {
34 form: { usr: emailOf(key), pwd: password },
35 });
36 expect(response.ok(), `login as ${key}`).toBeTruthy();
37 const page = await context.newPage();
38 await skipGettingStarted(page, emailOf(key));
39 await page.goto("/api/method/ping");
40 await context.storageState({ path: storageStateOf(key) });
41 await context.close();
42 }
43});
44
45