import { defineConfig, devices } from '@playwright/test'; const baseURL = process.env.PLAYWRIGHT_BASE_URL ?? 'http://127.0.0.1:3000'; const executablePath = process.env.PLAYWRIGHT_CHROMIUM_EXECUTABLE_PATH; const serverCommand = process.env.PLAYWRIGHT_SERVER_COMMAND ?? 'pnpm start'; export default defineConfig({ testDir: './tests', testMatch: ['browser/**/*.spec.ts', 'a11y/**/*.spec.ts', 'visual/**/*.spec.ts'], fullyParallel: true, forbidOnly: Boolean(process.env.CI), retries: process.env.CI ? 2 : 0, ...(process.env.CI ? { workers: 2 } : {}), reporter: process.env.CI ? [['html', { open: 'never' }], ['github']] : 'list', expect: { timeout: 5_000, toHaveScreenshot: { animations: 'disabled', caret: 'hide', maxDiffPixelRatio: 0.005, }, }, use: { baseURL, locale: 'en-US', timezoneId: 'UTC', trace: 'retain-on-failure', screenshot: 'only-on-failure', video: process.env.PLAYWRIGHT_VIDEO === 'off' ? 'off' : process.env.CI ? 'retain-on-failure' : 'off', }, projects: [ { name: 'chromium', use: { ...devices['Desktop Chrome'], ...(executablePath ? { launchOptions: { executablePath } } : {}), }, }, { name: 'firefox', use: { ...devices['Desktop Firefox'] } }, { name: 'webkit', use: { ...devices['Desktop Safari'] } }, { name: 'mobile-chrome', use: { ...devices['Pixel 7'] } }, { name: 'mobile-safari', use: { ...devices['iPhone 15'] } }, ], webServer: { command: serverCommand, url: baseURL, reuseExistingServer: !process.env.CI, timeout: 120_000, env: { SITE_ORIGIN: baseURL, PUBLIC_RELEASE_APPROVED: 'false', COMPONENT_FIXTURES_ENABLED: 'true', NEXT_PUBLIC_DEMO_ENABLED: 'true', DEMO_SUBMISSION_MODE: 'local', DEMO_LOCAL_TEST_MODE: 'true', DEMO_TEST_SCENARIOS_ENABLED: 'true', NEXT_PUBLIC_ANALYTICS_MODE: 'disabled', HOSTNAME: '127.0.0.1', PORT: '3000', }, }, });