harb/scripts/harb-evaluator/holdout.config.ts
openhands 69f6a87e20 Move holdout scenarios to separate repo
- Updated holdout.config.ts to use HOLDOUT_SCENARIOS_DIR env var
- Modified evaluate.sh to clone harb-holdout-scenarios repo at runtime
- Deleted scripts/harb-evaluator/scenarios/ directory
- Added .holdout-scenarios/ to .gitignore
- Holdout scenarios are now cloned into .holdout-scenarios/ during evaluation
- This prevents dev-agent from seeing the holdout test set
2026-03-04 08:20:11 +00:00

48 lines
1.6 KiB
TypeScript
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

import { defineConfig, devices } from '@playwright/test';
/**
* Playwright config for holdout scenarios.
*
* Holdout specs are cloned from the separate harb-holdout-scenarios repo
* into .holdout-scenarios/ by evaluate.sh 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
* HOLDOUT_SCENARIOS_DIR Path to cloned scenarios (default: scripts/harb-evaluator/scenarios)
*/
export default defineConfig({
testDir: process.env.HOLDOUT_SCENARIOS_DIR ?? './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'] },
},
],
});