Skip to main content

Read the report

Every run writes a summary to the terminal. It can also write three files. Use the one that fits the job.

FileOptionFor
HTML report-report report.htmlA person. Open it in a browser. It works offline.
JSON summary-out run.jsonA script, an agent, or a later comparison.
JUnit XML-junit junit.xmlCI. Each threshold and check shows as a test case.

The HTML report is written to vegaload-report-<timestamp>.html if you do not give a path. VegaLoad opens it for you unless you pass -no-open. When the live view is showing the run, its page opens instead, and the report is written but not opened.

The terminal summary​

fixed-vus summary
elapsed: 15.001214614s
total: 3691
failed: 107
mean: 40.575737ms

thresholds
FAIL p95 < 20ms (observed 58.32ms)
FAIL error_rate < 0.01 (observed 0.02899)
thresholds breached

total is the number of calls. failed is the number that returned an error. A threshold line shows the limit you set and the value VegaLoad saw.

The exit code​

These are the codes you will see most.

Exit codeMeaning
0The run finished. Every threshold you set passed.
2VegaLoad refused to start. For example, the host is not on the allow-list.
3A threshold or the baseline gate failed.

A run with no threshold exits 0 even if every call failed. Always set a limit when a pass or fail matters. For example: -threshold 'error_rate < 0.01'.

The HTML report​

The top shows the total, the failed count and the error rate. The sections follow in this order.

Thresholds. One row per limit, with PASS or FAIL, the limit and the observed value. The badge on top says "All thresholds passed" or "Thresholds breached".

A report with two failed thresholds

Steps. This appears when the scenario wraps stages in step(name, fn). Each step has its own runs, failed count, error rate and p50, p95 and max latency. A step shows FAIL if any of its runs failed. That is not the same as a threshold. A threshold can target a step: -threshold 'p95{step="list"} < 300ms'.

A report with a steps table

Protocols. This appears when the run made calls over more than plain HTTP. Each protocol has its own calls, failures and latency. A threshold can target one: -threshold 'p95{protocol="ftp"} < 500ms'.

Latency. The distribution of response times: min, p50, p90, p95, p99, max and mean. With steps, this row is for the whole iteration. The step table has the per-step numbers.

Over time. Two small charts, one point per second. One shows requests per second. One shows the error rate. A dip or a spike here tells you when something changed.

The JSON summary​

-out run.json writes the same numbers as the report. Times are in nanoseconds, in fields that end in _ns.

FieldWhat it holds
executor, started_at, elapsed_nsHow the run was shaped, when it began, how long it ran
total, failed, error_rateThe call counts. error_rate is a fraction, so 0.029 is 2.9%
latencymin_ns, mean_ns, max_ns, p50_ns, p90_ns, p95_ns, p99_ns
time_seriesOne entry per second: requests, failed, rps, error_rate
thresholdsOne entry per limit: name, metric, operator, value, observed, passed
thresholds_passedtrue only if every limit passed. Absent if you set none.
stepsOne entry per step, with its own counts and latency
protocolsOne entry per protocol, with its own counts, latency and operations

An agent reads this file with the get_results tool.

The JUnit file​

-junit junit.xml writes one test case for each threshold, check and baseline gate. CI systems such as GitHub Actions, Jenkins and Harness CI show them as tests. The totals and the p95 are in the file as properties.

Compare with an earlier run​

Save the JSON from a good run. Pass it on the next run:

vegaload run -target http://localhost:8080/widgets -protocol http1 \
-vus 10 -duration 30s -baseline baseline.json -max-regression 10

If p95 or the error rate is more than 10% worse, the run exits 3. With no -max-regression, any increase fails. VegaLoad keeps no baseline store. The file is yours to keep, for example in the repo.

Explain a bad run​

vegaload diagnose run.json

This prints rule-based findings: the failure rate, a long latency tail, and whether failures came in a burst or were spread out. An agent uses the diagnose_failure tool for the same job.