- web: playwright.config.ts + e2e/navigation.spec.ts (7 navigation tests, scaffolded) - web: exclude e2e/ from tsconfig (playwright not yet installed as dep) - mobile: notes-store.test.ts (7 tests: hydrate, openNote, saveDraft, updateNote) - mobile: workspace-store.test.ts (5 tests: hydrate, preserve/reset active, set/clear) - mobile: inbox-store.test.ts (5 tests: hydrate, approve, reject, unknown id guards) - mobile: auth-store.test.ts (6 tests: bootstrap, signIn, signOut, failure paths) - Total: 76 backend, 14 web, 23 mobile = 113 tests
48 lines
1.7 KiB
TypeScript
48 lines
1.7 KiB
TypeScript
import { test, expect } from "@playwright/test";
|
|
|
|
test.describe("Navigation", () => {
|
|
test("landing page redirects to dashboard", async ({ page }) => {
|
|
await page.goto("/");
|
|
await expect(page).toHaveURL(/dashboard/);
|
|
});
|
|
|
|
test("dashboard renders summary cards", async ({ page }) => {
|
|
await page.goto("/dashboard");
|
|
await expect(page.getByText("Dashboard")).toBeVisible();
|
|
await expect(page.getByText("Active workspaces")).toBeVisible();
|
|
await expect(page.getByText("Tracked notes")).toBeVisible();
|
|
});
|
|
|
|
test("sidebar links navigate correctly", async ({ page }) => {
|
|
await page.goto("/dashboard");
|
|
await page.getByRole("link", { name: "Workspaces" }).click();
|
|
await expect(page).toHaveURL(/workspaces/);
|
|
await page.getByRole("link", { name: "Search" }).click();
|
|
await expect(page).toHaveURL(/search/);
|
|
await page.getByRole("link", { name: "Reviews" }).click();
|
|
await expect(page).toHaveURL(/reviews/);
|
|
await page.getByRole("link", { name: "Settings" }).click();
|
|
await expect(page).toHaveURL(/settings/);
|
|
});
|
|
|
|
test("workspaces page renders", async ({ page }) => {
|
|
await page.goto("/workspaces");
|
|
await expect(page.getByText("Workspaces")).toBeVisible();
|
|
});
|
|
|
|
test("search page renders", async ({ page }) => {
|
|
await page.goto("/search");
|
|
await expect(page.getByText("Search")).toBeVisible();
|
|
});
|
|
|
|
test("reviews page renders", async ({ page }) => {
|
|
await page.goto("/reviews");
|
|
await expect(page.getByText("Reviews")).toBeVisible();
|
|
});
|
|
|
|
test("settings page renders", async ({ page }) => {
|
|
await page.goto("/settings");
|
|
await expect(page.getByText("Settings")).toBeVisible();
|
|
});
|
|
});
|