COVERAGE DROP CHECK · GUIDE
Coverage is a ratio, not a count of tests. A pull request can lower the number without deleting a single assertion — see the first question below for the arithmetic, then the file list for which modules actually moved.
Guessing from the overall percentage wastes time writing tests in the wrong file. Compare the coverage XML from main against the one from this PR and let the file list tell you — free, runs in your browser, nothing uploaded.
Open Coverage Drop Check →Coverage is covered lines divided by executable lines. Adding a new branch, a new file, or a refactor that introduces executable lines you did not test increases the denominator. The tests you already had still pass; the rate still falls.
A floor only asks whether the current number is above a threshold. A drop from 92% to 81% is 11 points and still above 80, so the floor stays green. A delta check against a baseline report is what catches that.
It can go either way. Removing a 100%-covered module raises the overall rate if the remaining code was worse; removing a poorly covered module lowers the rate. The file list on a delta report is what tells you which happened, not the single overall number.
Keep the coverage XML from main (or the last release) and produce one from the pull request, then compare them. The free Coverage Drop Check tool on this site does that from Cobertura or JaCoCo reports you already have, with no signup and nothing uploaded.
An extra if, an error path, or a feature flag adds executable lines. Existing tests still hit the old path, so they stay green, and the file's rate falls. This is the most common "I didn't touch tests" drop.
A new module starts at 0% unless you added tests in the same PR. The overall rate drops in proportion to how large the file is, even when every previously covered file is unchanged.
Extracting a helper, inlining a function, or moving code between files can change which lines the same tests hit. The behaviour is identical; the coverage map is not. Compare the file list before assuming tests are missing.
--cov-fail-under and similar gates only fire at a threshold. A series of small PRs can walk coverage from 94% to 81% one point at a time without any of them failing the floor. A delta against main on every PR stops that walk.