87% coverage. Zero feature coverage.
Coverage tools tell you which lines executed. They don’t tell you whether your features work. The gap is where production bugs live.
The coverage illusion.
Feature coverage measures whether end-to-end user journeys work. Line coverage measures which code executed. Istanbul, Codecov, and JaCoCo answer the second question. They cannot answer the first.
Your checkout flow touches five services. Each file 95%+ covered. Every unit test green. The coverage report says 94.8% — ready to merge. It has no way to tell you that when a customer applies a coupon and has a subscription discount, the total goes negative.
Coverage has no concept of “correct.” It only has a concept of “executed.” TraverseTest tests the entire journey and asserts on the final state — not on whether individual functions ran. See how it works.
Coverage tools are not bad. They catch dead code and highlight untested files. But they solve a different problem than the one that causes production incidents.

The bug coverage can't see.
Two well-tested functions. 96% combined coverage. Broken in production.
applyCoupon() has 96% coverage. applySubscriptionDiscount() has 95%. Both individually correct. Together, a subscriber applies coupon SAVE30 to an $80 cart and the total goes to −$12.40.
Coverage tools couldn’t see it because they measure within single functions, not across them. TraverseTest would catch it because it tests the entire checkout feature end-to-end.
When you set a coverage target (“85% by Friday”), you incentivize tests that hit the number — not tests that catch bugs. Tests that call a function just to verify it doesn’t throw. Trivial assertions. The infamous istanbul ignore next.
TraverseTest has no coverage target. It generates tests from features. Coverage emerges as a side effect — you might end up at 95% or 75%. The number is whatever it is. What matters is that journeys work.
A payment service with 90% coverage. An inventory service with 85% coverage. Together, they fail to create an order because the inventory service’s webhook signature doesn’t match what the payment service expects. Coverage tools can’t see this — they measure within a single service.
Side by side.
TraverseTest doesn’t replace coverage tools. Use both — coverage for dead code detection, TraverseTest for feature verification. Together you get line coverage and feature coverage.
Coverage is not confidence.
Your users don’t care that 95% of your code was executed. They care that they can complete their tasks. Also compare us to AI test generators and E2E testing services.