sendou.ink/e2e/tournament-staff.spec.ts
2026-01-03 19:25:38 +02:00

142 lines
3.2 KiB
TypeScript

import { NZAP_TEST_ID } from "~/db/seed/constants";
import { ADMIN_ID } from "~/features/admin/admin-constants";
import {
expect,
impersonate,
isNotVisible,
modalClickConfirmButton,
navigate,
seed,
selectUser,
startBracket,
submit,
test,
} from "~/utils/playwright";
import {
tournamentAdminPage,
tournamentBracketsPage,
tournamentMatchPage,
} from "~/utils/urls";
const TOURNAMENT_ID = 2;
test.describe("Tournament staff", () => {
test("gives and takes away staff role", async ({ page }) => {
await seed(page);
await impersonate(page, ADMIN_ID);
await navigate({
page,
url: tournamentAdminPage(TOURNAMENT_ID),
});
await selectUser({
page,
userName: "N-ZAP",
labelName: "New staffer",
});
await submit(page, "add-staff-button");
await expect(page.getByTestId(`staff-id-${NZAP_TEST_ID}`)).toBeVisible();
await page.getByTestId("remove-staff-button").click();
await modalClickConfirmButton(page);
await isNotVisible(page.getByTestId(`staff-id-${NZAP_TEST_ID}`));
});
test("gives organizer role which allows another user to TO", async ({
page,
}) => {
await seed(page);
await impersonate(page, NZAP_TEST_ID);
await navigate({
page,
url: tournamentAdminPage(TOURNAMENT_ID),
});
// check that got redirected since has no access
await page.waitForURL("**/register");
await impersonate(page, ADMIN_ID);
await navigate({
page,
url: tournamentAdminPage(TOURNAMENT_ID),
});
await selectUser({
page,
userName: "N-ZAP",
labelName: "New staffer",
});
await submit(page, "add-staff-button");
await impersonate(page, NZAP_TEST_ID);
await navigate({
page,
url: tournamentAdminPage(TOURNAMENT_ID),
});
// organizer has no perms to add staff
await isNotVisible(page.getByTestId("add-staff-button"));
await page.getByLabel("Action").selectOption("CHECK_IN");
await page.getByLabel("Team").selectOption("101");
await submit(page);
await navigate({
page,
url: tournamentBracketsPage({ tournamentId: TOURNAMENT_ID }),
});
await expect(page.getByTestId("finalize-bracket-button")).toBeVisible();
await expect(page.getByText("Chimera")).toBeVisible();
});
test("gives staff role which allows another user to see limited info", async ({
page,
}) => {
await startBracket(page);
await impersonate(page, NZAP_TEST_ID);
await navigate({
page,
url: tournamentMatchPage({ tournamentId: TOURNAMENT_ID, matchId: 2 }),
});
const roomPassSelector = page.getByTestId("room-pass");
await isNotVisible(roomPassSelector);
await impersonate(page, ADMIN_ID);
await navigate({
page,
url: tournamentAdminPage(TOURNAMENT_ID),
});
await selectUser({
page,
userName: "N-ZAP",
labelName: "New staffer",
});
await page.getByLabel("Role").selectOption("STREAMER");
await submit(page, "add-staff-button");
await expect(page.getByTestId(`staff-id-${NZAP_TEST_ID}`)).toContainText(
"streamer",
);
await impersonate(page, NZAP_TEST_ID);
await navigate({
page,
url: tournamentMatchPage({ tournamentId: TOURNAMENT_ID, matchId: 2 }),
});
await expect(roomPassSelector).toBeVisible();
await expect(page.getByTestId("chat-tab")).toBeVisible();
});
});