import { test, expect } from "@playwright/test"; test.describe("Landing pages", () => { test("/ renders hero and module grid", async ({ page }) => { await page.goto("/"); await expect(page).toHaveTitle(/rSpace/i); // Hero section or main heading await expect(page.locator("h1, .hero, .landing-hero").first()).toBeVisible(); // "Try Demo" or demo link somewhere on the page const demoLink = page.locator('a[href*="demo"]').first(); await expect(demoLink).toBeVisible(); }); test("/about returns 200", async ({ page }) => { const res = await page.goto("/about"); expect(res?.status()).toBe(200); }); test("/create-space renders form", async ({ page }) => { const res = await page.goto("/create-space"); expect(res?.status()).toBe(200); await expect(page.locator("input, [type=text]").first()).toBeVisible(); }); test("/demo loads space dashboard", async ({ page }) => { const res = await page.goto("/demo"); expect(res?.status()).toBe(200); await expect(page.locator("header.rstack-header")).toBeVisible(); }); test("favicon is accessible", async ({ request }) => { const res = await request.get("/favicon.png"); expect(res.status()).toBe(200); }); test("manifest.json is accessible", async ({ request }) => { const res = await request.get("/manifest.json"); expect(res.status()).toBe(200); const json = await res.json(); expect(json).toHaveProperty("name"); }); });