Skip to content

Releases: web-infra-dev/rstest

v0.9.5

26 Mar 10:53
f3b9e39

Choose a tag to compare

What's Changed

New Features 🎉

  • feat: add output.distPath.root configuration 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 reporter to 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 outputs guide by @9aoy in #1103
  • docs: add ApiMeta for output.bundleDependencies configuration 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

19 Mar 08:14
5b25798

Choose a tag to compare

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 📖

  • docs: remove mocking re-exported modules tip by @9aoy in #1069

Other Changes

  • chore(rsbuild-adapter): update rsbuild plugin name by @9aoy in #1068

Full Changelog: v0.9.3...v0.9.4

v0.9.3

18 Mar 06:44
dae8bf8

Choose a tag to compare

What's Changed

New Features 🎉

  • feat(browser): add providerOptions for browser mode config by @fi3ework in #1041
  • feat: support table syntax for test.each by @9aoy in #1049
  • feat: support merging reports and coverage when using test sharding by @9aoy in #1054
  • feat: support coverage.allowExternal option 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-rsbuild types 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-practices skill 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 tsgo in 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

10 Mar 12:38
5d0249e

Choose a tag to compare

What's Changed

Document 📖

  • docs: add esm tip when migrating from jest by @9aoy in #1032

Other Changes

Full Changelog: v0.9.1...v0.9.2

v0.9.1

09 Mar 10:05
14ad861

Choose a tag to compare

What's Changed

Performance 🚀

  • perf: fix cssFilterLoader not working with less / sass plugins by @9aoy in #1025

Bug Fixes 🐞

  • fix: bail configuration 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.mockRequire and rs.doMockRequire APIs 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

03 Mar 11:10
873f92d

Choose a tag to compare

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.waitFor and rs.waitUntil utilities by @9aoy in #982
  • feat(adapter-rsbuild): export toRstestConfig method by @9aoy in #978
  • feat(reporter): add testLists option 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 jiti to auto by @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-rstest skill 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

14 Feb 03:44
31cf0c5

Choose a tag to compare

What's Changed

Bug Fixes 🐞

  • fix: prevent rpc timeout by @9aoy in #961
  • fix(browser): register Rstest API before browser setup files by @fi3ework in #966
  • fix(mockRequire): __webpack_require__.r is not a function by @9aoy in #965

Full Changelog: v0.8.4...v0.8.5

v0.8.4

10 Feb 09:23
d7e23fc

Choose a tag to compare

What's Changed

New Features 🎉

Performance 🚀

  • perf(browser): add lightweight scheduler page for headless mode by @fi3ework in #952

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

05 Feb 08:02
7668e6a

Choose a tag to compare

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 slowTestThreshold configuration by @9aoy in #938
  • fix(browser): avoid log out deleting virtual module by @fi3ework in #939

Other Changes

Full Changelog: v0.8.2...v0.8.3

v0.8.2

03 Feb 08:25
fa64e71

Choose a tag to compare

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 md reporter 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 📖

  • docs: clarify mock behavior in vitest migration guide by @9aoy in #912

Other Changes

New Contributors

Full Changelog: v0.8.1...v0.8.2