import { adjustPath } from '@o3r/testing/tools/path-replacement';
import { defineConfig } from '@playwright/test';
import * as path from 'node:path';

adjustPath('playwright');

const FIVE_MINUTES = 1_000 * 60 * 5;

const reportsFolder = path.join(__dirname, '..', 'playwright-reports');

const config = defineConfig({
  testDir: '.',
  testMatch: /.*\.e2e\.ts$/,
  forbidOnly: !!process.env.CI,
  retries: process.env.CI ? 3 : 0,
  workers: process.env.CI ? 1 : undefined,
  reporter: [
    ['list'],
    ['junit', {outputFile: path.join(reportsFolder, 'junit', 'reporter.xml')}],
    ['html', {open: 'never', outputFolder: path.join(reportsFolder, 'html')}]
  ],
  timeout: FIVE_MINUTES,
  use: {
    baseURL: process.env.PLAYWRIGHT_TARGET_URL || 'http://localhost:<%= serverPort %>/',
    ignoreHTTPSErrors: true,
    screenshot: 'only-on-failure',
    trace: 'retain-on-failure'
  },
  projects: [
    {name: 'Chromium', use: {browserName: 'chromium'}},
    {name: 'Webkit', use: {browserName: 'webkit'}},
    {name: 'Firefox', use: {browserName: 'firefox'}}
  ],
  webServer: [
    ...!process.env.PLAYWRIGHT_TARGET_URL ? [{
      command: '<%= startCommand %>',
      cwd: path.join(__dirname, '..'),
      port: <%= serverPort %>,
      timeout: 120 * 1000,
      reuseExistingServer: !process.env.CI
    }] : []
  ]
});

export default config;
