Tools

Tests that bite

Mutation testing and other ways to catch tests that pass no matter what.

Agents will write tests that pass whatever the code does. Rule 26 says every test has to prove it's worth keeping, and the proof is a break it catches. Mutation testers make those breaks on purpose. Snapshot and approval tools pin down output a person has looked at once, and the health tools go after the flaky and the slow.

Mutation testing

  • Ours

    flinch

    No pull request merges while code the Contract covers can break unnoticed.

    Go Open source, MITLatest release Oct 2026Source

  • Start here

    Bats-core

    Test framework for Bash scripts and Unix programs.

    Shell scripts that agents write get a harness with TAP and JUnit output.

    Infrastructure Open source, MIT6.3k starsLatest release Jul 2026Source

  • Start here

    cargo-mutants

    Breaks Rust code in small ways and reports which breaks the test suite missed.

    Shows which agent-written Rust tests pass whatever the code does.

    The maintainer calls it a semi-actively maintained spare-time project.

    Rust Open source, MIT1.3k starsLatest release Jun 2026Source

  • Start here

    Infection

    PHP mutation testing for PHPUnit and Pest, with minimum-score thresholds.

    The clear PHP choice, and its MSI threshold makes a merge gate easy.

    PHP Open source, BSD-3-Clause2.3k starsLatest release Oct 2026Source

  • Start here

    Mull

    LLVM-based mutation testing for C and C++.

    Native-code suites get the same escaped-mutant check other stacks have.

    C/C++ Open source, Apache-2.0844 starsLatest release Sep 2026Source

  • Start here

    mutaml

    Mutation testing for OCaml through a ppx rewriter.

    Fills the OCaml gap in mutation tooling.

    Haskell/OCaml Open source, BSD-2-Clause75 starsLatest release Oct 2026

  • Start here

    Muter

    Mutation testing for Swift and Xcode projects.

    One of the few ways to check whether agent-written iOS tests would notice a break.

    Swift/iOS Open source, MIT564 starsLatest release Sep 2023

  • Start here

    Mutineer

    Mutation testing for Ruby on Prism, with Minitest and RSpec support and no runtime dependencies.

    Scores only the lines a pull request changed, and its kill matrix names the tests that never catch anything.

    Runs in-process on Ruby 3.4 or later. Apps on older Ruby can run their suite through --test-command.

    Ruby Open source, MIT47 starsLatest release Oct 2026Source

  • Start here

    mutmut

    Python mutation testing with incremental runs and a terminal UI.

    Easy to run on pytest suites that agents grow quickly.

    Python Open source, BSD-3-Clause1.5k starsLatest release Sep 2026

  • Start here

    PIT (pitest)

    Bytecode mutation testing for the JVM with Maven, Gradle and Ant plugins.

    The default check for whether agent-written JUnit tests catch real breaks.

    Java/JVM Open source, Apache-2.01.9k starsLatest release Aug 2026Source

  • Start here

    Stryker.NET

    Mutation testing for C# projects, run through dotnet test.

    Shows which C# tests pass whatever the code does, a common trait of tests written just to go green.

    .NET Open source, Apache-2.02.1k starsLatest release Sep 2026Source

  • Start here

    Stryker4s

    Mutation testing for Scala through sbt and Maven.

    Brings a mutation score to Scala suites that agents extend.

    Java/JVM Open source, Apache-2.0217 starsLatest release Jul 2026Source

  • Start here

    StrykerJS

    Mutation testing for JavaScript and TypeScript with runners for Jest, Vitest, Mocha and Karma.

    Gives agent-written JS tests a mutation score to gate on in CI.

    JavaScript/TypeScript Open source, Apache-2.03.2k starsLatest release Aug 2026Source

  • Arcmutate

    Commercial PIT extensions for Kotlin and Spring, plus pull request analysis.

    Mutation runs only on the changed lines of a PR, which keeps merges quick when agents push often.

    Java/JVM Paid

  • Cosmic Ray

    Python mutation testing that can spread work across many machines.

    Suits large Python suites where one machine takes too long.

    Python Open source, MIT660 starsLatest release Aug 2026Source

  • Dextool

    libclang tool suite with a mutation testing plugin for C and C++.

    An option beside Mull for embedded and safety-critical C code.

    C/C++ Open source, MPL-2.0112 starsLatest release Sep 2025

  • go-mutesting

    Go mutation testing maintained by Avito as a fork of the original zimmski tool.

    A long-standing Go option with a different engine from flinch.

    The original zimmski/go-mutesting is stale, and this fork carries the work.

    Go Open source, MIT277 starsLatest release Dec 2025

  • gremlins

    Go mutation testing for small modules and microservices, with CI-friendly output.

    Thresholds let you fail a build on a weak mutation score.

    Still 0.x, so flags may change between releases.

    Go Open source, Apache-2.0439 starsLatest release Dec 2025Source

  • Major

    Research mutation framework that hooks into the Java compiler.

    Mostly used in studies. It gives a mutation score that is independent of PIT.

    Distributed as a zip download, and no public repo or license was found.

    Java/JVM Open source

  • Mutahunter

    Asks an LLM to write realistic mutants for any language, then runs your tests.

    LLM mutants can reach bugs that operator-swap mutation misses.

    Any language Open source, AGPL-3.0300 stars

  • mutant

    Ruby mutation testing that works with RSpec and Minitest.

    The mature Ruby option for proving agent-written specs fail when behavior changes.

    Free for open source. Commercial use costs $30 a month or $250 a year per developer.

    Ruby Source available2.2k starsLatest release Apr 2026

  • ooze

    Go mutation testing that runs as an ordinary go test.

    Slots into the existing test command, so there is no new tooling to learn.

    Go Open source, MIT290 stars

  • PIT Descartes

    PIT engine that replaces whole method bodies, giving fewer and faster mutants.

    A cheaper pass for large Java suites where full runs take too long.

    Java/JVM Open source, LGPL-3.0127 starsLatest release Sep 2025

  • Stryker Dashboard

    Hosts mutation reports and score badges for any tool that emits the shared report schema.

    Publishes mutation scores per branch, which backs rule 29.

    Any language Open source, Apache-2.030 starsLatest release Aug 2026Source

  • universalmutator

    Regex-based mutation generator that works on nearly any source language.

    A fallback when no mutation tool exists for your stack.

    Any language Open source, MIT164 starsLatest release May 2026

