Skip to content

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.