Releases: web-infra-dev/rstest
v0.9.5
What's Changed
New Features 🎉
- feat: add
output.distPath.rootconfiguration by @9aoy in #1083 - feat(core): add output.bundleDependencies config option by @9aoy in #1072
- feat: add unmockRequire / doUnmockRequire API by @9aoy in #1098
- feat(browser): support output browser inspect config files when DEBUG is enabled by @9aoy in #1104
Performance 🚀
- perf(core): cache TraceMap and parsed sourcemaps, use Set for coverage file lookup by @fi3ework in #1074
- perf(core): lazy load runtime diff formatting and fake timers by @fi3ework in #1079
- perf(core): split monolithic worker bundle into lazy-loaded chunks by @fi3ework in #1085
- perf(core): replace jest-diff and pretty-format with @vitest/utils by @fi3ework in #1087
- perf: pre-filter test projects to avoid unnecessary builds by @9aoy in #1092
- perf(worker): lazy-load coverage provider to reduce worker startup overhead by @fi3ework in #1110
Bug Fixes 🐞
- fix(core): propagate color env to worker processes for correct ANSI output by @fi3ework in #1081
- fix: always bundle requests when using inline loader by @9aoy in #1089
- fix: enable full knip checks and clean up unused exports and dead code by @fi3ework in #1102
- fix(core): scope cli options to relevant commands by @9aoy in #1107
- fix(browser): keep lazyCompilation and hmr enabled by @fi3ework in #1109
Document 📖
- docs: add mocking guide by @9aoy in #1078
- docs: link
Markdown reporterto AI guide by @9aoy in #1084 - docs: polish rstest features by @9aoy in #1093
- docs: clarify single-value include glob behavior by @9aoy in #1100
- docs: add
view test temporary outputsguide by @9aoy in #1103 - docs: add ApiMeta for
output.bundleDependenciesconfiguration by @9aoy in #1108
Other Changes
- chore(deps): update dorny/paths-filter action to v4 by @renovate[bot] in #1076
- chore(deps): update dependency bumpp to v11 by @renovate[bot] in #1075
- chore(deps): update pnpm/action-setup action to v5 by @renovate[bot] in #1077
- test(core): use unique temp file paths in extends config tests by @fi3ework in #1080
- ci: add Rsdoctor CI bundle tracking by @fi3ework in #1086
- ci: update rsdoctor-action to latest commit by @fi3ework in #1094
- chore(deps): update all non-major dependencies by @renovate[bot] in #1097
- ci: add knip for unused dependencies detection by @fi3ework in #1095
- chore(ci): update rsdoctor reportDir by @9aoy in #1099
- chore(lint): migrate rslint to flat config by @chenjiahan in #1101
- ci: merge lint into test workflow and gate e2e on both lint and ut by @fi3ework in #1105
- chore(ci): fix MODULE_TYPELESS_PACKAGE_JSON warnings by @9aoy in #1106
Full Changelog: v0.9.4...v0.9.5
v0.9.4
What's Changed
Performance 🚀
Bug Fixes 🐞
- fix: should handle unhandledRejection error name correctly by @9aoy in #1067
- fix(core): handle builtin imports in linked esm loader by @Timeless0911 in #1070
Document 📖
Other Changes
Full Changelog: v0.9.3...v0.9.4
v0.9.3
What's Changed
New Features 🎉
- feat(browser): add providerOptions for browser mode config by @fi3ework in #1041
- feat: support table syntax for
test.eachby @9aoy in #1049 - feat: support merging reports and coverage when using test sharding by @9aoy in #1054
- feat: support
coverage.allowExternaloption by @9aoy in #1050 - feat: add test adapter for Rspack by @9aoy in #1048
- feat(core): support composing multiple extends configs by @fi3ework in #1060
Bug Fixes 🐞
- fix(browser): move headed reload completion out of birpc by @fi3ework in #1043
- fix(adapter-rsbuild): bundle
adapter-rsbuildtypes by @9aoy in #1055 - fix: rspack peerDependencies version by @9aoy in #1058
- fix(browser-ui): show collected cases before first result by @fi3ework in #1062
- fix(browser-ui): sync case status before results arrive by @fi3ework in #1063
Document 📖
- docs(agents): centralize workflow guidance in skills by @fi3ework in #1051
- docs: add AI documentation by @Timeless0911 in #1052
- docs: link
rstest-best-practicesskill by @9aoy in #1057 - docs: generate description frontmatter for rstest documentation by @9aoy in #1056
- docs: add api version for merge-reports by @9aoy in #1061
Other Changes
- chore(deps): update dependency chokidar to v5 by @renovate[bot] in #1031
- ci: use pnpm to run scripts by @9aoy in #1036
- chore: enable
tsgoin local by @9aoy in #1037 - chore(deps): update dependency jsdom to v28 by @renovate[bot] in #1038
- chore: enforce noNamespaceImport with targeted exceptions by @fi3ework in #1047
- ci: parallelize e2e test scripts in CI matrix by @9aoy in #1053
- chore(deps): update all non-major dependencies by @renovate[bot] in #1040
- release: 0.9.3 by @9aoy in #1066
Full Changelog: v0.9.2...v0.9.3
v0.9.2
What's Changed
Document 📖
Other Changes
- ci: skip no-isolate e2e on Node 20 by @fi3ework in #1023
- test: simplify browser e2e headless setup by @fi3ework in #1028
- refactor(core): delegate agent detection to std-env by @fi3ework in #1029
- chore(deps): upgrade Rslib 0.20 canary version by @Timeless0911 in #1030
- chore(deps): update actions/setup-node digest to 53b8394 by @renovate[bot] in #1001
- chore(deps): update @rslib/core and @rsbuild/core by @Timeless0911 in #1034
Full Changelog: v0.9.1...v0.9.2
v0.9.1
What's Changed
Performance 🚀
Bug Fixes 🐞
- fix:
bailconfiguration should work with the test file error by @9aoy in #997 - fix(core): restore async doMock factory and doUnmock recovery by @fi3ework in #998
- fix(e2e): skip headed browser tests on Linux CI without display by @fi3ework in #999
- fix: wasm load error with dynamic import expression by @9aoy in #991
- fix: apply default watch ignore options for browser mode by @9aoy in #1006
- fix(browser): disable rsbuild hmr outside watch mode by @fi3ework in #1010
- fix(watch): cleanup resources on Ctrl+Z exit by @fi3ework in #1012
- fix(vscode): prevent hanging test runs on worker failures by @fi3ework in #1014
- fix(browser): serialize headed file execution by @fi3ework in #1017
- fix(browser): eager compile setup files in watch mode by @fi3ework in #1021
- fix: should not exclude dist/ directory when collecting coverage by @9aoy in #1022
- fix: handle undefined env values correctly when applying worker runtime env by @9aoy in #1024
- fix(browser): support quitting watch mode from the terminal by @fi3ework in #1026
Document 📖
- docs: introduce
rs.mockRequireandrs.doMockRequireAPIs by @9aoy in #1005 - docs: add global API types tip when migrating from jest by @9aoy in #1020
Other Changes
- chore(deps): update dependency open-editor to v6 by @renovate[bot] in #1002
- chore(deps): update actions/checkout digest to de0fac2 by @renovate[bot] in #1000
- chore(deps): update dependency rslog to v2 by @renovate[bot] in #1003
- chore(deps): update dependency @clack/prompts to v1 by @renovate[bot] in #1004
- ci(e2e): enable CI test-case retries by @fi3ework in #1011
- chore(deps): update dependency cac to v7 by @renovate[bot] in #1007
- chore(deps): update dependency sirv to v3 by @renovate[bot] in #1008
- chore(deps): update dependency prettier-plugin-packagejson to v3 by @renovate[bot] in #1016
- chore(deps): update dependency check-dependency-version-consistency to v6 by @renovate[bot] in #1015
- test: fix MODULE_TYPELESS_PACKAGE_JSON warnings by @9aoy in #1018
- test: enable headless mode by default in tests by @9aoy in #1019
- chore(deps): update dependency chai to v6 by @renovate[bot] in #512
- release: 0.9.1 by @9aoy in #1027
Full Changelog: v0.9.0...v0.9.1
v0.9.0
What's Changed
New Features 🎉
- feat(deps)!: update @rsbuild/core to v2 beta by @9aoy in #968
- feat(vscode): add editor diagnostics and clean up failure UI by @fi3ework in #980
- feat: add
rs.waitForandrs.waitUntilutilities by @9aoy in #982 - feat(adapter-rsbuild): export
toRstestConfigmethod by @9aoy in #978 - feat(reporter): add
testListsoption to md reporter by @fi3ework in #987 - feat(browser): support Locator and Assertion by @fi3ework in #948
Performance 🚀
- perf: use advanced serialization by @claneo in #792
- perf(CLI): change default config loader from
jititoautoby @9aoy in #992
Bug Fixes 🐞
- fix(browser): align browser reporter lifecycle hooks across run and watch by @fi3ework in #976
- fix(browser): remove default process shim while keep env stubbing support by @fi3ework in #981
- fix(browser): resolve browser failure annotations to test sources in github-actions reporter by @fi3ework in #989
- fix: error messages not displayed due to stream interception by @9aoy in #993
- fix(core): avoid misdetecting cursor terminal as agent by @fi3ework in #994
Document 📖
- docs: add more detailed docs for migration by @fi3ework in #975
- docs: add
migrate-to-rstestskill to migration guide by @9aoy in #983
Other Changes
- refactor(browser): sessionize headless scheduler and unify dispatch RPC by @fi3ework in #963
- refactor!: drop support for Node 18 by @9aoy in #969
- chore(agent): add mermaid based architecture diagram by @fi3ework in #977
- chore(deps): update all non-major dependencies by @renovate[bot] in #890
- chore(deps): update dependency tinypool to v2 by @renovate[bot] in #979
- chore: fix some lint errors by @9aoy in #984
- chore(workflow): split e2e tests by @9aoy in #986
- release(adapter-rsbuild): 0.2.1 by @9aoy in #988
Full Changelog: v0.8.5...v0.9.0
v0.8.5
v0.8.4
What's Changed
New Features 🎉
Performance 🚀
Bug Fixes 🐞
- fix: reorganize the logic of color and remove the forced default values by @fi3ework in #946
- fix: setup files run only once with no-isolate by @claneo in #947
- fix(browser): unify error reporting and avoid duplicate error messages by @fi3ework in #950
- fix: should return the same spy instance when respy by @9aoy in #955
- fix(core): include worker stderr in unexpected-exit summary by @fi3ework in #956
Document 📖
- docs: update vitest migration guide by @9aoy in #953
- docs(migration): use diff code block by @9aoy in #954
- docs: add TypeScript typings guide for custom matchers by @9aoy in #957
Other Changes
- test: drop browser mode test from no-isolate test by @fi3ework in #944
- refactor(browser): centralize browser config validation in @rstest/browser by @fi3ework in #951
- test(browser-mode): guard headed e2e case by display availability by @fi3ework in #958
- chore(deps): bump rspress 2.0 by @9aoy in #918
- chore(deps): update dependency axios to v1.13.5 [security] by @renovate[bot] in #959
Full Changelog: v0.8.3...v0.8.4
v0.8.3
What's Changed
Bug Fixes 🐞
- fix(core): align color env priority and improve agent detection by @fi3ework in #936
- fix: should not load real implementation when module is mocked by @9aoy in #934
- fix: should respect project's
slowTestThresholdconfiguration by @9aoy in #938 - fix(browser): avoid log out deleting virtual module by @fi3ework in #939
Other Changes
- ci: browser mode less flaky by @fi3ework in #932
- chore(deps): bump rsbuild v1.7.3 by @9aoy in #937
- test(browser): fix flaky by @fi3ework in #940
- ci: add preview release summary to GitHub Actions by @fi3ework in #941
- test(e2e): unify timeout time, less flaky by @fi3ework in #942
Full Changelog: v0.8.2...v0.8.3
v0.8.2
Highlights 💡
Introducing Markdown reporter for agent 🤖
Rstest automatically detects AI coding agent (Claude Code, Cursor, Codex, opencode, etc.) and switches to Markdown output — no configuration needed.
The structured Markdown format is easier for LLMs to parse and understand compared to traditional terminal output. Each failure includes a one-click repro command so agents can quickly rerun and debug individual test cases. Output is intelligently truncated to stay within context limits even when many tests fail, saving tokens and reducing cost.
For detailed configuration options, see https://rstest.rs/guide/basic/reporters#markdown-reporter.
md-reporter.mp4
What's Changed
New Features 🎉
- feat(core): use
mdreporter for AI agent by default by @fi3ework in #911 - feat: support test sharding by @9aoy in #921
- feat: not update snapshots that were not run on test failure by @9aoy in #910
- feat: support filter test by full test name by @9aoy in #916
- feat(core): support inspector mode for worker pool by @fi3ework in #919
Bug Fixes 🐞
- fix(e2e): ensure environment variables are truly unset in CLI helper by @fi3ework in #909
- fix(vscode): relax @rstest/core version requirement by @fi3ework in #914
- fix(browser): fix headless config and enable coverage support by @fi3ework in #922
- fix(vscode): Unable to use the “Run Tests in File or Folder” feature by @claneo in #920
- fix: exit with code 1 when coverage report generate error by @9aoy in #924
- fix(coverage): only apply coverage plugin for main js rule by @9aoy in #925
- fix(vscode): stderr logs not written to output by @claneo in #926
- fix(reporter): create jUnit output dir tree if needed by @joshuapetryk in #927
Document 📖
Other Changes
- test(e2e): refactor browser snapshot tests for better isolation by @fi3ework in #913
- chore: bump browserlist by @fi3ework in #923
- test(browser-mode): add comprehensive e2e test coverage by @fi3ework in #929
- ci: fix E2E error by @fi3ework in #930
New Contributors
- @joshuapetryk made their first contribution in #927
Full Changelog: v0.8.1...v0.8.2