Accessibility fixes (aria-labels, color contrast, html lang, inline link underlines), atomic dev login endpoints, and E2E test hardening.
45 lines
1.3 KiB
JavaScript
45 lines
1.3 KiB
JavaScript
import { test, expect } from "@playwright/test";
|
|
|
|
test.describe("coming-soon page", () => {
|
|
test("renders with heading and login form", async ({ page }) => {
|
|
await page.goto("/coming-soon");
|
|
|
|
await expect(page.locator("h1")).toContainText("Ghost Guild");
|
|
await expect(page.locator('input[type="email"]')).toBeVisible();
|
|
await expect(
|
|
page.getByRole("button", { name: "Send Magic Link" }),
|
|
).toBeVisible();
|
|
});
|
|
|
|
test('shows "Coming Soon" text for unauthenticated visitors', async ({
|
|
page,
|
|
}) => {
|
|
await page.goto("/coming-soon");
|
|
|
|
await expect(page.getByText("Coming Soon")).toBeVisible();
|
|
});
|
|
});
|
|
|
|
test.describe("public routes accessible when gate is off", () => {
|
|
test("home page loads", async ({ page }) => {
|
|
await page.goto("/");
|
|
|
|
// Should not redirect to /coming-soon
|
|
expect(page.url()).not.toContain("/coming-soon");
|
|
await expect(page.locator("h1")).toBeVisible();
|
|
});
|
|
|
|
test("events page loads", async ({ page }) => {
|
|
await page.goto("/events");
|
|
|
|
expect(page.url()).not.toContain("/coming-soon");
|
|
await expect(page.locator("h1")).toContainText("Events");
|
|
});
|
|
|
|
test("join page loads", async ({ page }) => {
|
|
await page.goto("/join");
|
|
|
|
expect(page.url()).not.toContain("/coming-soon");
|
|
await expect(page.locator("h1")).toContainText("Join Ghost Guild");
|
|
});
|
|
});
|