Skip to content

Configuration reference

blop.config.ts exports a BlopConfig object. For prose see Guides → Configuration.

Every field is optional. Glob patterns plus all BlopRunOptions except specFile, specFiles, and agentStream.

type BlopConfig = {
// Discovery
include?: string[]; // Glob patterns for spec discovery
exclude?: string[]; // Glob patterns to skip
cwd?: string; // Working directory (default: process.cwd())
// App under test
baseUrl?: string;
browserContext?: BrowserContextOptions; // Playwright BrowserContextOptions
// Browser
browser?: BlopBrowserName; // "chromium" | "camoufox" | "firefox" | "webkit"
viewport?: { width: number; height: number };
headed?: boolean;
// Agent
provider?: string;
model?: string;
apiKey?: string;
maxSteps?: number; // Default: 100
timeoutMs?: number; // Per-test wall-clock cap
retries?: number; // Default: 0
// Reporting
reporter?: BlopReporter; // "basic" | "json" | "junit" | "all" (default: "all")
reportDir?: string; // Default: ".blop"
verbose?: boolean; // Default: false
// Platform
platformUrl?: string;
platformApiKey?: string;
};

Blop auto-discovers any of:

  • blop.config.ts
  • blop.config.mts
  • blop.config.js
  • blop.config.mjs

Override with --config path/to/file.ts.

Later sources win:

  1. Defaults baked into the runtime
  2. blop.config.ts
  3. Environment variables (BLOP_AGENT_*, provider-native keys)
  4. CLI flags

Internal helper exposed for tooling.

import { loadBlopConfig } from "blop";
const config = await loadBlopConfig();
// Returns BlopConfig with defaults applied

Resolves the first matching config file in cwd, or loads the explicit configPath if provided.

type BlopBrowserName = "chromium" | "camoufox" | "firefox" | "webkit";
type BlopReporter = "basic" | "json" | "junit" | "all";
Value Files written
basic Console output only
json results.json + events.jsonl
junit results.json + events.jsonl + report.xml
all Same as junit