Skip to main content

Dependency-graph based test runner in Rust that supports Rust, Python, and JavaScript.

Project description

Headlamp

Headlamp is a Rust-powered test UX CLI: smarter test selection, cleaner output, and a unified workflow across jest, cargo test, cargo nextest, and pytest.

Headlamp is useful when you want a consistent way to run tests across different projects and keep feedback fast as your repo grows. It can select tests based on what changed, surface failures in a readable format, and keep common defaults (like runner args and coverage settings) in a single config file so your team doesn’t have to remember a long list of flags.

Why Headlamp

  • One CLI, many runners: --runner=jest|cargo-nextest|cargo-test|pytest
  • Selection that scales: run what changed (--changed) and what’s related (dependency-graph driven)
  • Coverage-first UX: coverage output you can actually read
  • Fast: Rust core + caching

Installation

npm (Node.js projects)

Requirements:

  • Node >= 18

Install:

npm i -D headlamp

Run:

npx headlamp --help

Cargo (Rust projects)

Install from crates.io:

cargo install headlamp

Python (pytest projects)

Install:

pip install headlamp
headlamp --runner=pytest

Quickstart

Jest

npx headlamp --runner=jest

Forward runner args after -- (unknown args are forwarded):

npx headlamp --runner=jest -- --runInBand

Cargo nextest / cargo test

headlamp --runner=cargo-nextest
headlamp --runner=cargo-test

CLI

Run headlamp --help to see the up-to-date flags list.

Highlights:

  • runners: --runner=jest|pytest|cargo-nextest|cargo-test
  • changed selection: --changed=all|staged|unstaged|branch|lastCommit|lastRelease
    • lastRelease selects changes since the previous stable SemVer release tag
  • coverage: --coverage plus --coverage-ui, --coverage.detail, thresholds, etc.

Configuration

Headlamp discovers config from your repo root. Supported file names:

  • headlamp.toml (highest precedence)
  • headlamp.config.ts
  • headlamp.config.js
  • headlamp.config.mjs
  • headlamp.config.cjs
  • headlamp.config.json
  • headlamp.config.json5
  • headlamp.config.jsonc
  • headlamp.config.yaml
  • headlamp.config.yml
  • .headlamprc plus .headlamprc.* variants (.json, .json5, .jsonc, .yaml, .yml, .js, .cjs, .mjs, .ts)

Headlamp also supports embedded TOML config (lower precedence than explicit config files):

  • pyproject.toml under [tool.headlamp]
  • Cargo.toml under [package.metadata.headlamp]

Example: headlamp.toml (recommended for Rust + Python)

# Run tests sequentially (useful for very heavy integration tests)
sequential = true

[coverage]
abort_on_failure = true
mode = "auto"
page_fit = true

[changed]
depth = 20

Example: headlamp.config.ts

Rules:

  • Must have a default export
  • Only relative imports are supported inside the config file (./ and ../)
export default {
  // Runner defaults
  jestArgs: ["--runInBand"],

  // Run once before tests (npm script name or a shell command)
  bootstrapCommand: "test:jest:bootstrap",

  // Global toggles
  ci: false,
  verbose: false,
  noCache: false,

  // Coverage defaults
  coverage: true,
  coverageUi: "both",
  coverage: {
    abortOnFailure: true,
    mode: "auto",
    pageFit: true,
  },

  // Changed selection defaults
  changed: { depth: 2 },
};

Contributing

Pull requests are welcome. For large changes, open an issue first to align on direction.

Support

  • Bug reports and feature requests: GitHub Issues

License

MIT — see LICENSE.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

headlamp-0.1.57.tar.gz (5.3 kB view details)

Uploaded Source

Built Distributions

If you're not sure about the file name format, learn more about wheel file names.

headlamp-0.1.57-py3-none-win_amd64.whl (4.6 MB view details)

Uploaded Python 3Windows x86-64

headlamp-0.1.57-py3-none-musllinux_1_2_x86_64.whl (5.1 MB view details)

Uploaded Python 3musllinux: musl 1.2+ x86-64

headlamp-0.1.57-py3-none-musllinux_1_2_aarch64.whl (4.8 MB view details)

Uploaded Python 3musllinux: musl 1.2+ ARM64

headlamp-0.1.57-py3-none-manylinux_2_28_x86_64.whl (4.9 MB view details)

Uploaded Python 3manylinux: glibc 2.28+ x86-64

headlamp-0.1.57-py3-none-manylinux_2_28_aarch64.whl (4.7 MB view details)

Uploaded Python 3manylinux: glibc 2.28+ ARM64

headlamp-0.1.57-py3-none-macosx_11_0_arm64.whl (4.4 MB view details)

Uploaded Python 3macOS 11.0+ ARM64

headlamp-0.1.57-py3-none-macosx_10_12_x86_64.whl (4.6 MB view details)

Uploaded Python 3macOS 10.12+ x86-64

File details

Details for the file headlamp-0.1.57.tar.gz.

File metadata

  • Download URL: headlamp-0.1.57.tar.gz
  • Upload date:
  • Size: 5.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for headlamp-0.1.57.tar.gz
