Fast, lightweight Rust report generator for allure-results. Built for the workflow that matters first — see what failed, understand why, move on.
- Failure-first view — failed and broken tests surface immediately, grouped by error signature
- Overview view — suite health, full test list, attachments
- Single-file mode — one self-contained HTML file, no server required
- Watch mode — keep a process running and regenerate the report when new results appear
- Tiny footprint — no JS framework, no external dependencies in the output
- CI-friendly — optional Markdown and JSON summaries for PR comments and pipelines
- Rust + Cargo
allure-resultsdirectory fromallure-pytest
git clone https://github.com/gpilikin/rullure
cd rullure
cargo build --releaseThis is a Rust project built with Cargo. The binary will be at target/release/rullure.
rullure generate ./allure-results -o ./report
open ./report/index.htmlFor CI — single file with no server needed:
rullure generate ./allure-results -o ./report.html --single-fileFor local runs that keep producing new results:
rullure watch ./allure-results -o ./reportrullure generate [OPTIONS] <RESULTS_DIR> -o <OUTPUT>
rullure watch [OPTIONS] <RESULTS_DIR> -o <OUTPUT>
| Option | Description |
|---|---|
--view failures|overview|auto |
Initial view. auto picks failures when any exist |
--single-file |
Output one standalone HTML file |
--title "My Report" |
Report title |
--theme light|dark|auto |
Color theme |
--no-passed-attachments |
Skip attachments from passing tests |
--only-failures |
Include only failed/broken tests in data |
--summary-json ./summary.json |
Export run summary as JSON |
--summary-md ./summary.md |
Export Markdown summary for CI logs or PR comments |
Watch-only options:
| Option | Description |
|---|---|
--debounce-ms 1500 |
Wait for a short quiet period before rebuilding |
--max-wait-ms 5000 |
Force a rebuild even if changes keep arriving continuously |
--skip-initial |
Start watching without generating the initial report from current data |
CI report with Markdown summary:
rullure generate ./allure-results \
-o ./report \
--view failures \
--title "CI · $(git rev-parse --short HEAD)" \
--summary-md ./summary.mdCompact report without passed-test attachments:
rullure generate ./allure-results -o ./report --no-passed-attachmentsContinuously refresh the same report while tests write into allure-results:
rullure watch ./allure-results \
-o ./report \
--debounce-ms 1500 \
--max-wait-ms 5000report/
├── index.html
├── assets/
│ ├── app.js
│ └── style.css
├── data/
│ ├── summary.json
│ ├── tests.json
│ ├── failures.json
│ ├── suites.json
│ └── attachments.json
└── attachments/
cargo check
cargo clippy --all-targets -- -D warnings
cargo testGleb Pilikin — github.com/gpilikin
MIT License