Find missing tests

❌ Coverage percentage targets let untested code slip through code review. Post-factum test additions cost you more and miss the context.

✅ Undercover integrates with your CI and local workflow to warn on all methods, classes, blocks and branches that were changed without test coverage. Catch them early, prevent bugs and ship with confidence.

Undercover GitHub comments
Sign Up with GitHub

Free forever for open-source repos.
14-day free trial for private repos. Supports Ruby and GitHub.

Leading Ruby engineering teams review test coverage with undercover

How it works

Stop focusing on getting to 100% test coverage.
Detect when changed code is untested before it's deployed.

Find untested code blocks

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 Undercover understands code structure and only works with the current diff.

Undercover GitHub comment

Ship on green

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.

Commit status check from Undercover

Monitor 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 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.

Check summary when coverage fails

Choose your setup

Install the Undercover GitHub App or explore the Ruby gems family

Undercover GitHub App

$49 per month

VAT not included, try it free for 14 days

Undercover 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

✅ Coverage analytics and reporting (in-app)

✅ Unlimited builds for private and public repos

✅ Unlimited users

Sign Up with GitHub

Open Source

Undercover is built on open-source and will always remain free to use for public GitHub repositories.

If a hosted GitHub App integration won't work for you, check out these links to get started and with local and CI/CD workflows:

Why Undercover?

Updates and links to read about Ruby test coverage 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 2.5. Ruby’s simplecov can report branch coverage too and now so does undercover with the new 0.4 release!
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.
So what is the value of coverage analysis again? Well it helps you find which bits of your code aren't being tested. It's worth running coverage tools every so often and looking at these bits of untested code. Do they worry you that they aren't being tested?

Find untested code in your PRs

Free for open-source repositories. Organization plans start at $49 per month with a free 14-day trial.

Sign Up with GitHub