import { defineConfig, devices } from '@playwright/test'; import { getEnvironment } from './src/config/environments'; const env = getEnvironment(); export default defineConfig({ testDir: './src/tests', fullyParallel: true, forbidOnly: !!process.env.CI, retries: env.retries, workers: process.env.CI ? 1 : undefined, reporter: [ ['html', { open: 'never' }], ['json', { outputFile: 'test-results/results.json' }], ['junit', { outputFile: 'test-results/junit.xml' }], ['line'], ['list'] ], timeout: env.timeout, expect: { timeout: 30000 }, use: { baseURL: env.baseURL, trace: env.trace, screenshot: env.screenshot, video: env.video, headless: env.headless, viewport: { width: 1280, height: 720 }, actionTimeout: 30000, navigationTimeout: 60000, launchOptions: { slowMo: env.slowMo, }, }, projects: [ { name: 'chromium', use: { ...devices['Desktop Chrome'] }, }, { name: 'firefox', use: { ...devices['Desktop Firefox'] }, }, { name: 'webkit', use: { ...devices['Desktop Safari'] }, }, { name: 'Mobile Chrome', use: { ...devices['Pixel 5'] }, }, { name: 'Mobile Safari', use: { ...devices['iPhone 12'] }, }, ], webServer: env.name === 'development' ? { command: 'npm run dev', url: 'http://localhost:3001', timeout: 120000, reuseExistingServer: !process.env.CI, } : undefined, });