Approval and snapshot tests

  • Start here

    insta

    Snapshot testing for Rust with inline snapshots and a review CLI.

    Snapshots pin current behavior, and a reviewer has to read each diff because an agent can accept a bad one.

    Rust Open source, Apache-2.03k starsLatest release Oct 2026Source

  • Start here

    Mneme

    Snapshot-style auto assertions for ExUnit that write the expected value into the test.

    Brings an inline approval workflow to Elixir tests.

    Elixir/Erlang Open source, MIT140 starsLatest release Dec 2024

  • Start here

    tasty-golden

    Golden test support for the Tasty framework in Haskell.

    The usual way to pin output in Haskell tests.

    Haskell/OCaml Open source, MIT42 stars

  • Approval Tests (ApprovalTests.Java)

    Approval testing for Java that compares output against a stored approved file.

    Pins what legacy code does today, so a change an agent makes by accident shows up as a diff.

    Java/JVM Open source, Apache-2.0387 starsLatest release Jun 2026Source

  • Approvals.NodeJS

    Approval testing for Node with adapters for the common test runners.

    Approved files sit in plain view, which suits reviewers who find snapshot files too hidden.

    JavaScript/TypeScript Open source, Apache-2.0126 starsLatest release Sep 2026Source

  • ApprovalTests.cpp

    Approval testing for C++ that works with the major C++ test frameworks.

    Gives C++ code with no tests a characterization suite before an agent starts changing it.

    C/C++ Open source, Apache-2.0341 starsLatest release Mar 2024Source

  • ApprovalTests.Python

    Approval testing for Python with scrubbers and a pytest-friendly API.

    Freeze the output of code an agent is about to refactor, then see exactly what moved.

    Python Open source, Apache-2.0212 starsLatest release Aug 2026Source

  • expect-test (Rust)

    Inline expected-output assertions for Rust that update themselves when you set an environment variable.

    Expected values live in the source file, so reviewers see them in the diff.

    Rust Open source, Apache-2.0324 stars

  • go-snaps

    Jest-style snapshot testing for Go.

    Gives Go tests a stored-output check with an update flag.

    Go Open source, MIT269 starsLatest release Jul 2026

  • goldie

    Golden file testing for Go with an update flag.

    Suits CLI and template output where one file per case reads best.

    Go Open source, MIT265 starsLatest release Oct 2025

  • inline-snapshot

    Python snapshots written into the test source, with commands to fix or create them.

    Expected values land in the diff, so a changed snapshot gets seen in code review.

    Python Open source, MIT754 starsLatest release Oct 2026Source

  • Jest snapshots

    Built-in snapshot assertions in Jest, stored as files or inline.

    An agent can accept a snapshot update that nobody reads, so these need a review rule.

    JavaScript/TypeScript Open source, MITPart of JestLatest release Sep 2026Source

  • ppx_expect

    Inline expect tests for OCaml that promote new output into the source file.

    Jane Street's way to keep expected output visible in review.

    Haskell/OCaml Open source, MIT196 starsLatest release Oct 2022

  • Smoke

    Runs commands and compares stdout, stderr and exit code to expected files.

    Golden-master tests for any CLI, whatever language it is written in.

    Any language Open source, MIT93 starsLatest release May 2024

  • spatie/phpunit-snapshot-assertions

    Snapshot assertions for PHPUnit.

    Pins output in PHP tests with files a reviewer can read.

    PHP Open source, MIT699 starsLatest release Apr 2026

  • syrupy

    pytest snapshot plugin with pluggable serializers and file-per-snapshot output.

    Pins structured output in pytest with no hand-written expected values.

    Python Open source, MIT891 starsLatest release Sep 2026

  • Verify

    Snapshot testing for .NET that stores verified files next to the tests.

    Diffs of agent changes become plain files a reviewer can open.

    .NET Open source, MIT3.5k starsLatest release Oct 2026

