/** * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the * "License"); you may not use this file except in compliance * with the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, * software distributed under the License is distributed on an * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY * KIND, either express or implied. See the License for the * specific language governing permissions and limitations * under the License. */ /// // eslint-disable-next-line import/no-extraneous-dependencies import { defineConfig } from '@playwright/test'; export default defineConfig({ // Test directory testDir: './playwright/tests', // Timeout settings timeout: 30000, expect: { timeout: 8000 }, // Parallel execution fullyParallel: true, workers: process.env.CI ? 2 : 1, // Retry logic - 2 retries in CI, 0 locally retries: process.env.CI ? 2 : 0, // Reporter configuration - multiple reporters for better visibility reporter: process.env.CI ? [ ['github'], // GitHub Actions annotations ['list'], // Detailed output with summary table ['html', { outputFolder: 'playwright-report', open: 'never' }], // Interactive report ['json', { outputFile: 'test-results/results.json' }], // Machine-readable ] : [ ['list'], // Shows summary table locally ['html', { outputFolder: 'playwright-report', open: 'on-failure' }], // Auto-open on failure ], // Global test setup use: { // Use environment variable for base URL in CI, default to localhost:8088 for local baseURL: process.env.PLAYWRIGHT_BASE_URL || 'http://localhost:8088', // Browser settings headless: !!process.env.CI, viewport: { width: 1280, height: 1024 }, // Screenshots and videos on failure screenshot: 'only-on-failure', video: 'retain-on-failure', // Trace collection for debugging trace: 'retain-on-failure', }, projects: [ { name: 'chromium', use: { browserName: 'chromium', testIdAttribute: 'data-test', }, }, ], // Web server setup - disabled in CI (Flask started separately in workflow) webServer: process.env.CI ? undefined : { command: 'curl -f http://localhost:8088/health', url: 'http://localhost:8088/health', reuseExistingServer: true, timeout: 5000, }, });