Documentation
Supported languages
Use Supercov with your project's language and test suite.
Supercov works with JavaScript, TypeScript, Python, Ruby, Rust, Go, Java and Kotlin. It runs the test command your project already uses; you don’t need to move to another runner.
Languages and test suites
| Language | Common test suites | Runtime |
|---|---|---|
| JavaScript / TypeScript | Vitest, Jest, node:test, bun:test, Playwright, Mocha, AVA | Node.js 22 or newer; Bun for bun:test |
| Python | pytest, unittest | CPython 3.9 or newer |
| Ruby | RSpec, Minitest, test-unit, Cucumber | Ruby 3.4 for full coverage; Ruby 3.3 has limited coverage |
| Rust | cargo test, doctests, cargo-nextest | Rust 1.95 toolchain |
| Go | go test | Go 1.22 or newer |
| Java | JUnit 5, TestNG, Spock | JDK 17 or newer; Maven or Gradle |
| Kotlin | Kotest, JUnit 5, Spock | JDK 17 or newer; Gradle |
React and Next.js projects use their existing test suites too. Support depends on how the tests execute your code, not the framework used to build the app.
What support means
Lines, branches, MC/DC and assertion coverage are available across these languages. The detail Supercov can record depends on the runner and where your code executes.
For example, a report may show coverage for the whole suite without being able to name the individual test that reached a line. Assertion coverage needs execution and a passing assertion linked to the same test, so this distinction matters. Browser code and remote processes also need a supported way to return their results.
Native bun:test coverage is attributed to individual test bodies, with lifecycle
hooks recorded separately as setup. Async, concurrent and parameterized tests
are supported; see Bun support and outcome limits.
Coverage shown as Unattributed has no named test identity. It does not imply
that the process ran in a container or virtual machine.
The runner support reference lists those differences, including supported versions and known limits. If Supercov cannot measure something, your agent should report that limit, not try to fix it by adding tests.
Use your normal project environment
Choose your language above, then copy the prompt in Getting started or follow Installation. Your agent can use the matching npm package or native entry point. Python, Ruby, Rust and Go projects don’t need Node.js to run Supercov.
Keep the project’s own test dependencies, interpreter and services available. If tests normally run inside a container, have your agent run Supercov there too.
Compare coverage tools
If you already collect coverage, these guides explain what Supercov adds and when your existing tools may be enough: