๐Ÿ™Testfile

Testfile definition that scales from simple tests to complex test suites. Runs on your CI and locally.

A YAML file that describes the whole test setup, with the services your tests depend on โ€” which makes runs reproducible, on your machine and on CI. Every run is recorded, and even CI runs can be inspected locally.

Testfile
version: 0
ports:
  web: random
services:
  web:
    command: npm start
    env:
      PORT: ${{ ports.web }}
    ready:
      http: http://localhost:${{ ports.web }}/healthz
test:
  sequence:
    - name: lint
      command: npm run lint
    - name: e2e
      command: npm run test:e2e

testfile start โ€” that's the whole CI job.

Simple definitions

The setup is easy: a name and a command is a test, andtestfile initwrites the first version for you. Plain YAML, validated by a schema, readable in every code review.

Scales with requirements

Grow from one command to sequences, parallel groups andmatrix tests โ€” with retries, conditions andresult cachingwhen the suite gets big. The same file runs locally, in watch mode and on CI.

Manages your services

A database โ€” or any otherservice your tests need โ€” is declared once and started on demand, as a container or a plain process: health-checked before the first test runs and reachable through random ports.

Unified viewer for local and CI runs

Browse recorded runs in the terminal (testfile tui) or in the browser (testfile serve): statuses, durations, per-test logs, service logs โ€” and why a test ran or came from the cache. A simple way to sync runs between machines, including CI runs on your computer, like GitHub Actions.

The Testfile web viewer showing a recorded run: the runs table, per-test statuses with cache reasons, a service row and the merged log

Everything in the box

The format

Services & environment

Running & CI

Read the docsBrowse examples