Project

nashira

0.0
The project is in a healthy, maintained state
Parse test, coverage, and benchmark reports into deterministic PNG and Markdown summaries.
2005
2006
2007
2008
2009
2010
2011
2012
2013
2014
2015
2016
2017
2018
2019
2020
2021
2022
2023
2024
2025
2026
 Dependencies

Runtime

>= 0.6.0, < 0.7
 Project Readme

Nashira

Deterministic CI report cards for JUnit, SimpleCov, and benchmark JSON.

Gem version Gem downloads CI Ruby 3.2 or newer MIT license

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 nashira

Nashira 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.md

The 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.json

The 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 tests

Fail when coverage drops below an explicit baseline:

nashira build \
  --coverage coverage/.last_run.json \
  --base-coverage 92.5 \
  --fail-on coverage-drop

Use --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.gemspec

Contributing

Bug reports and pull requests are welcome on GitHub.

License

Nashira is available under the MIT License.