Test suite health

  • Start here

    diff-cover

    Reports coverage on only the lines a diff changed, from any XML coverage report.

    Lets you require coverage on new lines with no demand on the whole repo.

    Any language Open source, Apache-2.0847 starsLatest release Sep 2026

  • Start here

    Trunk Flaky Tests

    Detects flaky tests from CI results and quarantines them so they stop blocking merges.

    When green merges itself, quarantine keeps flakes from draining the meaning of green.

    Any language Paid

  • BuildPulse

    Finds and quarantines flaky tests from CI runs, with an MCP server for AI assistants.

    An agent can read flake data through the MCP server before it touches a test.

    Any language Paid

  • cargo-llvm-cov

    Rust coverage using LLVM, with region and branch coverage options.

    Goes past line coverage for Rust.

    Rust Open source, Apache-2.01.5k starsLatest release Sep 2026

  • cargo-nextest

    Faster Rust test runner that retries failures and marks tests as flaky.

    Separates flaky from broken so agents stop chasing noise.

    Rust Open source, Apache-2.03.3k starsLatest release Sep 2026Source

  • CloudBees Smart Tests

    Machine-learning test selection and flaky detection, formerly sold as Launchable.

    Cuts test time on big suites while keeping the tests most likely to fail.

    Formerly Launchable, which CloudBees acquired in August 2024.

    Any language Paid

  • Codecov

    Hosted coverage with patch coverage checks on each pull request.

    Patch coverage is the diff-level gate for rule 29.

    Any language Paid

  • Codecov Test Analytics

    Tracks test run time and failure rates from JUnit XML and flags tests known to be flaky on main.

    Tells a PR author whether a red test is a known flake.

    Any language PaidPart of Codecov

  • Datadog Test Optimization

    CI test monitoring with flaky test management, early flake detection and test impact analysis.

    Retries new tests on first appearance, so agent-added tests get a flake check at once.

    Ruby, Python, JavaScript/TypeScript, Go, Java/JVM, .NET, Swift/iOS PaidPart of Datadog

  • Develocity Predictive Test Selection

    Learns from build history to run only the tests relevant to a change.

    Keeps suites fast as agents add tests, and flaky or recently failed tests always run.

    Java/JVM PaidPart of Develocity

  • gotestsum

    Go test runner wrapper that reruns failed tests and prints a failure summary.

    Its rerun-fails mode records which tests flake.

    Go Open source, Apache-2.02.7k starsLatest release Sep 2025

  • JNose

    Detects 21 test smells in JUnit tests and collects JaCoCo coverage.

    Flags weak patterns such as empty tests and missing assertions that agents tend to produce.

    Java/JVM Open source, GPL-3.027 starsLatest release Jun 2026

  • Knapsack Pro

    Splits test suites across CI nodes by recorded run time.

    Speed matters when agents push many small changes.

    Ruby, JavaScript/TypeScript Paid

  • pytest-randomly

    Shuffles test order and reseeds random generators on every run.

    Exposes hidden order dependence in tests that were written one at a time.

    Python Open source, MIT722 stars

  • pytest-testmon

    Runs only the tests affected by your code changes, tracked per test and method.

    Keeps the local loop quick as agent-written suites grow.

    Python Open source, MIT1k starsLatest release Dec 2025Source

  • test-prof

    Profilers and factory tools that find slow and wasteful tests in RSpec and Minitest.

    Agents add tests fast, and this shows which ones cost the most time.

    Ruby Open source, MIT2k starsLatest release Mar 2026Source

  • undercover

    Warns when changed methods lack test coverage, using git diff and a coverage report.

    Fails a PR whose new code has no tests, which is rule 29 at the diff level.

    Ruby Open source, MIT845 starsLatest release Jun 2026

