Configuration Reference
The full configSchema from packages/shared/src/schemas.ts, the
authoritative shape every CLI invocation and MCP run_scan call resolves
to via resolveConfig():
const viewportSchema = z.object({ width: z.number().int().positive(), height: z.number().int().positive(),});
const configSchema = z.object({ url: z.string().url().optional(), routes: z.array(z.string()).default(['/']), outDir: z.string().optional(), headed: z.boolean().default(false), timeoutMs: z.number().int().positive().default(30_000), failOn: z.enum(['critical', 'high', 'medium', 'low', 'never']).default('high'), viewport: viewportSchema.optional(), discoverRoutes: z.boolean().default(false), har: z.boolean().default(false), a11y: z.boolean().default(false), perf: z.boolean().default(false), visual: z.boolean().default(false),});| Field | Type | Default | Notes |
|---|---|---|---|
url |
string (valid URL) |
— | Optional; auto-detected/launched if omitted |
routes |
string[] |
['/'] |
|
outDir |
string |
— | Optional; defaults to .local/frontend-qa/runs/<runId>/ |
headed |
boolean |
false |
|
timeoutMs |
positive integer | 30000 |
|
failOn |
'critical' | 'high' | 'medium' | 'low' | 'never' |
'high' |
|
viewport |
{ width: number; height: number } |
— | Optional |
discoverRoutes |
boolean |
false |
|
har |
boolean |
false |
|
a11y |
boolean |
false |
|
perf |
boolean |
false |
|
visual |
boolean |
false |
Invalid input (e.g. a malformed url, a negative timeoutMs) fails Zod
validation before any browser work starts.
There is no config file today — CLI flags (and, for the MCP server, tool arguments) are the only input surface. See Roadmap for what’s planned.
See also: Configuration guide for a flag-by-flag walkthrough with examples.