https://github.com/usebruno/benchmark
Benchmark visualisation for Bruno CI
https://github.com/usebruno/benchmark
Last synced: about 1 month ago
JSON representation
Benchmark visualisation for Bruno CI
- Host: GitHub
- URL: https://github.com/usebruno/benchmark
- Owner: usebruno
- Created: 2026-05-05T22:40:43.000Z (3 months ago)
- Default Branch: main
- Last Pushed: 2026-05-28T11:00:57.000Z (2 months ago)
- Last Synced: 2026-05-28T13:04:30.106Z (2 months ago)
- Language: JavaScript
- Size: 79.1 KB
- Stars: 0
- Watchers: 0
- Forks: 0
- Open Issues: 1
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# Bruno Benchmarks
Performance tracking dashboard for [Bruno](https://github.com/usebruno/bruno).
## What is this?
A static site that visualizes benchmark results across commits. Tests run in Bruno's CI on Ubuntu, macOS, and Windows — results are ingested here and rendered as trend charts.
- **Dashboard** — trend charts per benchmark, all OS overlaid, switchable metrics (mean, median, p90, p99, etc.)
- **Docs** — how the system works, data format, and how to add new benchmarks
- **Ingestion** — fully autonomous script that discovers suites and OS from GitHub Actions artifacts
## Quick start
Serve locally:
```
python3 -m http.server 8090
```
Open `http://localhost:8090`.
## Ingesting data
The ingestion workflow only needs a source repo and commit SHA. It finds the workflow run, downloads artifacts, discovers suites from filenames, and updates the manifest automatically.
**Manual trigger:** Actions → Ingest Benchmark Results → Run workflow → provide repo and commit SHA.
**Automatic trigger:** Bruno's CI sends a `repository_dispatch` event with the repo and commit SHA.
## Structure
```
├── index.html # Dashboard
├── docs.html # Documentation
├── assets/
│ ├── style.css # Shared styles (dark/light themes)
│ ├── app.js # Dashboard logic (ECharts)
│ ├── docs.css # Docs page styles
│ └── icons.svg # SVG sprite
├── data/
│ ├── manifest.json # Auto-populated suite registry
│ └── {suite}/{os}.json # Historical data (one per OS per suite)
├── scripts/
│ └── ingest.js # Autonomous ingestion script
└── .github/workflows/
└── ingest.yml # Ingestion workflow
```
## Adding a new benchmark
1. Write `tests/benchmarks/{name}/{name}.bench.ts` in the Bruno repo
2. Push to `main` — results are uploaded as artifacts
3. Trigger ingestion with the commit SHA
4. The dashboard picks it up automatically
No manual config needed. The ingestion script auto-registers new suites in `manifest.json`.