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|lastReleaselastReleaseselects changes since the previous stable SemVer release tag
- coverage:
--coverageplus--coverage-ui,--coverage.detail, thresholds, etc.
Configuration
Headlamp discovers config from your repo root. Supported file names:
headlamp.toml(highest precedence)headlamp.config.tsheadlamp.config.jsheadlamp.config.mjsheadlamp.config.cjsheadlamp.config.jsonheadlamp.config.json5headlamp.config.jsoncheadlamp.config.yamlheadlamp.config.yml.headlamprcplus.headlamprc.*variants (.json,.json5,.jsonc,.yaml,.yml,.js,.cjs,.mjs,.ts)
Headlamp also supports embedded TOML config (lower precedence than explicit config files):
pyproject.tomlunder[tool.headlamp]Cargo.tomlunder[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
Built Distributions
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
6b4308ca821fe1c5119529ea26ff91e882079ff35546e2b42af247e97f51e90c
|
|
| MD5 |
44dc3e8c1c5ddb116cd77fd84bca5087
|
|
| BLAKE2b-256 |
c9bc86e44af2d3c1c4896c474296952fc655a108b93c066faf11b36378db37fd
|
Provenance
The following attestation bundles were made for headlamp-0.1.57.tar.gz:
Publisher:
release.yml on dbpiper/headlamp
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
headlamp-0.1.57.tar.gz -
Subject digest:
6b4308ca821fe1c5119529ea26ff91e882079ff35546e2b42af247e97f51e90c - Sigstore transparency entry: 782589041
- Sigstore integration time:
-
Permalink:
dbpiper/headlamp@de7f6e72374a193e69c721660ad40eef15729ef9 -
Branch / Tag:
refs/tags/v0.1.57 - Owner: https://github.com/dbpiper
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@de7f6e72374a193e69c721660ad40eef15729ef9 -
Trigger Event:
push
-
Statement type:
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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
d1a77c88eb2ba3446c639f9f798207a395320627968e364b5b4cbca23aa4fc28
|
|
| MD5 |
fb94a39e066631b209d5f76c2d20f829
|
|
| BLAKE2b-256 |
7fd55e1fee6998160f47b1d8b3ad0a7062284c5041e50c261efad4f4c0d359e3
|
Provenance
The following attestation bundles were made for headlamp-0.1.57-py3-none-win_amd64.whl:
Publisher:
release.yml on dbpiper/headlamp
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
headlamp-0.1.57-py3-none-win_amd64.whl -
Subject digest:
d1a77c88eb2ba3446c639f9f798207a395320627968e364b5b4cbca23aa4fc28 - Sigstore transparency entry: 782589072
- Sigstore integration time:
-
Permalink:
dbpiper/headlamp@de7f6e72374a193e69c721660ad40eef15729ef9 -
Branch / Tag:
refs/tags/v0.1.57 - Owner: https://github.com/dbpiper
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@de7f6e72374a193e69c721660ad40eef15729ef9 -
Trigger Event:
push
-
Statement type:
File details
Details for the file headlamp-0.1.57-py3-none-musllinux_1_2_x86_64.whl.
File metadata
- Download URL: headlamp-0.1.57-py3-none-musllinux_1_2_x86_64.whl
- Upload date:
- Size: 5.1 MB
- Tags: Python 3, musllinux: musl 1.2+ x86-64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
442ed17157916b8c608c230cf9003bd00d18ee6c61f6d48095dc0f660fdd8688
|
|
| MD5 |
f60e0cb6a1692b95cff505e7ca17011b
|
|
| BLAKE2b-256 |
f1e7baf6801134ad316bed2ae117fbb51de1f1a7331c57554390db2eca428cd7
|
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
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
headlamp-0.1.57-py3-none-musllinux_1_2_x86_64.whl -
Subject digest:
442ed17157916b8c608c230cf9003bd00d18ee6c61f6d48095dc0f660fdd8688 - Sigstore transparency entry: 782589057
- Sigstore integration time:
-
Permalink:
dbpiper/headlamp@de7f6e72374a193e69c721660ad40eef15729ef9 -
Branch / Tag:
refs/tags/v0.1.57 - Owner: https://github.com/dbpiper
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@de7f6e72374a193e69c721660ad40eef15729ef9 -
Trigger Event:
push
-
Statement type:
File details
Details for the file headlamp-0.1.57-py3-none-musllinux_1_2_aarch64.whl.
File metadata
- Download URL: headlamp-0.1.57-py3-none-musllinux_1_2_aarch64.whl
- Upload date:
- Size: 4.8 MB
- Tags: Python 3, musllinux: musl 1.2+ ARM64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
11a6faedc53c0acd91ed53b693ad61b32f1d3182ffcc8db5a819e7fa9da512e6
|
|
| MD5 |
20466d54cfcc42d97a3683c2ab8f4b2d
|
|
| BLAKE2b-256 |
849e1eadf51501d3579d63e017a17ce6a6c02125431666052a6ebf19c9aa9d15
|
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
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
headlamp-0.1.57-py3-none-musllinux_1_2_aarch64.whl -
Subject digest:
11a6faedc53c0acd91ed53b693ad61b32f1d3182ffcc8db5a819e7fa9da512e6 - Sigstore transparency entry: 782589042
- Sigstore integration time:
-
Permalink:
dbpiper/headlamp@de7f6e72374a193e69c721660ad40eef15729ef9 -
Branch / Tag:
refs/tags/v0.1.57 - Owner: https://github.com/dbpiper
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@de7f6e72374a193e69c721660ad40eef15729ef9 -
Trigger Event:
push
-
Statement type:
File details
Details for the file headlamp-0.1.57-py3-none-manylinux_2_28_x86_64.whl.
File metadata
- Download URL: headlamp-0.1.57-py3-none-manylinux_2_28_x86_64.whl
- Upload date:
- Size: 4.9 MB
- Tags: Python 3, manylinux: glibc 2.28+ x86-64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
73049d3e5d3248ccc08805b2a91e8dcd21e4b442d3ccb3a202f306aa8144e88c
|
|
| MD5 |
74ec9ec71cf8caabb5785c5c926761e5
|
|
| BLAKE2b-256 |
b3b6c4a81d3ed97f977063708afc5806326d470f865cc28fd9ef96fef5d10b6d
|
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
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
headlamp-0.1.57-py3-none-manylinux_2_28_x86_64.whl -
Subject digest:
73049d3e5d3248ccc08805b2a91e8dcd21e4b442d3ccb3a202f306aa8144e88c - Sigstore transparency entry: 782589077
- Sigstore integration time:
-
Permalink:
dbpiper/headlamp@de7f6e72374a193e69c721660ad40eef15729ef9 -
Branch / Tag:
refs/tags/v0.1.57 - Owner: https://github.com/dbpiper
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@de7f6e72374a193e69c721660ad40eef15729ef9 -
Trigger Event:
push
-
Statement type:
File details
Details for the file headlamp-0.1.57-py3-none-manylinux_2_28_aarch64.whl.
File metadata
- Download URL: headlamp-0.1.57-py3-none-manylinux_2_28_aarch64.whl
- Upload date:
- Size: 4.7 MB
- Tags: Python 3, manylinux: glibc 2.28+ ARM64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
47aca0c4ee6aa10e9c86c82b9b945e644cbc0f47a88845d0bcf5deec6795d712
|
|
| MD5 |
4a57eaeaee39c314605eb88e59f4edfe
|
|
| BLAKE2b-256 |
598d5b6caefac129cd88440c13c63315a9b144870e97728bddd4e68a6316735b
|
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
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
headlamp-0.1.57-py3-none-manylinux_2_28_aarch64.whl -
Subject digest:
47aca0c4ee6aa10e9c86c82b9b945e644cbc0f47a88845d0bcf5deec6795d712 - Sigstore transparency entry: 782589049
- Sigstore integration time:
-
Permalink:
dbpiper/headlamp@de7f6e72374a193e69c721660ad40eef15729ef9 -
Branch / Tag:
refs/tags/v0.1.57 - Owner: https://github.com/dbpiper
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@de7f6e72374a193e69c721660ad40eef15729ef9 -
Trigger Event:
push
-
Statement type:
File details
Details for the file headlamp-0.1.57-py3-none-macosx_11_0_arm64.whl.
File metadata
- Download URL: headlamp-0.1.57-py3-none-macosx_11_0_arm64.whl
- Upload date:
- Size: 4.4 MB
- Tags: Python 3, macOS 11.0+ ARM64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
2927c7f2340cee4fd1ec34d6134995adf5a8ff18ad5578eafad7e14be64787cf
|
|
| MD5 |
6ed74dad103f74ec40c9751c23451fa5
|
|
| BLAKE2b-256 |
0aefa7bc23e9e1d02436ae400992e3eb3d4b7b1a39c25790b7d7e97beb5c0b79
|
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
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
headlamp-0.1.57-py3-none-macosx_11_0_arm64.whl -
Subject digest:
2927c7f2340cee4fd1ec34d6134995adf5a8ff18ad5578eafad7e14be64787cf - Sigstore transparency entry: 782589064
- Sigstore integration time:
-
Permalink:
dbpiper/headlamp@de7f6e72374a193e69c721660ad40eef15729ef9 -
Branch / Tag:
refs/tags/v0.1.57 - Owner: https://github.com/dbpiper
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@de7f6e72374a193e69c721660ad40eef15729ef9 -
Trigger Event:
push
-
Statement type:
File details
Details for the file headlamp-0.1.57-py3-none-macosx_10_12_x86_64.whl.
File metadata
- Download URL: headlamp-0.1.57-py3-none-macosx_10_12_x86_64.whl
- Upload date:
- Size: 4.6 MB
- Tags: Python 3, macOS 10.12+ x86-64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
3cd43cb297885f99e2067e5f46f1e87471a78e21afba88d53ce886cf01b80f5d
|
|
| MD5 |
68cd81006553baab68e2dbe21302ccc9
|
|
| BLAKE2b-256 |
912e48cb8e5d21b2c84f5f5f841bfaa49877b8cef177a8db0b59959da8c37183
|
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
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
headlamp-0.1.57-py3-none-macosx_10_12_x86_64.whl -
Subject digest:
3cd43cb297885f99e2067e5f46f1e87471a78e21afba88d53ce886cf01b80f5d - Sigstore transparency entry: 782589085
- Sigstore integration time:
-
Permalink:
dbpiper/headlamp@de7f6e72374a193e69c721660ad40eef15729ef9 -
Branch / Tag:
refs/tags/v0.1.57 - Owner: https://github.com/dbpiper
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@de7f6e72374a193e69c721660ad40eef15729ef9 -
Trigger Event:
push
-
Statement type: