Skip to content

perf-reporting

perf-reporting generates professional performance reports from raw JMeter, k6, and Gatling output — Apdex scores, SLA checks, percentile charts, and exportable HTML reports.

TierPrice
Free (CLI + web + Electron desktop, free license key)Free
Pro (CLI, unlimited runs, no watermark)£79 one-time
Enterprise (white-label, custom branding)£799 one-time

Download from martkos-it.co.uk/store/perf-reporting-dashboard. Requires a free license key (emailed on registration) entered on first launch.

There is no npm package — this page used to say npm install -g @martkos-it/perf-reporting, and that package has never existed. The CLI ships inside the desktop download: the AppImage carries it, and a Pro or Enterprise licence key unlocks it. A free key is refused with exit code 4, which is deliberate — CI/CD gating is the paid capability.

Terminal window
perf-report -i results.jtl -o report.json --summary --fail-on-error

The desktop app is the report view: it opens a results file and renders the charts, Apdex and SLA checks locally. There is no hosted version — this page used to link martkos-it.co.uk/tools/perf-reporting, which has never existed. The site’s SPA fallback answered that URL with the homepage and a 200, so the link looked alive.

Terminal window
# From k6 JSON output
perf-report \
-i results.json \
--tool k6 \
-o report.html
# From JMeter JTL
perf-report \
-i results.jtl \
--tool jmeter \
-o report.html
# From Gatling simulation.log
perf-report \
-i simulation.log \
--tool gatling \
-o report.html

Define SLA thresholds inline or via perf-ecosystem.yml:

Terminal window
perf-report \
-i results.json \
--tool k6 \
--sla-p95=1500 \
--sla-p99=3000 \
--sla-error-rate=1.0 \
--sla-apdex=0.85 \
-o report.html

The report shows pass/fail status per threshold with a summary section at the top.

When perf-ecosystem.yml is present, thresholds are picked up automatically:

thresholds:
response_time:
p95_max_ms: 1500
p99_max_ms: 3000
error_rate:
max_percent: 1.0
apdex:
min_score: 0.85
  • Summary: Apdex score, pass/fail SLA status, test duration, total requests
  • Response time distribution: p50, p75, p90, p95, p99, min, max
  • Throughput: requests/second over time
  • Error analysis: error rate, error types, failed samplers
  • Per-endpoint breakdown: response times and error rates per URL/sampler
  • Charts: timeline charts for response time and throughput
Terminal window
perf-report -i results.json --tool k6 -f html -o report.html

Requires Chromium (bundled with the Electron app; on CLI, uses puppeteer headless).

Apdex is calculated using configurable satisfied (T) and frustrated (4T) thresholds:

Terminal window
perf-report -i results.json --tool k6 --apdex-t=500
# Satisfied: ≤500ms, Tolerating: 500ms–2000ms, Frustrated: >2000ms

Default T = 500ms. Apdex formula: (satisfied + tolerating/2) / total_requests

perf-compare was folded into this product; the statistics live here now.

Terminal window
perf-report compare --baseline 'baselines/*.json' --current report.json

--baseline and --current each take a file, a directory or a glob, and may be repeated. --alpha sets the significance level (0.05 by default), --strict treats any regression as a failure, and --json gives machine-readable output for a pipeline.

It compares runs, not samples: each report contributes one value per metric, so the question it answers is whether this build’s p95 is worse than recent builds’ p95. Around eight runs are needed before the verdict is reliable, and that caveat reaches the exit code as well as the text rather than being buried in a footnote.

Terminal window
perf-report activate <key>
perf-report status
perf-report deactivate

The CLI is Pro and Enterprise only: a free key is refused with exit code 4. The desktop app and the web view are the free surfaces.