"I've tested all the changes!"
Sure you have, Claude.
We found Claude stops at 75% branch coverage when making changes. Verify your human and AI-written PRs with structure-aware coverage checks, and catch untested changes before you ship.
๐ฏ Ship every PR knowing what's tested
๐ ๏ธ Works with all Ruby testing frameworks
๐ Free forever for open source
14-day free trial for private repos. No seat-based pricing. Supports Ruby and GitHub.
Ship on green
No untested changes in your pull request? Merge with confidence. All code, whether written by humans or AI, is verified.
If there are gaps, you control the rules: require the check to pass before merging, or use SimpleCov's :nocov: comments to explicitly allow exceptions. You can also configure the check to be neutral and fail on specific hot code paths. Either way, you're verifying coverage as you change code, not adding it retroactively or chasing vanity metrics.
It's always been great as a pre-release gut-check but lately it's become absolutely essential for ensuring our AI agent-written PRs have the coverage we require.
How it works
Detect when changed code is untested before it's deployed.
Stop chasing 100% and focus on what you're actually shipping.
Find untested code blocks
Perfect for auto-generated code that often miss critical paths. Built on SimpleCov and code structure analysis, Undercover checks guide the programmer to test adequately.
Worried about too many comments? You won't receive more than one comment per method, because Undercover understands code structure and only works with the current diff. Annotations are reported on changed classes, methods or blocks where line coverage or branch coverage was missing.
def renew!(months:) update!(ends_at: ends_at + months.months)endMonitor your test suite health
Lists file names, class/method names and coverage information for a commit or pull request. Methods that cause the check to fail are flagged: one or more line or branch appears in the PR diff and has to be fixed.
All others provide a refactoring opportunity for you to improve the test coverage if it's low somewhere outside of the diff.
Order#calculate_tax100%
โ ๏ธ Subscription#renew!0%
Invoice#line_items67%
Account#deactivate!100%
Track coverage over time
View your recent commits and see how coverage evolves across your project. Filter by repository, branch and time.
The dashboard provides a clear timeline of your pull requests, making it easy to find changes that could be worth revisiting and improving.
Shift left: catch gaps before you push
Run the undercover gem against your diff locally, the same check that runs in CI. Wire it into your editor or coding agent so coverage gaps get fixed before the pull request, not in review.
Pairs with undercover-claude to give your coding agent precise, per-method targets.
Choose your setup
Install the Undercover GitHub App or explore the Ruby gems family
| Open Source Public repos & OSS maintainers Free forever Get started | Essentials Small to mid-size engineering teams $69/mo per GitHub org Start free trial | Pro Large organizations $279/mo per GitHub org Start free trial | |
|---|---|---|---|
| Coverage | |||
| GitHub Check annotations | โ | โ | โ |
| Branch coverage | โ | โ | โ |
| ERB view coverage new | โ | โ | โ |
| Coverage dashboards | โ | โ | โ |
| Scale | |||
| Public repositories | โ | โ | โ |
| Private repositories | โ | โ | โ |
| Unlimited team size | โ | โ | โ |
| Monthly check builds | โ | 1,000 | Unlimited |
| Concurrent builds | โ | 3 | Unlimited |
| Support | |||
| API access | โ | โ | โ |
| Email support | โ | โ | 24h SLA |
| Free trial | โ | 14 days | 14 days |
Pricing is per GitHub organization, not per seat. VAT not included. Yearly discounts available by default. Get in touch for custom solutions or self-hosted setups.
Open source & self-hosted
Undercover is built on open source and free for public repositories. It also runs locally as a fast feedback loop before you push, or in CI:
- Improve your Ruby code reviews with actionable code coverage and Undercover
- grodowski/undercover
- grodowski/undercover-claude
- grodowski/pronto-undercover
- nimblehq/danger-undercover
Get in touch for support or to discuss a custom solution.
From the Ruby community
I always try to show my appreciation for tools that have a positive impact on a project's quality. That's why I would like to highlight undercover-ci.com today. Definitely a game-changer for ensuring code coverage meets expectations!
I think it is a product that comes at the right time when more people are generating code/tests with LLMs
Integrating good tools into your code review flow simplifies everything. A great example is undercover-ci.com, ensuring each change is well-tested. Kudos to @mrgrodo for creating it and offering fantastic support for any queries!
Shoutout to @mrgrodo's (still underappreciated) work on undercover-ci.com! This little gem helped me keep 99% code coverage in one of my Open Source Ruby gems. Totally recommend it if you care about the quality of your open source work!
Verify your next pull request
Catch untested changes before you ship, human or AI written.
Sign Up with GitHub14-day free trial for private repos. No seat-based pricing. Supports Ruby and GitHub.