diff --git a/.gitea/workflows/ci.yml b/.gitea/workflows/ci.yml index 4b66a88..757def2 100644 --- a/.gitea/workflows/ci.yml +++ b/.gitea/workflows/ci.yml @@ -135,6 +135,14 @@ jobs: INITIAL_ADMIN_EMAIL: admin@example.com INITIAL_ADMIN_PASSWORD: testpassword123 CI: "1" + # The host runs the production stack on :3000/:3001; shift the e2e + # dev servers to :3100/:3101 so Playwright doesn't collide with prod. + VITE_PORT: "3100" + PORT: "3101" + API_PROXY_TARGET: http://localhost:3101 + E2E_BASE_URL: http://localhost:3100 + E2E_WEB_SERVER_CMD: bun run dev + E2E_WEB_SERVER_URL: http://localhost:3100/api/health run: bunx playwright test - name: Stop ephemeral Postgres diff --git a/apps/web/package.json b/apps/web/package.json index 65c6fda..7ef976a 100644 --- a/apps/web/package.json +++ b/apps/web/package.json @@ -4,7 +4,7 @@ "private": true, "type": "module", "scripts": { - "dev": "vite --port 3000", + "dev": "vite", "build": "vite build", "preview": "vite preview", "typecheck": "tsc --noEmit" diff --git a/apps/web/vite.config.ts b/apps/web/vite.config.ts index e0ef8a9..dd9cf06 100644 --- a/apps/web/vite.config.ts +++ b/apps/web/vite.config.ts @@ -10,14 +10,14 @@ export default defineConfig({ }, }, server: { - port: 3000, + port: parseInt(process.env.VITE_PORT || "3000", 10), proxy: { "/api": { - target: "http://localhost:3001", + target: process.env.API_PROXY_TARGET || "http://localhost:3001", changeOrigin: true, }, "/mcp": { - target: "http://localhost:3001", + target: process.env.API_PROXY_TARGET || "http://localhost:3001", changeOrigin: true, }, }, diff --git a/playwright.config.ts b/playwright.config.ts index 76d4f03..97d39e8 100644 --- a/playwright.config.ts +++ b/playwright.config.ts @@ -24,7 +24,7 @@ export default defineConfig({ timeout: 5_000, }, use: { - baseURL: 'http://localhost:3000', + baseURL: process.env.E2E_BASE_URL || 'http://localhost:3000', trace: 'on-first-retry', screenshot: 'only-on-failure', video: 'on-first-retry', @@ -36,8 +36,10 @@ export default defineConfig({ // `bun run dev` boots the API (:3001) and the Vite dev server (:3000) via // concurrently. Poll the API health endpoint through the Vite proxy so we // don't start running tests until both servers are actually up. - command: 'bun run dev', - url: 'http://localhost:3000/api/health', + // In CI the host runs the production stack on :3000/:3001, so shift to + // :3100/:3101 to avoid port collisions. + command: process.env.E2E_WEB_SERVER_CMD || 'bun run dev', + url: process.env.E2E_WEB_SERVER_URL || 'http://localhost:3000/api/health', reuseExistingServer: !CI, timeout: 120_000, },