Skip to content

What Radforge does

Code coverage shows which lines ran. Radforge asks a different question: would the tests fail if covered behavior changed?

New to the approach? Learn how mutation testing works, including how to interpret killed and surviving mutations.

Radforge finds mutation candidates in supported source files and selects tests for each candidate. A mutation can reverse a condition, change a return value, or move a boundary. A test failure kills the mutation. If every selected test passes, the mutation survives and Radforge reports it as a finding.

The CLI selects source files, mutation candidates, and tests from your repository. It uploads that plan with a snapshot of Git-tracked files. Radforge executes the mutation tests on hosted infrastructure, so the run does not use your local CPU or memory.

The GitHub App triggers mutation tests for new pull requests in selected repositories. Radforge publishes the result as a GitHub check.

The local CLI uploads a mutation plan and Git-tracked source. The GitHub App triggers mutation tests for new pull requests. Radforge executes the tests on hosted infrastructure and returns results to the CLI or a GitHub check.
Both paths execute mutation tests on Radforge infrastructure and return results where the run started.
  • rad file targets one Go, TypeScript, or JavaScript source file.
  • rad plan prints a one-file Go, TypeScript, or JavaScript plan without executing it.
  • rad changed targets Go, TypeScript, or JavaScript source files selected from a Git diff.
  • rad scope targets an explicit list of Go, TypeScript, or JavaScript source files selected by you or another tool.
  • rad remote submits plans and retrieves run status and findings.
  • The GitHub App starts Go, TypeScript/JavaScript, or Python runs for supported pull requests and publishes GitHub checks.

Choose the workflow that matches your language and source scope.

A survivor means the selected tests did not catch that change. It does not prove that the code is wrong. Review the change, add a test if the behavior matters, and rerun the affected file or Git diff.