NewDebug failed jobs and retry from any step.

Platform / Tests

Product 02

Preloop Test Intelligence

Select affected tests, analyze results and detect flakes.

Run only the tests your change can affect. Suites finish sooner, and flaky tests are caught instead of retried.

Workflow files
Unchanged
Availability
Available today
Surface
CLI, API and dashboard
LOOP04beats
01Changesnapshot
02Verifyreplay
03Fixpause
04Mergepublish
tests loop poster
Detect what changed, diff it against history, select the affected tests, and explain why.Muted · loops

Why it exists

Small changes can rerun large test suites even when most tests are unaffected. Sharding adds coordination and cost, while hand-maintained fast-test lists become stale. Test Intelligence selects affected tests and explains every decision.

Preloop Test Intelligence, step by step.

The mechanism, in the order a job meets it.

  1. 01

    Detect

    During a run, adapters detect the files each test reads, the modules it imports, the environment it sees and any barrier it hits. Adapters cover pytest, Go, Vitest, Jest, Playwright, Bun and nextest.

  2. 02

    Map

    A dependency map is stored per test identity and namespace with the outcome, duration and input-set digest.

  3. 03

    Select

    On a later commit, preloop recomputes each test’s inputs. A test is skipped only when its dependency map is complete, nothing in it changed, it hit no barrier, and it last passed. New, failed, flaky and uncertain tests always run. Changes to sensitive paths — lockfiles, test configuration, package manifests, CI definitions and `.env` files — run every test in the session.

  4. 04

    Report

    The tests API receives each result. The authenticated job supplies the repository, namespace, trust tier and commit instead of the request body.

  5. 05

    Explain

    Each decision has a reason. preloop stores every test’s outcome, duration and why it ran or was skipped, with its dependencies and last passing run.

What you get.

Each capability is part of the product today.

01

Affected-test selection

Select only tests whose detected inputs changed. Tests without a complete dependency map or recent pass, and tests with barriers, always run.

02

Test analytics

Track per-test outcomes, durations, daily duration buckets and selection rates by job.

03

Flake detection with evidence

Confirm a flake only after a pass and a failure with identical input digests and no barrier. One green run does not establish a flake.

04

Quarantine does not hide failures

Quarantine is metadata. It cannot suppress a failure, skip execution or change a conclusion; it marks that the test is known-flaky.

05

A reason for every test

Every test that runs or skips says why: the change did not touch it, a file or module it depends on changed, it is new, it failed last time, it is flaky, a shared config or lockfile changed, or someone asked for a full run.

06

Test data through an API

Read overview, per-test history, durations, dependencies, each decision and the log for its source run.

Sample / bash

Examplebash
collected 9,579 items
selected 24, skipped 9,555

  ran     24  a dependency changed (lib/sqlalchemy/sql/coercions.py)
  ran      3  failed last time
  ran      2  new tests
  skip 9,555  not affected by this change

24 passed

Illustrative session output: one commit that reached 24 tests out of a full suite.

Specs.

Guarantee
Every skip is backed by a detected dependency map. A test with an incomplete map, a barrier or no passing history runs.
Sensitive paths
Lockfiles, test configuration, package manifests, TypeScript configs, CI definitions and `.env` files select every test in the session.
Frameworks
pytest, Go, Vitest, Jest, Playwright, Bun and nextest — each through an adapter that detects real reads rather than declared inputs.
Flakes
Confirmed only by a pass and a fail on identical input digests with no barrier. A confirmed flake always runs.
Quarantine
Metadata only. It cannot suppress a failure, skip an execution or alter a conclusion.
Selection method
Detected dependencies and recomputed digests. No statistical or learned prediction.

Preloop Test Intelligence questions

Q.01What happens to a test that has never run?

It runs, and the reason says it is a new test. A test without a dependency map cannot be proven unaffected.

Q.02Does a lockfile change select everything?

Yes. Lockfiles, test configuration, package manifests, TypeScript configs, CI definitions and .env files select every test.

Q.03Can I force a full run?

Yes. A sensitive path such as a lockfile or shared config triggers a full run automatically, and the reason says so.

Q.04How does it handle order-dependent tests?

An order guard catches common cases. A test that depends on another test's side effects can still be selected alone.

Q.05Are subprocess tests ever skipped?

No. A test that shells out is a barrier and always runs.

Q.06Where do the results go?

Results go to the tests API, scoped to the authenticated job. The dashboard and API read the same store, and each test decision includes its evidence.

Start

Start with one workflow.

We will set it up with you and show you what changes.