feat: Phase 4-5 — demo mode, polish, deploy, and bug fixes
Add demo mode with mock data provider, Docker deployment, Playwright tests, PostHog analytics, error boundaries, and SEO metadata. Fix residences API response unwrapping, kanban drag-and-drop with optimistic updates, trailing slash proxy redirects, and column name mismatches with Go API. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -0,0 +1,40 @@
|
||||
import { test, expect } from "@playwright/test";
|
||||
|
||||
test.describe("Demo Mode", () => {
|
||||
test("shows demo landing page", async ({ page }) => {
|
||||
await page.goto("/demo");
|
||||
await expect(page.locator("text=Start Demo")).toBeVisible();
|
||||
});
|
||||
|
||||
test("enters demo app", async ({ page }) => {
|
||||
await page.goto("/demo");
|
||||
await page.click("text=Start Demo");
|
||||
await expect(page).toHaveURL("/demo/app");
|
||||
});
|
||||
|
||||
test("shows residences in demo", async ({ page }) => {
|
||||
await page.goto("/demo/app/residences");
|
||||
await expect(page.locator("h1, h2").first()).toContainText(/residences|properties/i);
|
||||
});
|
||||
|
||||
test("shows tasks in demo", async ({ page }) => {
|
||||
await page.goto("/demo/app/tasks");
|
||||
await expect(page.locator("h1, h2").first()).toContainText(/tasks/i);
|
||||
});
|
||||
|
||||
test("shows contractors in demo", async ({ page }) => {
|
||||
await page.goto("/demo/app/contractors");
|
||||
await expect(page.locator("h1, h2").first()).toContainText(/contractors/i);
|
||||
});
|
||||
|
||||
test("shows documents in demo", async ({ page }) => {
|
||||
await page.goto("/demo/app/documents");
|
||||
await expect(page.locator("h1, h2").first()).toContainText(/documents/i);
|
||||
});
|
||||
|
||||
test("can navigate to add task in demo", async ({ page }) => {
|
||||
await page.goto("/demo/app/tasks");
|
||||
await page.click("text=Add Task");
|
||||
await expect(page).toHaveURL("/demo/app/tasks/new");
|
||||
});
|
||||
});
|
||||
Reference in New Issue
Block a user