@app-studio/qa-presets
Bounded defaults for fast proof:
- unit tests have short timeouts and no services;
- shared integration worlds run serially;
- Playwright does not retry;
- Playwright is explicitly headless, so suite runs open no desktop windows;
- the default
proofprofile records no video and retains a trace only on failure; - server reuse is opt-in when suite-specific environment matters.
createPlaywrightConfig({
bindings,
testDir: './tests/e2e',
projects: [{ name: 'scenario', port: 'front' }],
});
Set profile: 'fast' (or QA_BROWSER_PROFILE=fast) for no runner-owned media,
and profile: 'record' for headless video, trace and screenshots. Scenario v3
also omits its explicit checkpoint media in fast; the JSON verdict still runs.
For a Playwright host, qa scenario run --engine chromium --video webm (or
QA_BROWSER_VIDEO=webm) enables video even with the fast profile. Playwright
produces WebM; MP4 and GIF requests fail explicitly rather than producing no
recording. The host must bind chromium to its Playwright scenario command.
The video is available in Playwright's test output after the context closes.
Use separate Playwright projects to exercise unauthenticated direct navigation and English copy with a full browser's layout and hit testing:
projects: [
{ name: 'anonymous-en', port: 'front', use: {
browserName: 'chromium', locale: 'en-US',
storageState: { cookies: [], origins: [] },
} },
]
In the scenario, navigate directly to the protected path and assert the resulting URL and visible sign-in content. Assert the expected English error text after the relevant action; if the application selects language independently of browser locale, configure that selection in the host as well. For overlapping menus, assert the topmost element or interact with it at the overlapping coordinate in Chromium; a screenshot from an approximate renderer alone cannot prove hit testing. Keep the scenario verdict and recording together as evidence.
To classify a failing existing test as pre-existing, run the same command and environment against both the candidate and its base revision in separate checkouts. Report both results and revisions; absence of changed lines in a diff does not establish that a failure predates the change.
State Fixture projects should use a separate config containing only the Debug Studio server.