import { defineConfig, devices } from '@playwright/test'; /** * Playwright config for holdout scenarios. * * Holdout specs live under scripts/harb-evaluator/scenarios/ and reuse the * existing tests/setup/ infrastructure (wallet-provider, stack, navigate). * * The evaluator boots the stack first, then runs: * npx playwright test --config scripts/harb-evaluator/holdout.config.ts * * Required env vars (set by evaluate.sh): * STACK_RPC_URL – Anvil JSON-RPC endpoint * STACK_WEBAPP_URL – Vite dev server URL * STACK_GRAPHQL_URL – Ponder GraphQL endpoint */ export default defineConfig({ testDir: './scenarios', fullyParallel: false, // evaluate.sh sets CI=true before invoking playwright, so forbidOnly is always // active in the evaluator context. Accidental test.only() in any scenario file // causes an immediate failure rather than a silent partial run. forbidOnly: !!process.env.CI, retries: 0, workers: 1, reporter: 'list', timeout: 5 * 60 * 1000, // 5 min per test — scenarios involve on-chain txns expect: { timeout: 30_000, }, use: { headless: true, viewport: { width: 1280, height: 720 }, screen: { width: 1280, height: 720 }, actionTimeout: 60_000, launchOptions: { args: ['--disable-dev-shm-usage', '--no-sandbox'], }, }, projects: [ { name: 'chromium', use: { ...devices['Desktop Chrome'] }, }, ], });