// playwright.config.ts (or .js) import { defineConfig, devices } from '@playwright/test'; export default defineConfig({ testDir: './e2e', fullyParallel: true, forbidOnly: !!process.env.CI, retries: process.env.CI ? 2 : 0, workers: process.env.CI ? 1 : undefined, // Good for CI to often limit workers reporter: 'html', use: { baseURL: 'http://localhost:4200', trace: 'on-first-retry', }, projects: [ { name: 'chromium', use: { ...devices['Desktop Chrome'] }, }, { name: 'firefox', use: { ...devices['Desktop Firefox'] }, }, { name: 'webkit', use: { ...devices['Desktop Safari'] }, }, ], webServer: { // Your command to start the server command: 'cd .. && just start', // URL to poll to check if the server is ready url: 'http://localhost:4200', // In CI, always start a new server. Locally, you might reuse an existing one. reuseExistingServer: !process.env.CI, // **ADJUSTMENT 1: Increase timeout** // How long to wait for the server to start (in milliseconds). // Default is 60000 (1 minute). Adjust this based on your server's needs. // Example: 180 seconds (3 minutes) timeout: 180 * 1000, // **ADJUSTMENT 2: Handle server output for debugging in CI** // 'pipe': Captures stdout and stderr. Playwright can include this in reports // or when an error occurs during server startup. // 'inherit': Streams stdout/stderr directly to the terminal. Useful for live debugging. // 'ignore': Ignores server output. stdout: 'pipe', // or 'inherit' if you want to see logs live in CI stderr: 'pipe', // or 'inherit' // Optional: If your server needs specific environment variables // env: { // NODE_ENV: 'development', // Or whatever your server needs // PORT: '4200', // Though your command likely handles this // }, // Optional: If your server takes time to shut down gracefully // killTimeout: 30000, // Time to wait for server to gracefully exit (default 5000ms) }, });