Nashira
Deterministic CI report cards for JUnit, SimpleCov, and benchmark JSON.
Features · Installation · Quick start · GitHub Action · Failure policies · Development
Nashira creates deterministic CI report cards from JUnit, SimpleCov, and benchmark JSON. Every build writes both a PNG and a Markdown summary, so the report remains useful when images are unavailable.
Features
- One CI snapshot — combine tests, coverage, benchmarks, and run metadata.
- Resilient parsing — malformed report files become visible warnings.
- Deterministic output — render repeatable PNG cards through Zaniah.
- Markdown fallback — always emit a readable table for Job Summaries.
- Coverage history — retain up to 50 points and show recent trends.
- Failure policies — fail on test failures or coverage regression.
- GitHub integration — cache history, publish a history branch, or update a pull request comment.
Installation
gem install nashiraNashira requires Ruby 3.2 or newer.
Quick start
nashira build \
--junit "tmp/junit/*.xml" \
--coverage coverage/.last_run.json \
--bench tmp/benchmarks.json \
--history .ci-history/history.json \
--out nashira-card.png \
--summary nashira-summary.mdThe Markdown output includes test counts, coverage and delta, benchmark values, slow tests, failures, and a coverage trend when enough history exists.
GitHub Action
permissions:
contents: read
steps:
- uses: actions/checkout@v4
- name: Run tests
run: bundle exec rake
- uses: noxdea/nashira@v0.1.0
with:
junit: "tmp/junit/*.xml"
coverage: coverage/.last_run.json
bench: tmp/benchmarks.jsonThe action appends the generated Markdown to GITHUB_STEP_SUMMARY and caches
history by default.
| Input | Default | Description |
|---|---|---|
junit |
— | JUnit glob |
coverage |
— | SimpleCov JSON path |
bench |
— | Benchmark JSON path |
history |
.ci-history/history.json |
History JSON path |
out |
nashira-card.png |
PNG output path |
summary |
nashira-summary.md |
Markdown output path |
history-branch |
— | Orphan branch used for persistent history and the image |
comment-on-pr |
false |
Update one Nashira pull request comment |
history-branch requires contents: write. Pull request comments require
issues: write; pass github-token only when the default token is not
suitable.
Failure policies
Fail when tests fail:
nashira build --junit "tmp/junit/*.xml" --fail-on testsFail when coverage drops below an explicit baseline:
nashira build \
--coverage coverage/.last_run.json \
--base-coverage 92.5 \
--fail-on coverage-dropUse --theme, --title, --branch, --commit, and --run-url to attach
presentation and run metadata.
Development
bundle install
bundle exec rake
bundle exec rbs -I sig validate
gem build --strict nashira.gemspecContributing
Bug reports and pull requests are welcome on GitHub.
License
Nashira is available under the MIT License.