Settings reference
blop.config.ts exports a BlopConfig object. For prose see Configuration. Every field is optional — the runner has sensible defaults.
Discovery
Section titled “Discovery”| Setting | Type | Default | Description |
|---|---|---|---|
include |
string[] |
["**/*.blop.ts", "**/*.blop.tsx"] |
Glob patterns for spec discovery |
exclude |
string[] |
[] |
Glob patterns to skip |
cwd |
string |
process.cwd() |
Working directory for discovery |
CLI patterns override include. Files matching node_modules/, dist/, .blop/, or .git/ are always skipped.
App under test
Section titled “App under test”| Setting | Type | Default | Description |
|---|---|---|---|
baseUrl |
string |
(none) | Resolved against relative agent.goto("/path") calls |
browserContext |
BrowserContextOptions |
(none) | Playwright BrowserContextOptions for cookies/auth/storage |
Use browserContext.storageState to seed an authenticated session — see Examples → Auth flow.
Browser
Section titled “Browser”| Setting | Type | Default | Description |
|---|---|---|---|
browser |
BlopBrowserName |
"chromium" |
One of chromium, camoufox, firefox, webkit |
viewport |
{ width: number; height: number } |
(Playwright default) | Browser viewport dimensions |
headed |
boolean |
false |
Show the browser window |
containerized |
boolean | { image?: string; containerName?: string } |
false |
Run the selected browser in a separate warm Docker container |
| Setting | Type | Default | Description |
|---|---|---|---|
provider |
string |
env: BLOP_AGENT_PROVIDER |
Khadim provider name |
model |
string |
env: BLOP_AGENT_MODEL |
Model name |
apiKey |
string |
env: BLOP_AGENT_API_KEY (or provider-native) |
API key |
maxSteps |
number |
(unlimited) | Hard cap on agent tool steps. Runs stop on finish, timeout, or the no-progress stall guard. |
timeoutMs |
number |
(none — uses Playwright defaults) | Per-test wall-clock cap |
retries |
number |
0 |
Re-run failed tests this many times |
workers |
number |
1 |
Run up to N agent tests concurrently |
Reporting
Section titled “Reporting”| Setting | Type | Default | Description |
|---|---|---|---|
reporter |
BlopReporter |
"all" |
One of basic, json, junit, all |
reportDir |
string |
".blop" |
Where to write artifacts |
verbose |
boolean |
false |
Stream agent events to stderr |
progressFile |
string |
(none) | Append live NDJSON progress (test_start, action, frame, test_finish) |
captureStepScreenshots |
boolean |
false |
Save a JPEG after each browser action |
streamFrames |
boolean |
true |
CDP screencast (chromium only) |
frameIntervalMs |
number |
200 |
Min ms between streamed frame progress lines |
Platform upload
Section titled “Platform upload”| Setting | Env var | Description |
|---|---|---|
platformUrl |
BLOP_PLATFORM_URL |
Blop Platform ingest URL |
platformApiKey |
BLOP_API_KEY |
Blop Platform API key |
If both are set, the runner uploads BlopRunResult after the run.
Supported file names
Section titled “Supported file names”Blop auto-discovers any of:
blop.config.tsblop.config.mtsblop.config.jsblop.config.mjs
Override with --config path/to/file.ts.
Precedence
Section titled “Precedence”When the same option is set in multiple places, later sources win:
- Defaults baked into the runtime
blop.config.ts- Environment variables (
BLOP_AGENT_*, provider-native keys) - CLI flags
So a CI run can pin --max-steps 75 without touching the config file.
type BlopBrowserName = "chromium" | "camoufox" | "firefox" | "webkit";type BlopReporter = "basic" | "json" | "junit" | "all";| Reporter value | Files written |
|---|---|
basic |
Console output only; results.json and events.jsonl are always written by the runner |
json |
results.json + events.jsonl |
junit |
results.json + events.jsonl + report.xml |
all |
Same as junit |