Reports

Understand the output formats generated by Overload.

Run Folder Layout

Every run writes its output to its own isolated folder under reports/:

reports/
  run_20260609_153021_abc123/
    report.html        ← HTML report (charts, stats, request log)
    meta.json          ← Run metadata sidecar (persists history across restarts)
    responses.json     ← Response bodies (only present when --save-responses is used)

The folder name embeds the datetime and a short random suffix so it is both human-readable and collision-proof. On restart, Overload scans reports/run_*/meta.json to restore past runs in the Results table automatically.

HTML Report (Default)

The HTML report is a self-contained, single-file document — embeds all CSS and JavaScript so you can share it by email or Slack without worrying about missing assets.

Contents:

Generate it explicitly:

overload run --collection api.json --format html

Saving Response Bodies

By default, response bodies are not saved to keep tests memory-efficient. Enable it to capture the first 10 KB of each response for debugging:

# CLI
overload run --collection api.json --save-responses

# Browser UI
# Toggle the "Save response bodies" checkbox on the Runner page before starting.

When enabled, a responses.json file is written alongside report.html in the run folder. It contains every captured body with its matching URL, status, latency, and timestamp. The HTML report itself does not embed the bodies (keeping it lean and shareable).

In the browser UI, the Results table shows a Responses download button next to the HTML Report link whenever bodies were captured. The API endpoint is:

GET /api/runs/{run_id}/responses

responses.json schema:

{
  "run_id": "20260609_153021_abc123",
  "count": 42,
  "responses": [
    {
      "index": 0,
      "request_name": "Create User",
      "method": "POST",
      "url": "https://api.example.com/users",
      "status": 201,
      "latency_ms": 87.4,
      "timestamp": 0.0,
      "response_body": "{\"id\":\"u_123\",\"email\":\"alice@example.com\"}"
    }
  ]
}

Partial Reports on Stop

Stopping a test — whether by clicking Stop in the UI or sending Ctrl+C in the CLI — always produces a partial report from the data collected so far. Nothing is discarded.

JSON Export

To feed results into a custom dashboard or analytics pipeline:

overload run --collection api.json --format json

Also available per-run from the browser API: GET /api/runs/{id}/export/json

CSV Export

One row per HTTP request — raw, unaggregated timeline data.

Columns: timestamp, request_name, method, url, status_code, latency_ms, error, body_size_bytes

overload run --collection api.json --format csv

Also available per-run: GET /api/runs/{id}/export/csv

JUnit XML

Translates assertion results into a standard format recognised by GitHub Actions, GitLab CI, Jenkins, and Azure DevOps.

overload run --collection api.json --assert "p95_latency_ms<500" --junit results.xml

Run History

The browser UI and GET /api/runs automatically load historical runs on startup by scanning the reports/ directory for meta.json sidecars. This means you can close and reopen Overload without losing your run history, as long as the reports folder is preserved.