Healthy test suite, commit by commit
❌ Untested code slips through percentage test coverage thresholds. Reviewers miss untested code changes. Post-factum test additions cost more and miss the context.
✅ UndercoverCI integrates with your CI or local workflow and warns on all methods, classes, blocks and branches that were changed without test coverage. Catch them early and ship with confidence.
Get a free account and a 14-day trial for private repositories. Supports Ruby and GitHub.
How it works
Stop focusing on getting to 100% test coverage.
Detect when changed code is untested before it's deployed.
Actionable review comments
Each class, method or block that's been changed without tests receives a check annotation including detailed information about what's missing and where: line coverage or branch coverage, plus respective line numbers and number of hits.
Worried about too many comments? You won't receive more than one comment per method, because UndercoverCI understands code structure and only works with the current diff.
Pull request status checks
No untested changes in the diff? Merge away. Otherwise, it's up to you to configure whether a passing check is required to merge. If you decide to make it required, selected annotations can still be muted with SimpleCov's
:nocov: comment syntax to go green and fix coverage later.
Pull request test coverage summary
The Check Details Breakdown includes file names, class/method names and coverage information. Methods that cause the check to fail are flagged with a warning emoji (⚠️) - 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.
Choose your setup
Install UndercoverCI's hosted GitHub App or explore the Ruby gems family
$49 per monthVAT not included, try it free for 14 days
Fully-featured GitHub App code review integration with quick setup for your organization. Included features:
👉 Coverage warnings as GitHub annotations (via GitHub Checks)
👉 Diff coverage summary view for each commit
👉 Branch coverage support
👉 Unlimited builds for private and public repos
👉 Unlimited users
The UndercoverCI project and related Ruby gems are entirely open-source and free to use locally and in your CI/CD workflows.
If a hosted and convenient GitHub App integration is not for you, check out these links to get started:
Read more about Ruby code coverage and unit testing strategy
The purpose of branch coverage is to check whether every conditional branch in a given line of code has been tested and Ruby has this feature since
simplecovcan report branch coverage too and now so does undercover with the new
Today, I’m launching UndercoverCI— a CI robot who protects your Ruby codebase from untested code changes. Take a moment to learn why you should add it to your team’s code review workflow. Adding UndercoverCI to your code review workflow will prevent untested code changes from slipping into production without anyone noticing.
For existing projects, because of the sheer workload of having to write the tests to cover code that you have not written to fill the gaps, it is much harder to get to the confidence level that having 100% coverage brings, but at least by using code coverage reports you can make informed decisions on how risky a change is going to be.
Detect untested methods in your PRs
Free for individuals and open-source repositories. Organization plans start at $49 per month with a free 14-day trial.Sign Up with GitHub