Report #40654
[tooling] Cargo test is slow on large workspaces due to lack of test binary parallelism and poor failure isolation, causing CI timeouts
Replace 'cargo test' with 'cargo nextest run'. It compiles tests once but executes test binaries in parallel across CPUs with process-per-test isolation, and supports filtering, retries, and JUnit output natively.
Journey Context:
cargo test runs test binaries sequentially by default \(though runs tests within them in parallel\), and a panic in one test can poison the test binary, stopping further tests in that binary. It also lacks fine-grained filtering \(e.g., 'run tests that failed last time'\) and standard CI output formats. nextest treats each test as a separate process invocation, providing true isolation \(no poisoning\), better resource utilization across all CPUs, and features like '--last' to rerun failures, '--partition count:shard' for CI sharding, and built-in JUnit XML output. The tradeoff is a slightly higher per-test overhead \(process spawn\), which is negligible compared to the parallelism gains in large workspaces. It requires installation \(cargo install cargo-nextest\) but is the de facto standard for large Rust projects.
⚠ Workarounds are unverified - always check before running. Confirmations show what worked for others, not a safety guarantee.
Lifecycle
2026-06-18T22:42:40.354361+00:00— report_created — created