38 lines
1.8 KiB
TypeScript
38 lines
1.8 KiB
TypeScript
import { expect, test } from "@playwright/test";
|
|
|
|
test("calendar CRUD happy path", async ({ page }) => {
|
|
const suffix = Date.now().toString();
|
|
const calendarName = `E2E Calendar ${suffix}`;
|
|
const renamedCalendarName = `E2E Renamed ${suffix}`;
|
|
const eventTitle = `E2E Event ${suffix}`;
|
|
const editedTitle = `E2E Edited ${suffix}`;
|
|
|
|
await page.goto("/calendar");
|
|
await expect(page.getByRole("heading", { name: "Calendar" })).toBeVisible();
|
|
|
|
await page.getByLabel("Name", { exact: true }).fill(calendarName);
|
|
await page.getByRole("button", { name: "Create calendar" }).click();
|
|
await expect(page.getByLabel(`${calendarName} name`)).toBeVisible();
|
|
|
|
await page.getByRole("button", { name: "New event" }).click();
|
|
await page.getByLabel("Title", { exact: true }).fill(eventTitle);
|
|
await page.getByLabel("Start", { exact: true }).fill("2026-05-15T09:00");
|
|
await page.getByLabel("End", { exact: true }).fill("2026-05-15T10:00");
|
|
await page.getByRole("button", { name: "Save event" }).click();
|
|
await expect(page.getByText(eventTitle)).toBeVisible();
|
|
|
|
await page.getByText(eventTitle).click();
|
|
await page.getByLabel("Title", { exact: true }).fill(editedTitle);
|
|
await page.getByRole("button", { name: "Save event" }).click();
|
|
await expect(page.getByText(editedTitle)).toBeVisible();
|
|
|
|
await page.getByText(editedTitle).click();
|
|
await page.getByRole("button", { name: "Delete event" }).click();
|
|
await expect(page.getByText(editedTitle)).toBeHidden();
|
|
|
|
await page.getByLabel(`${calendarName} name`).fill(renamedCalendarName);
|
|
await expect(page.getByLabel(`${renamedCalendarName} name`)).toBeVisible();
|
|
await page.getByRole("button", { name: `Delete ${renamedCalendarName}` }).click();
|
|
await expect(page.getByLabel(`${renamedCalendarName} name`)).toBeHidden();
|
|
});
|