Configuration lives in unotest.config.{js,mjs,ts} at your project root, auto-discovered by the CLI and MCP server.
| Field | Type | Default | Description |
|---|---|---|---|
baseUrl | string (URL) | — | Base for relative goto() paths. If unset, scenarios use absolute URLs. |
browsers | ("chromium" / "firefox" / "webkit")[] | ["chromium"] | Browser families to run. Single in dev; CI can run all three. |
channel | "chrome" / "msedge" / "chrome-beta" / null | null | For chromium: use a system browser (zero download) or bundled Chromium (null). |
viewport | { width, height } | { 1280, 720 } | Browser viewport size. |
retry.count | int 0–10 | 0 | Retries for transient failures. Off in dev; 1+ in CI. |
retry.on | ("transient" / "network" / "crash")[] | ["transient"] | Which failure classes retry. Assertion failures never retry. |
failureBundle.tier1 | true (locked) | true | Always on: error + console + semantic DOM snapshot + DSL trace. |
failureBundle.tier2 | boolean | true | Screenshots (viewport + element-focused). |
failureBundle.tier3 | { network, video } | { false, false } | HAR + video. Not wired yet — leave off. |
failureBundle.retention | { runs, days } | { 20, 7 } | Keep N recent runs; delete older than D days. |
failureBundle.storageDir | string | .unotest/failures | Where failure bundles are written. |
dialogPolicy | "accept" / "dismiss" / "manual" | "accept" | How native dialogs (alert/confirm) are handled. |
storageState | string (path) | — | Playwright storageState.json for cached login. |
defaultTimeoutMs | int | 3000 | Action / locator-resolution timeout. Override per call. |
defaultNavigationTimeoutMs | int | 15000 | Navigation timeout (goto/reload/waitForUrl). |
testDir | string | unotest/e2e | Scenario directory. |
helpersDir | string | unotest/e2e/_helpers | Helper functions directory. |
sandbox.shellCwd | string | cwd | Working directory for shell(). |
sandbox.database | string (URL) | — | Connection string for dbQuery/dbExec (postgres://, mysql://, sqlite:). |
sandbox.apiBaseUrl | string (URL) | — | Base URL for apiCall(method, path). |
linter.enabled | boolean | true | Enable the scenario linter. |
mcp.transport | "stdio" | "stdio" | MCP server transport (stdio in the current release). |