import { mkdirSync } from 'node:fs' import { defineConfig, devices } from '@playwright/test' mkdirSync(new URL('../.e2e-data/', import.meta.url), { recursive: true }) const externalServers = process.env.TASKPILOT_E2E_EXTERNAL === '1' export default defineConfig({ testDir: './e2e', timeout: 30_000, expect: { timeout: 8_000, }, fullyParallel: false, workers: 1, reporter: 'list', use: { baseURL: 'http://127.0.0.1:5173', channel: 'chrome', trace: 'retain-on-failure', }, webServer: externalServers ? undefined : [ { command: 'backend\\target\\debug\\task-pilot-backend.exe', cwd: '..', url: 'http://127.0.0.1:3000/api/v1/health', timeout: 120_000, reuseExistingServer: false, env: { TASK_PILOT_DATABASE_URL: 'sqlite://.e2e-data/task_pilot.db', TASK_PILOT_LOG_DIR: '.e2e-data/logs', }, }, { command: 'node node_modules/vite/bin/vite.js --host 127.0.0.1', cwd: '.', url: 'http://127.0.0.1:5173', timeout: 120_000, reuseExistingServer: false, }, ], projects: [ { name: 'chromium', use: { ...devices['Desktop Chrome'], viewport: { width: 1440, height: 1000 }, }, }, ], })