A self-hosted web dashboard for importing, storing, and comparing Gatling and k6 load test reports over time.
Upload Gatling .zip/.tar.gz archives or k6-reporter .html files and get a timeline of performance metrics, assertion results, SLA tracking, regression detection, ticket traceability, and webhook notifications for Slack, Microsoft Teams, or any HTTP endpoint.
| Category | Feature |
|---|---|
| Import | Drag & drop Gatling .zip/.tar.gz reports or k6-reporter .html files; tag with environment, version, notes, and ticket URL at upload time |
| Multi-tool | Gatling and k6 side by side, auto-detected on import; tool badge shown per simulation |
| Multi-simulation | Groups runs by simulation name; sidebar navigation with semaphore indicator and latest p95 / error rate |
| Timeline | Interactive line chart — p50 / p95 / p99 / rps; click legend to toggle lines; SLA reference lines; baseline marker |
| PASS / FAIL | Parses Gatling assertions or k6 thresholds; per-simulation semaphore in sidebar |
| SLA | Configurable p95 and p99 thresholds per simulation; rows and chart points highlighted when breached |
| Baseline pin | Pin any run as baseline; delta column compares all runs vs baseline; vertical marker in chart |
| Regression detection | Auto banner when the latest run's p95 exceeds the 5-run rolling average by more than 20% |
| Request breakdown | Expandable per-run sub-table with per-request metrics sorted alphabetically; sub-path requests hidden to reduce noise |
| Executive Summary | Collapsible card — Manager view (pass rate, p95 trend) and TL view (min/max p95, avg error rate, avg throughput). All metrics respect active filters. |
| Filters | Filter by period (7d / 30d / custom date range), status (PASS/FAIL), environment, and ticket URL; URL-shareable state |
| Ticket traceability | Link each run to a JIRA or Azure DevOps work item; badge shown in table and comparison dialog |
| Side-by-side compare | Select two runs → full-screen split panel with both original HTML reports in iframes |
| Webhooks | Per-simulation webhook with Slack Block Kit, Microsoft Teams Adaptive Cards, or Generic JSON payloads; enriched with full performance metrics |
| Export CSV | Download filtered runs as CSV including all metrics, metadata, ticket, and baseline flag |
| Metadata editing | Edit version, environment, notes, and ticket URL for any run after import |
| Pagination | Table paginates at 20 runs per page |
Backend — Node.js 20 + TypeScript, Express, cheerio (report parsing), adm-zip / tar, lowdb 1, multer.
Frontend — React 18 + TypeScript + Vite, Tailwind CSS + shadcn/ui, Recharts, TanStack Query v5, react-dropzone.
Infrastructure — Docker + Docker Compose, nginx (serves the frontend build, proxies /api/), named Docker volume for persistence.
- Docker ≥ 24 and Docker Compose v2
git clone https://github.com/rcampos09/Dashboard-Metrics-Performance-Manager.git
cd Dashboard-Metrics-Performance-Manager
docker compose up --buildOpen http://localhost:3000.
Gatling — compress the report directory and upload it via the UI or curl:
# From inside target/gatling/
cd your-gatling-project/target/gatling
zip -r /tmp/run.zip crudsimulation-20260301053047242/
curl -X POST http://localhost:3000/api/reports/upload \
-F "file=@/tmp/run.zip" \
-F "environment=staging" \
-F "version=v1.2.3"k6 — upload the k6-reporter HTML directly, no compression needed:
curl -X POST http://localhost:3000/api/reports/upload \
-F "file=@report.html" \
-F "environment=staging"See Report Formats for how each report is detected and parsed, including how to generate the k6-reporter HTML.
cd backend && npm install && npm run dev # ts-node-dev on :3001
cd frontend && npm install && npm run dev # Vite on :5173, proxies /api to :3001| Doc | Covers |
|---|---|
| Feature Reference | Metrics glossary, filters, SLA configuration, ticket traceability |
| Webhooks | Destination types, payload examples, delivery behavior, testing |
| API Reference | REST endpoints and the Run/RequestMetrics data model |
| Report Formats | How Gatling and k6 reports are detected and parsed, field-by-field |
| Architecture | Project structure and the report-ingestion pipeline |
| Changelog | Version history and development practices |
MIT
Rodrigo Campos 📧 rcampos.tapia@gmail.com 🌐 rodrigo-campos.dev

