Skip to content
Test Engine

Formerly Test Insights

Flaky tests block your whole team.
Stop them at the pull request.

Test Engine is the test layer of Mergify's CI platform, and it plugs into the test frameworks you already use. It catches flaky tests on the pull request before they merge, and quarantines the ones already in your suite so they stop blocking merges.

Test Engine dashboard showing test health scores and flaky test detection

Used by the platform teams that ship fast and keep CI green

One flaky test. A full day wasted.

Flaky tests don't just fail. They cascade. Here's what a single unreliable test does to your team every day.

1 flaky testMerge queue blocked8 PRs stuck waitingCI re-runs start3 engineers stopto investigate45 min wastedper engineer"Just re-run it"becomes the normRepeats every single day

Most teams have 10, 20, or 40 of these tests. Nobody tracks them. Nobody owns them. The cost compounds silently until CI results mean nothing.

Plugs into your test suite

Native in every test framework

Test Engine runs inside the test framework you already use, whatever CI sits underneath.

pytest
Jest
RSpec
Vitest
Playwright
Cypress
Go
Rust
JUnit
TestNG
PHPUnit
Pest
NUnit
MSTest
minitest

Results upload from inside the run and quarantine applies there too, so a quarantined failure never touches your exit code. GitHub Actions, Buildkite and Jenkins each have a setup guide.

Don't see your framework? Tell us and we'll probably build it.

The fix

What Test Engine does with every test run

Prevention stops new flaky tests at the pull request. Detection ranks the ones already on your default branch by how much they hurt, and Quarantine keeps their failures out of your merges while someone fixes them.

Other tools find a flaky test after it has merged. Test Engine catches it on the pull request, before it reaches your default branch.

Pillar 1

Prevention

Catch flaky tests on the pull request, before they merge to main. Test Engine reruns the tests a pull request adds or changes, on the same commit, and flags every one that flips between pass and fail. Each new test shows up as healthy, flaky or broken before anyone clicks merge.

Reruns stay inside a CI budget you set, and run through a native plugin such as pytest-mergify or rspec-mergify. No more merging a "green" PR only to discover the test was flaky all along.

Test Engine Prevention view showing caught flaky tests per PR
Test detail page showing confidence score and failure history for a quarantined test

Pillar 2

Detection

Detection finds the unhealthy tests already on your default branch and ranks them by impact, the share of their runs that failed, so the ones costing you the most get fixed first. Every test sits under Healthy, Flaky or Broken. With a plugin installed, Test Engine can rerun a suspect test on the default branch to confirm the verdict instead of waiting for its next failure.

A test that passes for a week after its last failure goes back to healthy on its own. No more guessing whether a failure is real or just noise.

Pillar 3

Quarantine

Quarantine is a state a test is in. A quarantined test keeps running and reporting, but its failures stop blocking merges or failing the pipeline, on every branch. Turn on auto-quarantine and Test Engine puts a flaky test there by itself once enough runs back the verdict (broken tests too, if you opt in). One red run among thousands of green ones never quarantines anything.

Every move in or out of quarantine, yours or Test Engine's, lands in the event log and can post to Slack. No more @skip with a TODO nobody reads.

renders the invoice lineHealthylogin dispatches the right actionHealthycheckout flow settles the pending promiseQuarantinedrate limiter rejects after 3 requestsHealthy
We had 40 known-flaky tests and no system to deal with them. Engineers just re-ran the suite and hoped. Test Engine quarantined the worst offenders on day one, and within a month we actually fixed most of them because we could finally see which ones mattered.
Lucas Meier

Lucas Meier

Staff Software Engineer at Norde

Part of the CI platform

Your tests and your merge queue finally talk

A standalone flaky-test tool can tell you a test is unreliable. Test Engine sits next to Merge Queue and CI Insights, so what it knows about a test changes what the queue does with it.

A known flake can't kick a PR out of the queue

Quarantine applies on every branch, the merge queue's included. When a quarantined test fails during a queue run, the pipeline still passes, so the pull request keeps its place instead of getting dequeued.

One CI connection for jobs and tests

Test Engine runs on the same CI integration as CI Insights. Connect GitHub Actions, Buildkite or Jenkins once, and both read from it.

Without a test layer, your CI pays the bill

Most teams underestimate how much flaky tests cost them until the problem is measurable.

Developer trust breaks down

When tests fail randomly, engineers stop trusting CI. They re-run, skip, or ignore results. Quality slips.

Merge queues grind to a halt

One flaky test blocks a batch of PRs. The whole queue retries. Multiply that across a day and you lose hours of engineering time.

Debugging is a time sink

Is the test broken or flaky? Engineers waste hours answering a question the tool should answer for them.

The backlog grows silently

Without tracking, flaky tests accumulate. By the time it is painful, there are dozens to triage and no data to prioritize them.

Want to see Test Engine on your test suite?

Native in pytest, Jest, RSpec, Vitest, Playwright, Go and every other major test framework.

Book a discovery call

Dig deeper by framework

How flaky tests fail in each framework, and the fixes that actually hold.

Bring your own agent

Your AI agent doesn't know which tests are flaky. Now it can.

AI coding tools write code and debug failures, but they waste time investigating tests that were already known-flaky. The Mergify CLI gives any agent access to your test health data. No integration needed. Just a CLI call.

Terminal

$ mergify tests quarantines list --repository myorg/myapp

tests/payments/test_webhook.py::test_payment_webhook

  branch:     *

  recovered:  no

tests/email/test_delivery.py::test_email_delivery

  branch:     *

  recovered:  no

Your AI agent can now skip these when debugging CI failures.

One CLI call. Any agent.

Cursor, Claude Code, GitHub Copilot, Windsurf, Codex, or your own custom agent. If it can run a shell command, it can query your test health data.

Stop debugging noise

When CI fails, your agent checks which tests are quarantined and skips them. It only investigates failures that are actually new.

No plugins, no setup

Pass --json and the CLI outputs structured data any tool can parse. Add it to your agent's instructions and it just works.

Integrating Mergify transformed our development process. It gives us full control over merges and schedules. It streamlined our workflow, helped catch issues early, and improved team efficiency and software reliability.
Sean Davis

Sean Davis

Senior CI/CD Engineer at Ava Solutions

Your tests already run. Make them count.

Mergify merges more than half a million pull requests a month without breaking main.