mirror of
https://github.com/multica-ai/multica.git
synced 2026-06-17 03:38:32 +02:00
49 lines
1.6 KiB
TypeScript
49 lines
1.6 KiB
TypeScript
import { test, expect } from "@playwright/test";
|
|
import { loginAsDefault, openWorkspaceMenu } from "./helpers";
|
|
|
|
test.describe("Authentication", () => {
|
|
test("login page renders correctly", async ({ page }) => {
|
|
await page.goto("/login");
|
|
|
|
await expect(page.locator("h1")).toContainText("Multica");
|
|
await expect(page.locator('input[placeholder="Email"]')).toBeVisible();
|
|
await expect(page.locator('input[placeholder="Name"]')).toBeVisible();
|
|
await expect(page.locator('button[type="submit"]')).toContainText(
|
|
"Sign in",
|
|
);
|
|
});
|
|
|
|
test("login and redirect to /issues", async ({ page }) => {
|
|
await loginAsDefault(page);
|
|
|
|
await expect(page).toHaveURL(/\/issues/);
|
|
await expect(page.locator("text=All Issues")).toBeVisible();
|
|
});
|
|
|
|
test("unauthenticated user is redirected to /login", async ({ page }) => {
|
|
await page.goto("/login");
|
|
await page.evaluate(() => {
|
|
localStorage.removeItem("multica_token");
|
|
});
|
|
|
|
// Visit a workspace-scoped route; DashboardGuard should redirect to /login.
|
|
// The slug here need not exist — the guard runs before workspace resolution
|
|
// for unauthenticated users.
|
|
await page.goto("/e2e-workspace/issues");
|
|
await page.waitForURL("**/login", { timeout: 10000 });
|
|
});
|
|
|
|
test("logout redirects to /login", async ({ page }) => {
|
|
await loginAsDefault(page);
|
|
|
|
// Open the workspace dropdown menu
|
|
await openWorkspaceMenu(page);
|
|
|
|
// Click Sign out
|
|
await page.locator("text=Sign out").click();
|
|
|
|
await page.waitForURL("**/login", { timeout: 10000 });
|
|
await expect(page).toHaveURL(/\/login/);
|
|
});
|
|
});
|