import { expect, test } from '@playwright/test'; // Walking-skeleton smoke suite: proves the deployed stage serves the SPA, // the reverse proxy routes /api, and the api is ready (db + migrations). // Feature e2e packs (issues #20, #32, …) build on this file's patterns. test('SPA shell loads', async ({ page }) => { await page.goto('/'); await expect(page).toHaveTitle(/Dorfteich/); await expect(page.getByRole('heading', { level: 1 })).toBeVisible(); }); test('web liveness endpoint responds', async ({ request }) => { const res = await request.get('/healthz'); expect(res.ok()).toBeTruthy(); }); test('api is live and ready', async ({ request }) => { const healthz = await request.get('/api/v1/healthz'); expect(healthz.ok()).toBeTruthy(); expect((await healthz.json()).status).toBe('ok'); const readyz = await request.get('/api/v1/readyz'); expect(readyz.ok(), `readyz: ${await readyz.text()}`).toBeTruthy(); }); test('collab service is live and reachable through the proxy', async ({ request }) => { // The reverse proxy routes /collab to the Hocuspocus container (issue #33); // its /healthz also pings the database, so 200 proves the whole path works. const res = await request.get('/collab/healthz'); expect(res.ok(), `collab healthz: ${await res.text()}`).toBeTruthy(); const body = await res.json(); expect(body.status).toBe('ok'); expect(body.service).toBe('collab'); });