Gone quiet 6

These tools are archived or shut down, or nobody has released or committed to them in two years. Some still work fine. Read the note before you adopt one.

  • cupaloy

    Go snapshot testing library with custom differs.

    A smaller option than go-snaps, though it has been quiet since 2023.

    Dormant since May 2023.

    Go Open source, MIT333 starsLast change May 2023

  • Exavier

    Open source mutation testing library for Elixir.

    The permissively licensed Elixir option next to Muzak.

    No activity since 2020.

    Elixir/Erlang Open source, MIT102 starsLast change Nov 2020

  • mutagen

    Earlier Rust mutation tester built on compiler plugins.

    Listed so Rust users know to pick cargo-mutants.

    Dormant since 2023. Use cargo-mutants.

    Rust Open source, Apache-2.0641 starsLast change May 2023

  • mutatest

    Small Python mutation tester that changes operators and runs your tests.

    Quiet since 2023, so mutmut is the safer pick.

    Dormant since 2023.

    Python Open source, MIT103 starsLast change Feb 2023

  • Muzak

    Mutation testing for Elixir run through mix.

    The best-known Elixir option, though its last release came in 2022.

    Last release was December 2022, and the CC-BY-NC-ND license limits commercial use.

    Elixir/Erlang Source available, CC-BY-NC-ND-4.072 starsLast change Dec 2022Source

  • pytest-flakefinder

    Runs each test many times to surface flaky ones.

    A quick flake check for a new agent-written test.

    Dormant since 2022.

    Python Open source, Apache-2.0158 starsLast change Oct 2022

Missing a tool that belongs here? Suggest it.

Every tool here was checked against its GitHub repository or its own site on 6 October 2026. Stars and dates come from GitHub on that day.