Environments & CI
Target any base URL per run, run worktrees in parallel without collisions, and gate a pull request on Scout with a single non-zero exit — no AI credentials required for replay.
Targeting a base URL
Everything is relative to the project directory, and the target can be overridden per run — so two worktrees can run in parallel without colliding:
scout go --base-url http://localhost:3001 # worktree B on its ephemeral server
SCOUT_BASE_URL=http://localhost:3001 scout go # same, via env
SCOUT_BASE_URL=https://staging.myapp.com scout go --no-heal # against staging
Precedence: --base-url flag (or the baseUrl param of the scout_run MCP tool) > SCOUT_BASE_URL > baseUrl in scout.config.json.
Recorded scripts store navigation relative to the base URL in effect at recording time, so a script recorded against :3000 replays unchanged against :3001 or staging.
CI (GitHub Actions)
Deterministic replay uses no LLM, so the gate needs no AI credentials. That is what makes Scout safe to drop into an autonomous fix-to-PR loop: the agent that wrote the feature proves the outcome holds, and the gate that re-checks it costs nothing per run.
qa-browser:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/setup-node@v4
with: { node-version: 24 }
- run: npm ci && npx playwright install --with-deps chromium
- run: npm run start:test-server & # app running
- run: npx scout go --no-heal # pure replay, no LLM, exit 1 on failure
env: { SCOUT_BASE_URL: "http://localhost:3000" }
- run: npx scout report >> "$GITHUB_STEP_SUMMARY"
if: always()
- uses: actions/upload-artifact@v4 # traces + screenshots in the action run
if: always()
with: { name: scout-runs, path: .scout/runs/ }
The PR gate
npx scout report --check # exit 1 if ANY scenario is not `verified`, exit 0 otherwise
--check is the gate primitive — no grepping markdown for emojis. A scenario passes only with status verified; failed, partial, blocked, and pending all fail the check. An empty suite passes vacuously (test summary.total if you require scenarios). See the CLI reference for --json, and Verdicts & exit codes for what each status means.
Healing in CI
To let CI re-record on a legitimate UI change, add ANTHROPIC_API_KEY (or another provider key) and drop --no-heal: npx scout go. When the UI changed, the job re-records the script and the .scout/scripts/ diff shows up for commit (e.g. via a PR bot).