/** * Playwright configuration for Electron E2E testing * * This configuration is designed to test the Maestro Electron application. * E2E tests launch the actual packaged/built application and interact with * the UI through Playwright's browser automation. */ import { defineConfig, devices } from '@playwright/test'; import path from 'path'; /** * See https://playwright.dev/docs/test-configuration */ export default defineConfig({ // Test directory testDir: './e2e', // Test file patterns testMatch: '**/*.spec.ts', // Run tests in files in parallel fullyParallel: false, // Electron tests should run sequentially to avoid conflicts // Fail the build on CI if you accidentally left test.only in the source code forbidOnly: !!process.env.CI, // Retry on CI only retries: process.env.CI ? 2 : 0, // Opt out of parallel tests for Electron workers: 1, // Reporter to use reporter: process.env.CI ? [['github'], ['html', { open: 'never' }]] : [['list'], ['html', { open: 'on-failure' }]], // Shared settings for all the projects below use: { // Base URL to use in actions like `await page.goto('/')` // For Electron, this is handled differently - we use app.evaluate() // Collect trace when retrying the failed test trace: 'on-first-retry', // Capture screenshot on failure screenshot: 'only-on-failure', // Record video on failure video: 'on-first-retry', // Timeout for each action actionTimeout: 10000, }, // Configure projects for major browsers projects: [ { name: 'electron', testDir: './e2e', use: { // Electron-specific settings will be configured in test fixtures }, }, ], // Global test timeout timeout: 60000, // Expect timeout expect: { timeout: 10000, }, // Output directory for test artifacts outputDir: 'e2e-results/', // Run local dev server before starting the tests // For Electron, we build and launch the app in the test fixtures // webServer: undefined, });