import { defineConfig, devices } from '@playwright/test'; /** * Playwright Configuration for LiveComponents E2E Tests * * @see https://playwright.dev/docs/test-configuration */ export default defineConfig({ // Test directory testDir: './tests/e2e', // Maximum time one test can run for timeout: 30 * 1000, // Test execution settings fullyParallel: true, forbidOnly: !!process.env.CI, retries: process.env.CI ? 2 : 0, workers: process.env.CI ? 1 : undefined, // Reporter configuration reporter: [ ['html', { outputFolder: 'playwright-report' }], ['list'], ['json', { outputFile: 'playwright-report/results.json' }] ], // Shared settings for all projects use: { // Base URL for navigation baseURL: 'https://localhost', // Collect trace on first retry trace: 'on-first-retry', // Screenshot on failure screenshot: 'only-on-failure', // Video on failure video: 'retain-on-failure', // Ignore HTTPS errors for local development ignoreHTTPSErrors: true, // Browser User-Agent (required to avoid firewall rules) userAgent: 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36' }, // Configure projects for major browsers projects: [ { name: 'chromium', use: { ...devices['Desktop Chrome'] }, }, { name: 'firefox', use: { ...devices['Desktop Firefox'] }, }, { name: 'webkit', use: { ...devices['Desktop Safari'] }, }, // Mobile viewports { name: 'Mobile Chrome', use: { ...devices['Pixel 5'] }, }, { name: 'Mobile Safari', use: { ...devices['iPhone 12'] }, }, ], // Run local dev server before starting tests webServer: { command: 'make up', url: 'https://localhost', reuseExistingServer: !process.env.CI, ignoreHTTPSErrors: true, timeout: 120 * 1000, // 2 minutes for Docker startup }, });