Algorithm Hash digest
SHA256 6b4308ca821fe1c5119529ea26ff91e882079ff35546e2b42af247e97f51e90c
MD5 44dc3e8c1c5ddb116cd77fd84bca5087
BLAKE2b-256 c9bc86e44af2d3c1c4896c474296952fc655a108b93c066faf11b36378db37fd

See more details on using hashes here.

Provenance

The following attestation bundles were made for headlamp-0.1.57.tar.gz:

Publisher: release.yml on dbpiper/headlamp

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file headlamp-0.1.57-py3-none-win_amd64.whl.

File metadata

  • Download URL: headlamp-0.1.57-py3-none-win_amd64.whl
  • Upload date:
  • Size: 4.6 MB
  • Tags: Python 3, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for headlamp-0.1.57-py3-none-win_amd64.whl
Algorithm Hash digest
SHA256 d1a77c88eb2ba3446c639f9f798207a395320627968e364b5b4cbca23aa4fc28
MD5 fb94a39e066631b209d5f76c2d20f829
BLAKE2b-256 7fd55e1fee6998160f47b1d8b3ad0a7062284c5041e50c261efad4f4c0d359e3

See more details on using hashes here.

Provenance

The following attestation bundles were made for headlamp-0.1.57-py3-none-win_amd64.whl:

Publisher: release.yml on dbpiper/headlamp

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file headlamp-0.1.57-py3-none-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for headlamp-0.1.57-py3-none-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 442ed17157916b8c608c230cf9003bd00d18ee6c61f6d48095dc0f660fdd8688
MD5 f60e0cb6a1692b95cff505e7ca17011b
BLAKE2b-256 f1e7baf6801134ad316bed2ae117fbb51de1f1a7331c57554390db2eca428cd7

See more details on using hashes here.

Provenance

The following attestation bundles were made for headlamp-0.1.57-py3-none-musllinux_1_2_x86_64.whl:

Publisher: release.yml on dbpiper/headlamp

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file headlamp-0.1.57-py3-none-musllinux_1_2_aarch64.whl.

File metadata

File hashes

Hashes for headlamp-0.1.57-py3-none-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 11a6faedc53c0acd91ed53b693ad61b32f1d3182ffcc8db5a819e7fa9da512e6
MD5 20466d54cfcc42d97a3683c2ab8f4b2d
BLAKE2b-256 849e1eadf51501d3579d63e017a17ce6a6c02125431666052a6ebf19c9aa9d15

See more details on using hashes here.

Provenance

The following attestation bundles were made for headlamp-0.1.57-py3-none-musllinux_1_2_aarch64.whl:

Publisher: release.yml on dbpiper/headlamp

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file headlamp-0.1.57-py3-none-manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for headlamp-0.1.57-py3-none-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 73049d3e5d3248ccc08805b2a91e8dcd21e4b442d3ccb3a202f306aa8144e88c
MD5 74ec9ec71cf8caabb5785c5c926761e5
BLAKE2b-256 b3b6c4a81d3ed97f977063708afc5806326d470f865cc28fd9ef96fef5d10b6d

See more details on using hashes here.

Provenance

The following attestation bundles were made for headlamp-0.1.57-py3-none-manylinux_2_28_x86_64.whl:

Publisher: release.yml on dbpiper/headlamp

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file headlamp-0.1.57-py3-none-manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for headlamp-0.1.57-py3-none-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 47aca0c4ee6aa10e9c86c82b9b945e644cbc0f47a88845d0bcf5deec6795d712
MD5 4a57eaeaee39c314605eb88e59f4edfe
BLAKE2b-256 598d5b6caefac129cd88440c13c63315a9b144870e97728bddd4e68a6316735b

See more details on using hashes here.

Provenance

The following attestation bundles were made for headlamp-0.1.57-py3-none-manylinux_2_28_aarch64.whl:

Publisher: release.yml on dbpiper/headlamp

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file headlamp-0.1.57-py3-none-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for headlamp-0.1.57-py3-none-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 2927c7f2340cee4fd1ec34d6134995adf5a8ff18ad5578eafad7e14be64787cf
MD5 6ed74dad103f74ec40c9751c23451fa5
BLAKE2b-256 0aefa7bc23e9e1d02436ae400992e3eb3d4b7b1a39c25790b7d7e97beb5c0b79

See more details on using hashes here.

Provenance

The following attestation bundles were made for headlamp-0.1.57-py3-none-macosx_11_0_arm64.whl:

Publisher: release.yml on dbpiper/headlamp

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file headlamp-0.1.57-py3-none-macosx_10_12_x86_64.whl.

File metadata

File hashes

Hashes for headlamp-0.1.57-py3-none-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 3cd43cb297885f99e2067e5f46f1e87471a78e21afba88d53ce886cf01b80f5d
MD5 68cd81006553baab68e2dbe21302ccc9
BLAKE2b-256 912e48cb8e5d21b2c84f5f5f841bfaa49877b8cef177a8db0b59959da8c37183

See more details on using hashes here.

Provenance

The following attestation bundles were made for headlamp-0.1.57-py3-none-macosx_10_12_x86_64.whl:

Publisher: release.yml on dbpiper/headlamp

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page