LoadWave
Getting started

Quickstart

Run the built-in demo, then a one-line smoke test against a real URL. No configuration file and nothing to stand up.

The fastest way to see what LoadWave does is to let it test something it starts itself.

The demo

loadwave demo

That starts a small HTTP server in the same process — a few endpoints of differing speed with a sprinkling of errors — runs a two-scenario test against it, and serves the dashboard on localhost:8088. Nothing to configure, no service to point at.

loadwave demo                        # runs for 10 minutes; Ctrl-C to stop early
loadwave demo --duration 2m --vus 50
loadwave demo --headless             # no dashboard, just the report

The demo target is a toy. Its numbers say nothing about your hardware or your network — it is there to show you the dashboard and to prove a fresh build works end to end.

Open the dashboard and you get live charts for virtual users, throughput, response time and responses by status class, a per-endpoint breakdown, threshold verdicts, agent health, an event log, and a Failed requests panel. Reading the dashboard walks through it.

A smoke test against a real URL

No configuration file needed. When a run has no scenarios anywhere — none in YAML, none compiled in — but a base URL is set, LoadWave synthesises a single GET of that URL's path:

loadwave run --url https://example.com/health --vus 50 --duration 30s

Add --ui to watch it, or leave it off to get a report and an exit code.

Fifty virtual users here produce roughly fifty requests a second, not thousands. LoadWave pauses one second after every request by default, which is a deliberate safety floor rather than an oversight — see betweenRequests. Pass --between-requests 0 when flat out is the point.

Turning that into a throughput test

loadwave run --url https://example.com/health \
  --vus 200 --duration 1m --between-requests 0

Reading the report

Whatever you run, the report at the end looks like this:

──────────────────────────────────────────────────────────────────────────────
storefront — completed
30s to 100 VUs, then 5m0s to 100 VUs, then 30s to 0 VUs
ran for 6m0s across 1 agent
──────────────────────────────────────────────────────────────────────────────

METRIC             VALUE
requests           184,209
throughput         512/s
duration p95       46.3ms
failed requests    2,931 (1.59%)
checks passed      181,278 of 184,209

REQUEST          COUNT    AVG     P95     P99     MAX     ERRORS
view product     92,104   30.3ms  48.6ms  50.4ms  91.2ms  3.18%
list products    92,105   15.1ms  24.7ms  25.5ms  62.1ms  0%

THRESHOLD                    ACTUAL  RESULT
http_req_duration p95 < 500  46.34   pass
http_req_failed rate < 0.01  0.0159  FAIL

Exit code 2 — a threshold was breached. In a pipeline, that just caught a regression. The exit-code contract is the part worth knowing before you wire this into CI.

Next

On this page