---
title: Test Engine
description: Monitor, detect, and manage unreliable tests across your repositories.
hubAccent: true
---

Test Engine (formerly Test Insights) helps you manage test reliability across
the full lifecycle. It catches flaky tests on pull requests before they merge,
surfaces unhealthy tests across your repositories, and lets you quarantine
problematic tests so they don't block your CI pipeline.

## How it works

Test Engine is organized into three phases that follow the natural lifecycle
of a test reliability problem:

1. **[Prevention](/test-engine/prevention)**: Catch flaky and broken tests
   on pull requests before they reach your codebase. Mergify reruns tests on
   PRs to detect inconsistent behavior early.

2. **[Detection](/test-engine/detection)**: Identify and prioritize
   unhealthy tests across your repositories. See which tests are flaky or
   broken, and focus on the ones with the most impact.

3. **[Mitigation](/test-engine/mitigation)**: Quarantine problematic tests
   to unblock CI without removing them. Tests keep running, but their failures
   no longer block merges.

You can also search test health directly from the terminal or from AI coding
agents with the [`tests` CLI reference](/cli/tests). This is useful when
an agent needs to decide whether a failing test is a real regression or
known flakiness.

## Key concepts

- **Flaky test**: A test that passed and failed close together on the same
  branch, pipeline, and job, so its outcome does not follow from the code
  alone. A test whose results differ without ever failing stays healthy.

- **Broken test**: A test that fails, with no passing run close in time to
  contradict those failures.

- **Health status**: A test's reliability classification: healthy, flaky, or
  broken. Based on results from multiple CI runs.

- **Confidence**: How much rerun data backs a test's health status, reported
  as low, medium, or high. [Prevention](/test-engine/prevention) reports it
  for the tests a pull request adds. Low confidence means the status could
  still change as the test is rerun.

- **Quarantine**: Isolating a test so its failures are ignored for merge
  decisions. The test still runs and results are still collected, preserving
  full visibility.

- **Default branch scope**: Test health across repositories comes from runs on
  the default branch. Pull request runs feed
  [Prevention](/test-engine/prevention) instead. See
  [which runs Detection reports on](/test-engine/detection#which-runs-detection-reports-on).

## Setup

Test Engine is powered by the same CI integration as
[CI Insights](/ci-insights). To get started, configure your CI system and test
framework:

- [GitHub Actions setup](/ci-insights/setup/github-actions)
- [Buildkite setup](/ci-insights/setup/buildkite)
- [Jenkins setup](/ci-insights/setup/jenkins)
- [Test framework configuration](#test-framework-configuration)

## Test Framework Configuration

Test Engine supports many test frameworks and captures test-level data from
them. Each framework requires a quick setup to ensure test results are parsed
and uploaded properly.

Refer to the dedicated page for your specific framework to configure and
verify your test output.

<DocsetGrid>
  <Docset
    title="Cypress"
    path="/test-engine/test-frameworks/cypress"
    icon="simple-icons:cypress"
  >
    Integrate Cypress with Test Engine.
  </Docset>
  <Docset
    title="Go"
    path="/test-engine/test-frameworks/golang"
    icon="simple-icons:go"
  >
    Integrate Go with Test Engine.
  </Docset>
  <Docset
    title="Jest"
    path="/test-engine/test-frameworks/jest"
    icon="simple-icons:jest"
  >
    Integrate Jest with Test Engine.
  </Docset>
  <Docset
    title="JUnit"
    path="/test-engine/test-frameworks/junit"
    icon="simple-icons:junit5"
  >
    Integrate JUnit with Test Engine.
  </Docset>
  <Docset
    title="Minitest"
    path="/test-engine/test-frameworks/minitest"
    icon="simple-icons:ruby"
  >
    Integrate Minitest with Test Engine.
  </Docset>
  <Docset
    title="MSTest"
    path="/test-engine/test-frameworks/mstest"
    icon="simple-icons:dotnet"
  >
    Integrate MSTest with Test Engine.
  </Docset>
  <Docset
    title="NUnit"
    path="/test-engine/test-frameworks/nunit"
    icon="simple-icons:dotnet"
  >
    Integrate NUnit with Test Engine.
  </Docset>
  <Docset
    title="Pest"
    path="/test-engine/test-frameworks/pest"
    icon="simple-icons:php"
  >
    Integrate Pest with Test Engine.
  </Docset>
  <Docset
    title="PHPUnit"
    path="/test-engine/test-frameworks/phpunit"
    icon="simple-icons:php"
  >
    Integrate PHPUnit with Test Engine.
  </Docset>
  <Docset
    title="Playwright"
    path="/test-engine/test-frameworks/playwright"
    icon="simple-icons:playwright"
  >
    Integrate Playwright with Test Engine.
  </Docset>
  <Docset
    title="Pytest"
    path="/test-engine/test-frameworks/pytest"
    icon="simple-icons:pytest"
  >
    Integrate Pytest with Test Engine.
  </Docset>
  <Docset
    title="RSpec"
    path="/test-engine/test-frameworks/rspec"
    icon="simple-icons:ruby"
  >
    Integrate RSpec with Test Engine.
  </Docset>
  <Docset
    title="Rust"
    path="/test-engine/test-frameworks/rust"
    icon="simple-icons:rust"
  >
    Integrate Rust with Test Engine.
  </Docset>
  <Docset
    title="TestNG"
    path="/test-engine/test-frameworks/testng"
    icon="simple-icons:testinglibrary"
  >
    Integrate TestNG with Test Engine.
  </Docset>
  <Docset
    title="Vitest"
    path="/test-engine/test-frameworks/vitest"
    icon="simple-icons:vitest"
  >
    Integrate Vitest with Test Engine.
  </Docset>
</DocsetGrid>
