const { defineConfig } = require('@playwright/test'); const setup = require('./tests/ui/global-setup'); // Before anything else, including the servers below. setup.prepare(); // Real browser against a real daemon. The stub-DOM smoke test catches a script that // fails to load; it cannot catch a wrong selector, a handler that runs but does nothing, // or a page that renders empty -- which is exactly what has slipped through before. module.exports = defineConfig({ testDir: './tests/ui', timeout: 30_000, expect: { timeout: 10_000 }, fullyParallel: false, // one daemon, one database workers: 1, reporter: process.env.CI ? 'line' : [['list']], use: { baseURL: 'http://127.0.0.1:8791', trace: 'retain-on-failure', screenshot: 'only-on-failure', }, webServer: [ { command: 'node tests/ui/fixtures/serve.js', port: 8792, reuseExistingServer: false, stdout: 'ignore', }, { // Build first so the tests always run against current source. command: 'cargo build -q && exec ./target/debug/ipx daemon', port: 8791, reuseExistingServer: false, timeout: 180_000, stdout: 'pipe', env: { IPX_CONFIG: `${setup.root}/config/config.toml`, IPX_DATA_DIR: `${setup.root}/data`, IPX_LOG: 'ipx=info', }, }, ], });