cargo-nextest
A next-generation test runner for Rust.
0.9.143
12M downloads/mo
#2789 most downloaded on crates.io
nextest-rs/nextest
What this package is like to depend on
Last release 19 days ago
04 Aug 2026
Ships fairly regularly
a new release about every 2 weeks
Nearly every release is documented
notes for 128 of 128 stable releases
2 versions withdrawn
withdrawn after publishing
5 years old
167 releases · first in 2022
46 releases in the last 12 months
see the full history below
Release timeline
167 releases · Feb 2022 to Aug 2026Releases
latest 60 of 167-
0.9.14304 Aug 2026Release notes
Open source →Added
-
A new
junit.report-skippedconfiguration setting controls which skipped tests are emitted in the JUnit XML report as<testcase>elements with a<skipped>child. (#885)Thanks to liangfu for your first contribution!
-
While listing tests, nextest now shows a progress bar if listing takes longer than 2 seconds. Listing is usually fast, but can be slow in some environments, such as with antivirus software that scans each test binary before it runs. (#3471)
-
The binaries metadata (used by archives and
--binaries-metadata) now records whether Cargo built each non-test binary for the host or the target platform. Future versions of nextest will use this to configure environment variables correctly in cross-compilation scenarios. (#3520)
Changed
- Nextest now orders the dynamic library search path the way current versions of Cargo do, with the Cargo artifact directory ahead of the
depsdirectory. Previously the two were reversed, so a test could potentially resolve adylibto a different copy thancargo testwould. (Cargo swapped the two in 1.93.)
Fixed
- Nextest now computes the dynamic library search path correctly under build directory layout v2, which became the default on nightly Rust on 2026-07-30. Previously, tests that linked against a
dylibdependency failed to start because the dynamic library could not be found. - When Cargo's
build.build-diris configured, nextest now adds the Cargo artifact directory (where final artifacts like binaries and dynamic libraries are uplifted to) instead of the build directory (for intermediate artifacts) to the dynamic library search path. This matches Cargo's behavior. - Nextest now detects the base output directory for test binaries built from
[[example]]targets, which Cargo places inexamplesrather thandeps. Previously, a run restricted to examples didn't add anything to the dynamic library search path, so an example test linking against adylibfailed to start. - While creating an archive with a filterset, nextest now always includes dynamic libraries in the archive, even those from packages whose test binaries are all filtered out. Dynamic libraries are on the library search path and may be loaded by tests in other packages. Binaries exposed via
CARGO_BIN_EXE_<name>are still filtered out if no test binaries from that package are selected. (#3516) - The "Archiving" message now counts non-test binaries correctly. Previously, nextest counted the number of packages containing non-test binaries rather than the number of binaries. (#3515)
Release notes
Open source →Added
-
A new
junit.report-skippedconfiguration setting controls which skipped tests are emitted in the JUnit XML report as<testcase>elements with a<skipped>child. (#885)Thanks to liangfu for your first contribution!
-
While listing tests, nextest now shows a progress bar if listing takes longer than 2 seconds. Listing is usually fast, but can be slow in some environments, such as with antivirus software that scans each test binary before it runs. (#3471)
-
The binaries metadata (used by archives and
--binaries-metadata) now records whether Cargo built each non-test binary for the host or the target platform. Future versions of nextest will use this to configure environment variables correctly in cross-compilation scenarios. (#3520)
Changed
- Nextest now orders the dynamic library search path the way current versions of Cargo do, with the Cargo artifact directory ahead of the
depsdirectory. Previously the two were reversed, so a test could potentially resolve adylibto a different copy thancargo testwould. (Cargo swapped the two in 1.93.)
Fixed
- Nextest now computes the dynamic library search path correctly under build directory layout v2, which became the default on nightly Rust on 2026-07-30. Previously, tests that linked against a
dylibdependency failed to start because the dynamic library could not be found. - When Cargo's
build.build-diris configured, nextest now adds the Cargo artifact directory (where final artifacts like binaries and dynamic libraries are uplifted to) instead of the build directory (for intermediate artifacts) to the dynamic library search path. This matches Cargo's behavior. - Nextest now detects the base output directory for test binaries built from
[[example]]targets, which Cargo places inexamplesrather thandeps. Previously, a run restricted to examples didn't add anything to the dynamic library search path, so an example test linking against adylibfailed to start. - While creating an archive with a filterset, nextest now always includes dynamic libraries in the archive, even those from packages whose test binaries are all filtered out. Dynamic libraries are on the library search path and may be loaded by tests in other packages. Binaries exposed via
CARGO_BIN_EXE_<name>are still filtered out if no test binaries from that package are selected. (#3516) - The "Archiving" message now counts non-test binaries correctly. Previously, nextest counted the number of packages containing non-test binaries rather than the number of binaries. (#3515)
-
-
0.9.14005 Jul 2026Release notes
Open source →Added
-
A new
cargo nextest help <topic>subcommand renders reference documentation directly in the terminal. The available topics are:filterset(aliasfiltersets): the filterset DSL referencerepo-config: the repository configuration referenceuser-config: the user configuration reference
cargo nextest helplists the available topics. (#3419, #3424, #3432, #3433)
Changed
- The glibc requirement for pre-built
aarch64-unknown-linux-gnuandriscv64-unknown-linux-gnubuilds has been lowered to glibc 2.27. riscv64-unknown-linux-gnunow uses rustls + aws-lc-rs rather than OpenSSL.
-
-
0.9.140-b.205 Jul 2026 pre-releaseNothing published for this version
-
0.9.140-b.105 Jul 2026 pre-releaseNothing published for this version
-
0.9.13821 Jun 2026Release notes
Open source →Added
-
Nextest now sets the following environment variables during the list phase, not just the run phase:
NEXTEST_VERSIONNEXTEST_REQUIRED_VERSIONNEXTEST_RECOMMENDED_VERSIONNEXTEST_RUN_IDNEXTEST_BINARY_IDNEXTEST_WORKSPACE_ROOT
This lets target runners and custom test harnesses use this information while listing tests. (#3410)
Changed
- When
--cargo-metadatais passed without--binaries-metadata, and the Cargo metadata contains exactly one default member (for example, metadata generated with--manifest-path path/to/package/Cargo.toml), nextest now anchors the build scope to that member'sCargo.tomlrather than widening it to the entire workspace. (#3409) --workspace-remapnow requires both--cargo-metadataand--binaries-metadata. The combination of--workspace-remapand--cargo-metadatacannot work without--binaries-metadata, so nextest now reports this as an error up front. (#3409)
-
-
0.9.13726 May 2026Release notes
Open source →Changed
- CLI
--helpdescriptions, configuration-reference docs, and JSON schema descriptions now use consistent language and voice. (#3366)
Fixed
- Filterset expressions like
not(test(foo)),all()and(test(foo)), andall()or(test(foo)), wherenot,and, ororis immediately followed by an opening parenthesis, now parse correctly. Previously, a separating space was required. (#3367)
- CLI
-
0.9.13617 May 2026Release notes
Open source →Added
- Following up from the recently-added schema for repository configuration, nextest now also provides a JSON Schema for user configuration. The schema for the running version can be obtained by running
cargo nextest self schema user-config. (#3351)
Changed
- The
max-progress-runninguser-config setting no longer accepts numeric strings like"8"(an undocumented fallback). The supported values remain a non-negative integer (e.g.8) or"infinite". (#3350)
- Following up from the recently-added schema for repository configuration, nextest now also provides a JSON Schema for user configuration. The schema for the running version can be obtained by running
-
0.9.13514 May 2026 -
0.9.13314 Apr 2026Release notes
Open source →Added
-
Nextest now supports a
group()filterset predicate for CLI filter expressions, allowing tests to be listed or run by their assigned test group. (#3273)For example, to run all tests in a specific group:
cargo nextest run -E 'group(my-group)'To list all tests that aren't in the default global group:
cargo nextest list -E 'not group(@global)' -
As part of
cargo testbinary emulation,--nocapturecan now be passed in after--.
Fixed
- When
--status-level failis set, slow test notifications were previously displayed in a corrupt format (the duration and test name were shown, but the status was omitted). Slow notifications are now correctly hidden. (#3236) - On Windows, pressing
tfor test status info no longer shows the output twice; nextest now only reacts to key-press events, ignoring key-release events. (#3225)
Security
- Update
randto 0.10.1 for RUSTSEC-2026-0097 / GHSA-cq8v-f236-94qc. Note that based on the advisory description, this unsoundness does not appear to affect nextest, since none of the coveredrandversions have thelogfeature turned on. - Update
rustls-webpkito 0.103.10.
-
-
0.9.13220 Mar 2026 -
0.9.132-rc.320 Mar 2026 pre-releaseNothing published for this version
-
0.9.13118 Mar 2026Release notes
Open source →Added
-
Setup scripts and wrapper scripts can now specify per-command environment variables via the
envfield in the command configuration. (#3001)For example:
[scripts.setup.script1] command = { command-line = "cargo run -p setup-test-db", env = { DB_PATH = "sqlite:/path/to/source.db", }, }Keys cannot begin with
NEXTEST, as that prefix is reserved for internal use. Values defined inenvoverride values set by the environment and by Cargo'sconfig.toml(including those withforce = true).Thanks metatoaster for your first contribution!
-
A new
flaky-resultconfiguration field and--flaky-resultCLI flag (environment variableNEXTEST_FLAKY_RESULT) controls whether flaky tests are treated as passing or failing. When set to"fail", tests that pass on retry are marked as failures. The default remains"pass".flaky-resultcan be set at the profile level or per-test via overrides. (#3148)For more information, see Failing flaky tests.
[profile.ci] retries = 2 flaky-result = "fail" -
A new
cargo nextest store export-chrome-tracecommand that exports test run data in the Chrome Trace Event format. Traces can be loaded into Perfetto or Chrome'schrome://tracingfor a timeline view of test parallelism and execution. (#3163)cargo nextest store export-chrome-trace latest -o trace.jsonTraces support grouping by binary (default) or by slot (
--group-by slot), and can be exported from both on-disk runs and portable recordings. For more, see Perfetto traces. -
Added release binaries for
riscv64gc-unknown-linux-gnu. These binaries are cross-compiled from x86_64 Linux and are not currently tested.
Fixed
- Nextest now works with the new build directory layout (
-Zbuild-dir-new-layout), and with the build directory being separate from the target directory (build.build-dir). (#3168, #3169)
Changed
- When retries are enabled, nextest no longer shows
TRY 1 SLOWmessages for the first attempt.TRY N SLOWis still shown for subsequent attempts.
Miscellaneous
- Self-update (
cargo nextest self update) now uses ureq instead of reqwest and replaces theringdependency withaws-lc-rs. This may require you to install CMake if you're on a less-commonly-used platform. (#3141)
Internal improvements
- Breaking change to the recording format: recordings now include test group and slot information, enabling Chrome trace export from recordings. (#3158)
-
-
0.9.131-rc.317 Mar 2026 pre-releaseNothing published for this version
-
0.9.131-rc.217 Mar 2026 pre-releaseNothing published for this version
-
0.9.13010 Mar 2026Release notes
Open source →Added
-
Nextest now sets several new environment variables for tests and setup scripts: (#3103)
NEXTEST_VERSION: the current nextest version as a semver string.NEXTEST_REQUIRED_VERSIONandNEXTEST_RECOMMENDED_VERSION: the minimum required and recommended nextest versions from the repository'snextest-versionconfiguration. If not configured, the value is"none".NEXTEST_TEST_THREADS: the computed number of test threads for this run.NEXTEST_WORKSPACE_ROOT: the absolute path to the workspace root (respects--workspace-remap).
-
Nextest now sets
CARGO_BIN_EXE_<name>at runtime for integration tests and benchmarks, matchingcargo testin Rust 1.94 and above. Nextest sets this variable on all Rust versions. (#3137)Previously, nextest only set
NEXTEST_BIN_EXE_<name>, which remains available (and, with underscores, continues to be the recommended form). TheCARGO_BIN_EXE_<name>form improves compatibility with tests written forcargo test.
Changed
- The automatic migration of recorded test runs from the cache directory to the state directory, introduced in version 0.9.126, has been removed. Records in the old cache directory location will no longer be migrated. (#3101)
Fixed
A couple of displayer fixes:
- Better sorting for the final summary when counters aren't displayed. (#3100)
- Fixed counter width padding in progress output to use the run count rather than the total test count. (#3102)
Internal improvements
- Cargo JSON output is now streamed directly into the binary list, making binary listing around 6% faster on large workspaces. (#3131) Thanks cornmander for your first contribution!
-
-
0.9.12922 Feb 2026Release notes
Open source →Changed
--show-progress=onlynow behaves like the defaultautoin non-interactive mode, showing successful tests with a counter. This change was made becauseonlyis primarily intended for interactive scenarios. (#3087)- The MSRV for building nextest has been updated to Rust 1.91.
Fixed
- Setup scripts that write
NEXTEST-prefixed environment variables to$NEXTEST_ENVnow properly report failure. Previously, the setup script would be reported as successful despite invalid variables, and tests would still run. (#3094)
Internal improvements
- Replay output is now only loaded from the archive when needed. This makes replays around 10-15% faster. (#3090)
- Switched from the
zipcrate toeazipto address repeated semver breakage in thezipcrate. (#3093)
-
0.9.12819 Feb 2026Release notes
Open source →Fixed
Updated the zip crate to 8.0.0 since versions 7.3.0 and 7.4.0 were yanked.
-
0.9.12713 Feb 2026Release notes
Open source →Added
-
A new
--partition slice:m/nmode for partitioning test runs. Sliced partitioning distributes tests evenly across shards regardless of how tests are distributed across binaries. This addresses the issue wherecount:m/noperates per-binary, leading to uneven shard sizes when tests span multiple binaries of varying sizes. (#3052)The existing
count:m/npartitioner is now deprecated in favor ofslice:m/n. Hashed sharding (hash:m/n) continues to be available for use cases where stability across test additions/removals matters more than even distribution. -
Replay and rerun commands (
cargo nextest replay,cargo nextest run -R) now accept portable recordings from pipes and process substitutions. For example,cargo nextest run -R <(curl url)now works. (#3071)
Changed
- Nextest no longer creates the store directory unless JUnit output is enabled. This is a step towards deprecating the store directory in favor of portable recordings. (#3053)
Fixed
- Fixed display of file sizes near unit boundaries (e.g. sizes near 1 KiB or 1 MiB) in recording output. (#3072)
-
-
0.9.12604 Feb 2026Release notes
Open source →Changed
-
Recorded test runs are now stored in the system state directory rather than the cache directory, since they are not regenerable. (#3043)
Platform New location Linux, macOS, and other Unix $XDG_STATE_HOME/nextest/or~/.local/state/nextest/Windows %LOCALAPPDATA%\nextest\(unchanged)The store location can now be overridden via
NEXTEST_STATE_DIR(previouslyNEXTEST_CACHE_DIR).For this release, records in the cache directory will be automatically migrated on the next nextest run. Since this feature is experimental, the migration path will be removed soon (in the next 1-2 releases).
-
-
0.9.12504 Feb 2026Release notes
Open source →Added
-
New
cargo nextest store exportcommand to export recorded runs as portable recordings. Portable recordings are zip archives that can be shared and uploaded as CI artifacts. (#3010) -
cargo nextest replay,cargo nextest run -R, andcargo nextest store infonow accept paths to portable recordings (.zipfiles) in addition to run IDs. This enables replaying and rerunning test results from exported archives, including those downloaded from CI. (#3012) -
Nextest now publishes binaries for
aarch64-unknown-linux-musl, providing a statically-linked ARM64 Linux binary with no runtime library dependencies. Thanks altendky for your first contribution! (#3025)
Changed
- USDT tracing probes are now an optional default feature,
usdt. This fixes cross-compilation for some targets. Thanks konstin for your first contribution! (#3027)
Fixed
- In replay mode, when output was not captured during recording (e.g. with
--no-capture), nextest now shows a "(output not captured)" message rather than blank output. (#3028)
Other
- Published a design document describing how nextest does records, replays and reruns. The audience for this document is nextest contributors and curious readers. We hope you enjoy it!
Security
- Update
bytescrate to v1.11.1 for a security fix. (#3032)
-
-
0.9.12425 Jan 2026Release notes
Open source →Fixed
The unsupported install mechanism,
cargo install cargo-nextestwithout--locked, now fails with a helpful error message asking you to usecargo install --locked cargo-nextest.Note that this unsupported method was broken with version 0.9.123 due to a dependency update, resulting in several issues being filed. We hope that the new mechanism results in clearer, more helpful guidance.
-
0.9.12323 Jan 2026Release notes
Open source →This is a major release with several new features. If you run into issues, please file a bug.
Added
-
Major new feature: experimental support for recording, replaying, and rerunning test runs. Enable by adding
record = trueto the[experimental]section in user config, or by settingNEXTEST_EXPERIMENTAL_RECORD=1.Once enabled, recording can be turned on by adding
enabled = trueto the[record]section in user config. Recorded runs are stored in the system cache directory.New commands:
cargo nextest replay: Replay a test run (by default, the latest completed run).cargo nextest run -R latest: Rerun tests that failed the last time.cargo nextest store list: List all recorded runs.cargo nextest store info: Show details about a specific run.cargo nextest store prune: Prune old recorded runs.
-
A new
--user-config-fileoption (environment variableNEXTEST_USER_CONFIG_FILE) allows explicit control over user configuration loading. Pass a path to a specific config file, ornoneto skip user config entirely. -
A new
--cargo-message-formatoption enables live streaming of Cargo's JSON messages to standard out. This feature is equivalent tocargo test --message-format.
Changed
-
The
experimentalsection in repository config can now also be a table, not just an array. The previous array syntax is deprecated but still supported. For example:# New style (recommended). [experimental] benchmarks = true # Old style (deprecated) experimental = ["benchmarks"]Note that user configuration's
experimentalis always a table. The array syntax is not supported in that case.This change enables upcoming config set support over the command line.
-
When a config file specifies both a future
nextest-versionand an unknown experimental feature, the version error now takes precedence. This produces clearer error messages for users running older nextest versions.
Fixed
-
-
0.9.123-b.423 Jan 2026 pre-releaseNothing published for this version
-
0.9.123-b.321 Jan 2026 pre-releaseNothing published for this version
-
0.9.123-b.219 Jan 2026 pre-releaseNothing published for this version
-
0.9.123-b.118 Jan 2026 pre-releaseNothing published for this version
-
0.9.12214 Jan 2026Release notes
Open source →Added
- iTerm now supports the OSC 9;4 progress protocol for progress bar integration. Thanks case for your first contribution!
Fixed
- Fixed an issue where the progress bar displayed stale statistics during test runs (#2930).
-
0.9.12112 Jan 2026Release notes
Open source →Fixed
- In custom target JSONs,
panic-strategy = "immediate-abort"now parses correctly (#2922).
- In custom target JSONs,
-
0.9.12008 Jan 2026Release notes
Open source →Added
-
Support for using a pager like
lesswith nextest's output. Currently supported are:cargo nextest listcargo nextest show-config test-groups-hand--helpcommands
The pager support is closely modeled after the Jujutsu version control system. The default pager is
less -FRXon Unix platforms, and a builtin pager (based on sapling-streampager) on Windows. -
cargo nextest self updatenow supports--betaand--rcflags to update to prerelease versions.
-
-
0.9.119-b.205 Jan 2026 pre-releaseNothing published for this version
-
0.9.119-b.105 Jan 2026 pre-releaseNothing published for this version
-
0.9.11804 Jan 2026Release notes
Open source →Added
-
Nextest now supports user configuration for personal preferences. User config is stored in
~/.config/nextest/config.toml(or%APPDATA%\nextest\config.tomlon Windows) and includes the following settings:show-progress: Controls progress display during test runs.max-progress-running: Maximum number of running tests to show in the progress bar.input-handler: Enable or disable keyboard input handling.output-indent: Enable or disable output indentation for captured test output.
User config settings are lower priority than CLI arguments and environment variables. For details, see User configuration.
Fixed
- Fixed an issue where nextest could hang when tests spawn interactive shells (e.g.,
zsh -ic) that calltcsetpgrpto become the foreground process group. Nextest now ignoresSIGTTINandSIGTTOUsignals while input handling is active. (#2884)
-
-
0.9.11702 Jan 2026Release notes
Open source →Added
-
Experimental support for running benchmarks via
cargo nextest bench. SetNEXTEST_EXPERIMENTAL_BENCHMARKS=1to enable.Benchmarks have a separate configuration namespace with dedicated slow-timeout and global-timeout settings:
[profile.default] bench.slow-timeout = { period = "120s", terminate-after = 2 } bench.global-timeout = "1h"Per-test overrides are also supported within the
benchsection. -
The
listcommand now supports--message-format onelinefor grep-friendly output. -
Nextest now accepts
--target host-tupleto explicitly target the host platform, mirroring Cargo's new feature. This resolves to the detected host triple at runtime. (#2872)
Changed
- The default output style for
cargo nextest listhas been changed to a newautovalue, which is equivalent tohuman(the previous default) if standard output is an interactive terminal, andonelineif not.
Fixed
-
Fixed a panic when reporting test results with
on-timeout = "pass"in slow-timeout configuration. -
Retry attempts for tests that both fail and leak handles now correctly display as
TRY n FL+LKinstead ofTRY n FAIL.
-
-
0.9.11627 Dec 2025Release notes
Open source →Added
-
Nextest now sets several new environment variables for each test execution:
NEXTEST_TEST_NAME: The name of the test being run.NEXTEST_ATTEMPT: The current attempt number (starting from 1).NEXTEST_TOTAL_ATTEMPTS: The total number of attempts that will be made.NEXTEST_BINARY_ID: The binary ID of the test.NEXTEST_ATTEMPT_ID: A unique identifier for this specific attempt.NEXTEST_STRESS_CURRENTandNEXTEST_STRESS_TOTAL: For stress tests, the current and total iteration counts.
These variables allow tests to be aware of their execution context, enabling conditional behavior based on retry attempts or stress test iterations.
-
With
cargo nextest run --verbose, nextest now displays the command line used to run each test. Thanks dangvu0502 for your first contribution! (#2800) -
A new glossary page documents key nextest terminology.
Changed
- The internal
__NEXTEST_ATTEMPTenvironment variable has been removed and replaced by the publicNEXTEST_ATTEMPTvariable.
-
-
0.9.11515 Dec 2025Release notes
Open source →Added
-
Nextest profiles now support inheritance via the
inheritskey. For example:[profile.ci] retries = 2 [profile.ci-extended] inherits = "ci" slow-timeout = "120s" -
A new
on-timeoutoption forslow-timeoutallows tests that time out to be treated as successes instead of failures. This is useful for fuzz tests, or other tests where a timeout indicates no failing input was found. For example:[[profile.default.overrides]] filter = 'package(fuzz-targets)' slow-timeout = { period = "30s", terminate-after = 1, on-timeout = "pass" }Tests that time out and pass are marked
TMPASS. See Configuring timeout behavior for more information.Thanks eduardorittner for your first contribution! (#2742)
Changed
- MSRV updated to Rust 1.89.
-
-
0.9.11419 Nov 2025Release notes
Open source →Added
- A new config option
--tracerenables running a test under a system call tracer likestraceortruss. This mode is similar to--debuggeradded in version 0.9.113, but is optimized for non-interactive sessions. See this table for a comparison of behaviors.
- A new config option
-
0.9.11316 Nov 2025Release notes
Open source →Added
-
Nextest now supports running tests under a debugger. Use
--debuggerto run a single test under gdb, lldb, WinDbg, CodeLLDB in Visual Studio Code, and other debuggers, while preserving all the environment setup done by nextest.Nextest's debugger support will likely see some iteration and improvements over time. If it's missing a feature, please open a feature request, or even better, send a pull request!
-
Nextest now sets
NEXTEST_BIN_EXE_*environment variables with hyphens in binary names replaced by underscores, in addition to the existing variables with hyphens. This works around some shells and debuggers that drop environment variables containing hyphens. (#2777)
Fixed
- Fixed a panic when attempting to display progress during retries. (#2771)
- With stress tests, the progress bar no longer overwrites unrelated output. (#2765)
- During the list phase, invalid output lines with control characters in them are now properly escaped. (#2772)
Other
- Nextest's GitHub releases are now marked immutable, so for a particular version, its release binaries can't be changed by anybody after publication. (Release binaries have never changed as a matter of policy. The improvement here is that for 0.9.113 and future versions, this fact is now cryptographically attested by GitHub.)
-
-
0.9.113-b.116 Nov 2025 pre-releaseNothing published for this version
-
0.9.11104 Nov 2025Release notes
Open source →Added
- Nextest now supports immediately terminating currently-running tests on failure. Set
fail-fast = { max-fail = 1, terminate = "immediate" }in your configuration, or use--max-fail=1:immediate, to terminate running tests as soon as the first test fails.
Changed
-
In interactive terminals, nextest now shows 8 running tests by default underneath the progress bar. Control the maximum number of tests displayed with the
--max-progress-runningoption.As part of this change,
--show-progress=runningis now an alias for--show-progress=bar. To only show running tests, use--show-progress=only. -
Non-UTF-8 test output is now encoded with
String::from_utf8_lossybefore being printed out to the terminal. This should generally not be a visible change, since most tests produce UTF-8 output. -
When the progress bar is displayed, nextest now writes to terminal output every 50ms.
Fixed
- A number of performance improvements to running test output. Thanks glehmann for your work on polishing this feature!
- Nextest now supports immediately terminating currently-running tests on failure. Set
-
0.9.11031 Oct 2025Release notes
Open source →Added
- OSC 9;4 in-terminal progress bars are automatically enabled when the Ghostty terminal is detected. Thanks adamchalmers and RGBCube for your first contribution!
Fixed
- With
--show-progress=running, the global progress bar now stays in place more often, providing a smoother visual experience.
Changed
- MSRV for building nextest updated to Rust 1.88.
Internal improvements
- USDT probes now include additional context:
global_slot,group_slot, andtest_groupfields for test attempt events. - Miscellaneous performance improvements to
--show-progress=runningandonly.
-
0.9.10930 Oct 2025Release notes
Open source →Added
-
A new
runningprogress mode that shows currently running tests in addition to the progress bar. Use--show-progress=runningto see both running tests and information about successful tests, or--show-progress=onlyfor a more compact output showing only running tests, without displaying any output related to successful tests.Thanks glehmann for your first contribution!
-
The
cargo nextest archivecommand now supports binary filtering via the--filtersetor-Eoptions. This allows you to reduce the size of archives by including only a subset of test binaries. Note that test binaries are not executed during archiving, sotest()predicates are not supported.Thanks clundin55 for your first contribution!
Fixed
- Improvements to
--show-progress=counterfor better output formatting and reliability.
Other improvements
- USDT probes now include additional events:
- Updated
run-startandrun-doneevents to include stress run information. - New
stress-sub-run-startandstress-sub-run-doneevents for tracking individual stress run iterations. - Test completion events now include
stdout_lenandstderr_lenfields for output size tracking.
- Updated
-
-
0.9.10821 Oct 2025Release notes
Open source →Added
-
Support for USDT (User Statically Defined Tracing) probes for observability and debugging. USDT probes allow tools like DTrace and bpftrace to trace nextest's internal operations. The initial probes cover test execution lifecycle events.
For more information, see the USDT documentation.
-
In CI, test status lines now include a counter showing the number of tests that have been executed (#2618). Thanks bobrik for your first contribution!
Changed
- For leaky tests, default leak timeout increased from 100ms to 200ms.
- MSRV for building nextest updated to Rust 1.87.
-
-
0.9.108-b.121 Oct 2025 pre-releaseNothing published for this version
-
0.9.10613 Oct 2025Release notes
Open source →Fixed
- For custom targets, updated the deserializer to handle
target-pointer-widthbecoming an integer in the newest Rust nightlies.
Changed
- Update builtin list of targets to Rust 1.90.
- For custom targets, updated the deserializer to handle
-
0.9.10502 Oct 2025Release notes
Open source →Changed
On Windows, job objects are now created with
JOB_OBJECT_LIMIT_BREAKAWAY_OK. This enables test processes to have their children be assigned a different job object, which is particularly relevant on Windows 7 since that platform doesn't have nested job objects.Thanks to Guiguiprim for the contribution!
-
0.9.10415 Sep 2025Release notes
Open source →Added
- For stress tests, summary lines now indicate the number of iterations passed and/or failed.
Changed
- Always forward
--configarguments to Cargo invocations. Thanks to benschulz for your first contribution! - Internal dependency update:
target-specupdated to 3.5.1, updating built-in targets to Rust 1.89.
-
0.9.10325 Aug 2025Release notes
Open source →Added
- Initial support for stress tests: running tests a large number of times in a loop.
Changed
-
The
libtest-json-plusoutput now produces test results immediately rather than at the end of the run. This is allowed by the fact that with thelibtest-json-plusoutput, it is possible to distinguish between different test binaries based on the additionalnextestproperty.Thanks to dnbln for your first contribution!
Fixed
-
The heuristic detection for
panicked atin tests now handles the new output format in Rust nightlies (Rust 1.91 and above): on Unix platforms, the thread ID is now also included.Thanks again to dnbln for fixing this.
-
0.9.10203 Aug 2025Release notes
Open source →Added
- Windows releases are now digitally signed. Thanks to the SignPath Foundation for signing nextest's Windows builds.
Known issues
- Nextest's test suite can nondeterministically hang on machines with a large number of cores. This is a bug in Cargo 1.88, and is fixed in Cargo 1.89. See #2463 for more information.
-
0.9.102-rc.203 Aug 2025 pre-releaseNothing published for this version
-
0.9.10112 Jul 2025Release notes
Open source →Fixed
- Restored compatibility with Cargo's unstable
bindepsfeature in some circumstances.
Changed
- Tokio downgraded to 1.45.0 to try and get to the bottom of hangs in some configurations. If you encounter nextest 0.9.100 or 0.9.101 getting stuck, please comment in #2463. Thank you!
- MSRV updated to Rust 1.86.
- Restored compatibility with Cargo's unstable
-
0.9.10007 Jul 2025Release notes
Open source →Added
-
A new
global-timeoutoption allows setting a global timeout for the entire run. This is an alternative to the Unixtimeoutcommand that also works on Windows.For more information, see Setting a global timeout.
Thanks to robabla for your first contribution!
-
Nextest now reports progress to the terminal emulator for display in places like the task bar, similar to Cargo 1.87 and above. Terminal progress integration uses
OSC 9;4, and is enabled by default in Windows Terminal, ConEmu, and WezTerm.To configure this, use Cargo's
term.progress.term-integrationoption.
-
-
0.9.9916 Jun 2025Release notes
Open source →Added
- Script commands now support
relative-to = "workspace-root". This has minimal impact on setup scripts since they always run relative to the workspace root, but allows wrapper scripts to be invoked more easily.
Changed
- On remapping workspace or target directories, they're now converted to absolute ones. This should not have user-visible effects.
- Script commands now support
-
0.9.9806 Jun 2025Release notes
Open source →Added
- Experimental support for wrapper scripts for test execution.
Changed
- Setup scripts are now specified within the
[scripts.setup]table, for example[scripts.setup.db-generate]. The previous[script.db-generate]configuration will continue to work for a short while.
-
0.9.98-b.105 Jun 2025 pre-releaseNothing published for this version
-
0.9.9730 May 2025Release notes
Open source →Fixed
- Worked around a Rust type inference bug as part of a dependency update (#2370).
Changed
- The MSRV for compiling nextest is now Rust 1.85. (The MSRV for running tests remains unchanged.)
-
0.9.97-b.219 May 2025 pre-releaseNothing published for this version
-
0.9.9615 May 2025Release notes
Open source →Miscellaneous
- Pre-built binaries are now built with Rust 1.87, which is the first version to support
posix_spawn-based process spawning on illumos.
- Pre-built binaries are now built with Rust 1.87, which is the first version to support
-
0.9.9530 Apr 2025Release notes
Open source →Added
You can now mark leaky tests as failed rather than passed. The default is still to treat them as passed. For more, see Marking leaky tests as failures.
Changed
Several display formatting improvements with a focus on visual clarity and reduced UI clutter:
- Captured output (typically for failing tests) is now indented by 4 spaces, for easier-to-scan logs. This can be disabled with the new
--no-output-indentoption, or by settingNEXTEST_NO_OUTPUT_INDENT=1in the environment. - If tests abort or fail through unexpected means (e.g. due to a signal), nextest now prints out a status line explaining what happened. For example,
(test aborted with signal 6: SIGABRT).
Fixed
Fixed an occasional hang on Linux with libtest JSON output. For more details, see #2316.
- Captured output (typically for failing tests) is now indented by 4 spaces, for easier-to-scan logs. This can be disabled with the new
-
0.9.95-rc.229 Apr 2025 pre-releaseNothing published for this version
-
0.9.95-rc.129 Apr 2025 pre-releaseNothing published for this version