Vitest
🐞 Bug Fixes
- runner: Limit concurrency per task branch in addition to per leaf callbacks (backport) - by @hi-ogawa in https://github.com/vitest-dev/vitest/issues/10384 <samp>(4f0f2)</samp>
View changes on GitHub
🐞 Bug Fixes
- browser: Provide project reference in
ToMatchScreenshotResolvePath- by @macarie and @sheremet-va in https://github.com/vitest-dev/vitest/issues/10138 <samp>(31882)</samp> - Global
sequence.concurrent: truewith top-leveltest(..., { concurrent: false })+ depreactesequentialtest API and options - by @hi-ogawa, Codex and @sheremet-va in https://github.com/vitest-dev/vitest/issues/10196 <samp>(2847d)</samp> - browser: Simplify orchestrator otel carrier - by @hi-ogawa in https://github.com/vitest-dev/vitest/issues/10285 <samp>(18af9)</samp>
🏎 Performance
- Stringify diff objects only once - by @sheremet-va in https://github.com/vitest-dev/vitest/issues/10276 <samp>(9f7b1)</samp>
View changes on GitHub
🐞 Bug Fixes
- Hide logs if silent is configured - by @sheremet-va in https://github.com/vitest-dev/vscode/issues/782 <samp>(01987)</samp>
View changes on GitHub
🐞 Bug Fixes
- Expand VS Code predefined variables in all path-valued settings - by @Copilot and sheremet-va in https://github.com/vitest-dev/vscode/issues/779 <samp>(71cf6)</samp>
View changes on GitHub
🚀 Experimental Features
- coverage: Istanbul to support
instrumenteroption - by @BartWaardenburg and @AriPerkkio in https://github.com/vitest-dev/vitest/issues/10119 <samp>(0e0ff)</samp>
🐞 Bug Fixes
- --project negation excludes browser instances - by @felamaslen in https://github.com/vitest-dev/vitest/issues/10131 <samp>(9423d)</samp>
- Project color label on html reporter - by @hi-ogawa in https://github.com/vitest-dev/vitest/issues/10142 <samp>(596f7)</samp>
- Fix
vi.defineHelpercalled as object method - by @hi-ogawa in https://github.com/vitest-dev/vitest/issues/10163 <samp>(122c2)</samp> - Alias
agentreporter tominimal- by @sheremet-va in https://github.com/vitest-dev/vitest/issues/10157 <samp>(663b9)</samp> - Respect diff config options in soft assertions - by @Copilot, sheremet-va and @sheremet-va in https://github.com/vitest-dev/vitest/issues/8696 <samp>(9787d)</samp>
- Respect diff config options in soft assertions " - by @sheremet-va in https://github.com/vitest-dev/vitest/issues/8696 <samp>(7dc6d)</samp>
- ast-collect: Recognize _vi_import prefix in static test discovery - by @Yejneshwar in https://github.com/vitest-dev/vitest/issues/10129 <samp>(32546)</samp>
- coverage: Descriptive error message when reports directory is removed during test run - by @DaveT1991 and @AriPerkkio in https://github.com/vitest-dev/vitest/issues/10117 <samp>(14133)</samp>
- snapshot: Increase default snapshot max output length - by @hi-ogawa and Codex in https://github.com/vitest-dev/vitest/issues/10150 <samp>(21e66)</samp>
- ui: Fix jsx/tsx syntax highlight - by @hi-ogawa in https://github.com/vitest-dev/vitest/issues/10152 <samp>(f1b1f)</samp>
- web-worker: Support MessagePort objects referenced inside postMessage data - by @whitphx and Claude Opus 4.6 (1M context) in https://github.com/vitest-dev/vitest/issues/9927 and https://github.com/vitest-dev/vitest/issues/10124 <samp>(7ad7d)</samp>
- api: Make test-specification options writable - by @sheremet-va in https://github.com/vitest-dev/vitest/issues/10154 <samp>(6abd5)</samp>
View changes on GitHub
🐞 Bug Fixes
- Only show the copy button if current file is a test - by @sheremet-va <samp>(edd44)</samp>
- Don't filter tests when running in a folder - by @sheremet-va in https://github.com/vitest-dev/vscode/issues/777 <samp>(09647)</samp>
View changes on GitHub
🚀 Experimental Features
- coverage:
- Default to text reporter
skipFullif agent detected - by @hi-ogawa in https://github.com/vitest-dev/vitest/issues/10018 <samp>(53757)</samp>
- Default to text reporter
- experimental:
- Expose
assertionas a public field - by @sheremet-va in https://github.com/vitest-dev/vitest/issues/10095 <samp>(a120e)</samp> - Support aria snapshot - by @hi-ogawa, Claude Opus 4.6 (1M context), @AriPerkkio, Codex and @sheremet-va in https://github.com/vitest-dev/vitest/issues/9668 <samp>(d4fbb)</samp>
- Expose
- reporter:
- Add filterMeta option to json reporter - by @nami8824 and @sheremet-va in https://github.com/vitest-dev/vitest/issues/10078 <samp>(b77de)</samp>
🐞 Bug Fixes
- Use "black" foreground for labeled terminal message to ensure contrast - by @hi-ogawa in https://github.com/vitest-dev/vitest/issues/10076 <samp>(203f0)</samp>
- Make
expect(..., message)consistent as error message prefix - by @hi-ogawa and Codex in https://github.com/vitest-dev/vitest/issues/10068 <samp>(a1b5f)</samp> - Do not hoist imports whose names match class properties . - by @SunsetFi in https://github.com/vitest-dev/vitest/issues/10093 and https://github.com/vitest-dev/vitest/issues/10094 <samp>(0fc4b)</samp>
- browser: Spread user server options into browser Vite server in project - by @GoldStrikeArch in https://github.com/vitest-dev/vitest/issues/10049 <samp>(65c9d)</samp>
View changes on GitHub
🚀 Experimental Features
- Add
experimental.preParseflag - by @sheremet-va in https://github.com/vitest-dev/vitest/issues/10070 <samp>(78273)</samp> - Support
browser.locators.exactoption - by @sheremet-va in https://github.com/vitest-dev/vitest/issues/10013 <samp>(48799)</samp> - Add
TestAttachment.bodyEncoding- by @hi-ogawa in https://github.com/vitest-dev/vitest/issues/9969 <samp>(89ca0)</samp> - Support custom snapshot matcher - by @hi-ogawa, Claude Sonnet 4.6 and Codex in https://github.com/vitest-dev/vitest/issues/9973 <samp>(59b0e)</samp>
🐞 Bug Fixes
- Advance fake timers with
expect.pollinterval - by @hi-ogawa and Claude Sonnet 4.6 in https://github.com/vitest-dev/vitest/issues/10022 <samp>(3f5bf)</samp> - Add
@vitest/coverage-v8and@vitest/coverage-istanbulas optional dependency - by @alan-agius4 in https://github.com/vitest-dev/vitest/issues/10025 <samp>(146d4)</samp> - Fix
defineHelperfor webkit async stack trace + update playwright 1.59.0 - by @hi-ogawa in https://github.com/vitest-dev/vitest/issues/10036 <samp>(5a5fa)</samp> - Fix suite hook throwing errors for unused auto test-scoped fixture - by @hi-ogawa and Claude Sonnet 4.6 in https://github.com/vitest-dev/vitest/issues/10035 <samp>(39865)</samp>
- expect:
- Remove
JestExtendError.contextfrom verbose error reporting - by @hi-ogawa in https://github.com/vitest-dev/vitest/issues/9983 <samp>(66751)</samp> - Don't leak "runner" types - by @sheremet-va in https://github.com/vitest-dev/vitest/issues/10004 <samp>(ec204)</samp>
- Remove
- snapshot:
- Fix flagging obsolete snapshots for snapshot properties mismatch - by @hi-ogawa and Claude Sonnet 4.6 in https://github.com/vitest-dev/vitest/issues/9986 <samp>(6b869)</samp>
- Export custom snapshot matcher helper from
vitest- by @hi-ogawa and Codex in https://github.com/vitest-dev/vitest/issues/10042 <samp>(691d3)</samp>
- ui:
- Don't leak vite types - by @sheremet-va in https://github.com/vitest-dev/vitest/issues/10005 <samp>(fdff1)</samp>
- vm:
- Fix external module resolve error with deps optimizer query - by @hi-ogawa and Claude Sonnet 4.6 in https://github.com/vitest-dev/vitest/issues/10024 <samp>(9dbf4)</samp>
View changes on GitHub
🐞 Bug Fixes
- Support coverage preview in Vitest 3 - by @sheremet-va in https://github.com/vitest-dev/vscode/issues/771 <samp>(a0fe0)</samp>
View changes on GitHub
🚀 Features
- snapshot: Add document symbols and folding support - by @Gehbt in https://github.com/vitest-dev/vscode/issues/764 <samp>(a1aaa)</samp>
🐞 Bug Fixes
- Scope logs to test like before 1.40 - by @sheremet-va in https://github.com/vitest-dev/vscode/issues/768 <samp>(c6ab4)</samp>
- Replace get-port with listen(0) to avoid EADDRINUSE under WSL2 mirrored networking - by @D1g1talEntr0py, Copilot and @sheremet-va in https://github.com/vitest-dev/vscode/issues/767 <samp>(5425e)</samp>
View changes on GitHub
This release bumps Vitest's flatted version and removes version pinning to resolve flatted's CVE related issues (https://github.com/vitest-dev/vitest/issues/9975).
🐞 Bug Fixes
- Don't resolve
setupFilesfrom parent directory - by @hi-ogawa in https://github.com/vitest-dev/vitest/issues/9960 <samp>(7aa93)</samp> - Ensure sequential mock/unmock resolution - by @hi-ogawa and Claude Opus 4.6 in https://github.com/vitest-dev/vitest/issues/9830 <samp>(7c065)</samp>
- browser: Take failure screenshot if
toMatchScreenshotcan't capture a stable screenshot - by @macarie in https://github.com/vitest-dev/vitest/issues/9847 <samp>(faace)</samp> - coverage: Correct
coverageConfigDefaultsvalues and types - by @Arthie in https://github.com/vitest-dev/vitest/issues/9940 <samp>(b3c99)</samp> - pretty-format: Fix output limit over counting - by @hi-ogawa in https://github.com/vitest-dev/vitest/issues/9965 <samp>(d3b7a)</samp>
- Disable colors if agent is detected - by @sheremet-va and @AriPerkkio in https://github.com/vitest-dev/vitest/issues/9851 <samp>(6f97b)</samp>
View changes on GitHub
🚀 Features
- experimental:
- Expose
matchesTagsto test if the current filter matches tags - by @sheremet-va in https://github.com/vitest-dev/vitest/issues/9913 <samp>(eec53)</samp> - Introduce
experimental.vcsProvider- by @sheremet-va in https://github.com/vitest-dev/vitest/issues/9928 <samp>(56115)</samp>
- Expose
🐞 Bug Fixes
- Mark
TestProject.testFilesListinternal properly - by @sapphi-red in https://github.com/vitest-dev/vitest/issues/9867 <samp>(54f26)</samp> - Detect fixture that returns without calling
use- by @oilater in https://github.com/vitest-dev/vitest/issues/9831 and https://github.com/vitest-dev/vitest/issues/9861 <samp>(633ae)</samp> - Drop vite 8.beta support - by @AriPerkkio in https://github.com/vitest-dev/vitest/issues/9862 <samp>(b78f5)</samp>
- Type regression in vi.mocked() static class methods - by @purepear and @hi-ogawa in https://github.com/vitest-dev/vitest/issues/9857 <samp>(90926)</samp>
- Properly re-evaluate actual modules of mocked external - by @hi-ogawa in https://github.com/vitest-dev/vitest/issues/9898 <samp>(ae5ec)</samp>
- Preserve coverage report when html reporter overlaps - by @hi-ogawa in https://github.com/vitest-dev/vitest/issues/9889 <samp>(2d81a)</samp>
- Provide
vi.advanceTimersto the preview provider - by @sheremet-va in https://github.com/vitest-dev/vitest/issues/9891 <samp>(1bc3e)</samp> - Don't leak event listener in playwright provider - by @sheremet-va in https://github.com/vitest-dev/vitest/issues/9910 <samp>(d9355)</samp>
- Open browser in
--standalonemode without running tests - by @sheremet-va in https://github.com/vitest-dev/vitest/issues/9911 <samp>(e78ad)</samp> - Guard disposable and optional
body- by @sheremet-va in https://github.com/vitest-dev/vitest/issues/9912 <samp>(6fdb2)</samp> - Resolve
retry.conditionRegExp serialization issue - by @nstepien and @hi-ogawa in https://github.com/vitest-dev/vitest/issues/9942 <samp>(7b605)</samp> - collect:
- Don't treat extra props on
testreturn as tests - by @sheremet-va in https://github.com/vitest-dev/vitest/issues/9871 <samp>(141e7)</samp>
- Don't treat extra props on
- coverage:
- Simplify provider types - by @AriPerkkio in https://github.com/vitest-dev/vitest/issues/9931 <samp>(aaf9f)</samp>
- Load built-in provider without module runner - by @AriPerkkio in https://github.com/vitest-dev/vitest/issues/9939 <samp>(bf892)</samp>
- expect:
- Soft assertions continue after .resolves/.rejects promise errors - by @mixelburg, Maks Pikov, Claude Opus 4.6 (1M context) and @hi-ogawa in https://github.com/vitest-dev/vitest/issues/9843 <samp>(6d74b)</samp>
- Fix sinon-chai style API - by @hi-ogawa in https://github.com/vitest-dev/vitest/issues/9943 <samp>(0f08d)</samp>
- pretty-format:
- Limit output for large object - by @hi-ogawa and Claude Opus 4.6 (1M context) in https://github.com/vitest-dev/vitest/issues/9949 <samp>(0d5f9)</samp>
View changes on GitHub
🐞 Bug Fixes
- Correctly identify concurrent test during static analysis in older Vitest versions - by @sheremet-va in https://github.com/vitest-dev/vscode/issues/753 <samp>(e8b27)</samp>
- Reduce the padding in inlined console logs - by @sheremet-va <samp>(f329e)</samp>
- Log correct name when running in vite-plus - by @sheremet-va in https://github.com/vitest-dev/vscode/issues/760 <samp>(139dd)</samp>
- collect: Don't treat extra props on test return as tests - by @sheremet-va <samp>(a2801)</samp>
View changes on GitHub
Vitest 4.1 is out!
This release page lists all changes made to the project during the 4.1 beta. To get a review of all the new features, read our blog post.
🚀 Features
- Return a disposable from doMock() - by @kirkwaiblinger in https://github.com/vitest-dev/vitest/issues/9332 <samp>(e3e65)</samp>
- Added chai style assertions - by @ronnakamoto and @sheremet-va in https://github.com/vitest-dev/vitest/issues/8842 <samp>(841df)</samp>
- Update to sinon/fake-timers v15 and add
setTickModeto timer controls - by @atscott and @sheremet-va in https://github.com/vitest-dev/vitest/issues/8726 <samp>(4b480)</samp> - Expose matcher types - by @sheremet-va in https://github.com/vitest-dev/vitest/issues/9448 <samp>(3e4b9)</samp>
- Add
toTestSpecificationto reported tasks - by @sheremet-va in https://github.com/vitest-dev/vitest/issues/9464 <samp>(1a470)</samp> - Show a warning if
vi.mockorvi.hoistedare declared outside of top level of the module - by @sheremet-va in https://github.com/vitest-dev/vitest/issues/9387 <samp>(5db54)</samp> - Track and display expectedly failed tests (.fails) in UI and CLI - by @Copilot, sheremet-va and @sheremet-va in https://github.com/vitest-dev/vitest/issues/9476 <samp>(77d75)</samp>
- Support tags - by @sheremet-va in https://github.com/vitest-dev/vitest/issues/9478 <samp>(de7c8)</samp>
- Implement
aroundEachandaroundAllhooks - by @sheremet-va in https://github.com/vitest-dev/vitest/issues/9450 <samp>(2a8cb)</samp> - Stabilize experimental features - by @sheremet-va in https://github.com/vitest-dev/vitest/issues/9529 <samp>(b5fd2)</samp>
- Accept
neworallin--updateflag - by @sheremet-va in https://github.com/vitest-dev/vitest/issues/9543 <samp>(a5acf)</samp> - Support
metain test options - by @sheremet-va in https://github.com/vitest-dev/vitest/issues/9535 <samp>(7d622)</samp> - Support type inference with a new
test.extendsyntax - by @sheremet-va in https://github.com/vitest-dev/vitest/issues/9550 <samp>(e5385)</samp> - Support vite 8 beta, fix type issues in the config with different vite versions - by @sheremet-va in https://github.com/vitest-dev/vitest/issues/9587 <samp>(99028)</samp>
- Add assertion helper to hide internal stack traces - by @hi-ogawa and Claude Opus 4.6 in https://github.com/vitest-dev/vitest/issues/9594 <samp>(eeb0a)</samp>
- Store failure screenshots using artifacts API - by @macarie in https://github.com/vitest-dev/vitest/issues/9588 <samp>(24603)</samp>
- Allow
vitest listto statically collect tests instead of running files to collect them - by @sheremet-va in https://github.com/vitest-dev/vitest/issues/9630 <samp>(7a8e7)</samp> - Add
--detect-async-leaks- by @AriPerkkio in https://github.com/vitest-dev/vitest/issues/9528 <samp>(c594d)</samp> - Implement
mockThrowandmockThrowOnce- by @thor-juhasz and @sheremet-va in https://github.com/vitest-dev/vitest/issues/9512 <samp>(61917)</samp> - Support
update: "none"and add docs about snapshots behavior on CI - by @hi-ogawa in https://github.com/vitest-dev/vitest/issues/9700 <samp>(05f18)</samp> - Support playwright
launchOptionswithconnectOptions- by @hi-ogawa in https://github.com/vitest-dev/vitest/issues/9702 <samp>(f0ff1)</samp> - Add
page/locator.markAPI to enhance playwright trace - by @hi-ogawa in https://github.com/vitest-dev/vitest/issues/9652 <samp>(d0ee5)</samp> - api:
- Support tests starting or ending with
testinexperimental_parseSpecification- by @jgillick and Jeremy Gillick in https://github.com/vitest-dev/vitest/issues/9235 <samp>(2f367)</samp> - Add filters to
createSpecification- by @sheremet-va in https://github.com/vitest-dev/vitest/issues/9336 <samp>(c8e6c)</samp> - Expose
runTestFilesas alternative torunTestSpecifications- by @sheremet-va in https://github.com/vitest-dev/vitest/issues/9443 <samp>(43d76)</samp> - Add
allowWriteandallowExecoptions toapi- by @sheremet-va in https://github.com/vitest-dev/vitest/issues/9350 <samp>(20e00)</samp> - Allow passing down test cases to
toTestSpecification- by @sheremet-va in https://github.com/vitest-dev/vitest/issues/9627 <samp>(6f17d)</samp>
- Support tests starting or ending with
- browser:
- Add
userEvent.wheelAPI - by @macarie in https://github.com/vitest-dev/vitest/issues/9188 <samp>(66080)</samp> - Add
filterNodeoption to prettyDOM for filtering browser assertion error output - by @Copilot, sheremet-va and @sheremet-va in https://github.com/vitest-dev/vitest/issues/9475 <samp>(d3220)</samp> - Support playwright persistent context - by @hi-ogawa, Claude Opus 4.6 and @sheremet-va in https://github.com/vitest-dev/vitest/issues/9229 <samp>(f865d)</samp>
- Added
detailsPanelPositionoption and button - by @shairez in https://github.com/vitest-dev/vitest/issues/9525 <samp>(c8a31)</samp> - Use BlazeDiff instead of pixelmatch - by @macarie in https://github.com/vitest-dev/vitest/issues/9514 <samp>(30936)</samp>
- Add
findElementand enable strict mode in webdriverio and preview - by @sheremet-va in https://github.com/vitest-dev/vitest/issues/9677 <samp>(c3f37)</samp>
- Add
- cli:
- Add @bomb.sh/tab completions - by @AmirSa12 and @sheremet-va in https://github.com/vitest-dev/vitest/issues/8639 <samp>(200f3)</samp>
- coverage:
- Support
ignore start/stopignore hints - by @AriPerkkio in https://github.com/vitest-dev/vitest/issues/9204 <samp>(e59c9)</samp> - Add
coverage.changedoption to report only changed files - by @kykim00 and @AriPerkkio in https://github.com/vitest-dev/vitest/issues/9521 <samp>(1d939)</samp>
- Support
- experimental:
- Add
onModuleRunnerhook toworker.init- by @sheremet-va in https://github.com/vitest-dev/vitest/issues/9286 <samp>(e977f)</samp> - Option to disable the module runner - by @sheremet-va and @AriPerkkio in https://github.com/vitest-dev/vitest/issues/9210 <samp>(9be61)</samp>
- Add
importDurations: { limit, print }options - by @hi-ogawa, Claude Opus 4.6 and @sheremet-va in https://github.com/vitest-dev/vitest/issues/9401 <samp>(7e10f)</samp> - Add print and fail thresholds for
importDurations- by @hi-ogawa and Claude Opus 4.6 in https://github.com/vitest-dev/vitest/issues/9533 <samp>(3f7a5)</samp>
- Add
- fixtures:
- Pass down file context to
beforeAll/afterAll- by @sheremet-va in https://github.com/vitest-dev/vitest/issues/9572 <samp>(c8339)</samp>
- Pass down file context to
- reporters:
- Add
agentreporter to reduce ai agent token usage - by @cpojer in https://github.com/vitest-dev/vitest/issues/9779 <samp>(3e9e0)</samp>
- Add
- runner:
- Enhance
retryoptions - by @MazenSamehR, Matan Shavit, @AriPerkkio and @sheremet-va in https://github.com/vitest-dev/vitest/issues/9370 <samp>(9e4cf)</samp>
- Enhance
- ui:
- Allow run individual test/suites - by @userquin in https://github.com/vitest-dev/vitest/issues/9465 <samp>(73b10)</samp>
- Add project filter/sort support - by @userquin in https://github.com/vitest-dev/vitest/issues/8689 <samp>(0c7ea)</samp>
- Add duration sorting to explorer - by @julianhahn and @cursoragent in https://github.com/vitest-dev/vitest/issues/9603 <samp>(209b1)</samp>
- Implement filter for slow tests - by @DerYeger and @userquin in https://github.com/vitest-dev/vitest/issues/9705 <samp>(8880c)</samp>
- vitest:
- Add run summary in GitHub Actions Reporter - by @macarie and jhnance in https://github.com/vitest-dev/vitest/issues/9579 <samp>(96bfc)</samp>
🐞 Bug Fixes
- Deprecate several vitest/* entry points - by @sheremet-va in https://github.com/vitest-dev/vitest/issues/9347 <samp>(fd459)</samp>
- Use
meta.urlincreateRequire- by @sheremet-va in https://github.com/vitest-dev/vitest/issues/9441 <samp>(e3422)</samp> - Preact browser mode init example of render function not async - by @WuMingDao in https://github.com/vitest-dev/vitest/issues/9375 <samp>(2bea5)</samp>
- Deprecate unused types in matcher context - by @sheremet-va in https://github.com/vitest-dev/vitest/issues/9449 <samp>(20f87)</samp>
- Handle
external/noExternalduringconfigEnvironmenthook - by @hi-ogawa and Claude Opus 4.6 in https://github.com/vitest-dev/vitest/issues/9508 <samp>(59ea2)</samp> - Replace default ssr environment runner with Vitest server module runner - by @hi-ogawa and Claude Opus 4.6 in https://github.com/vitest-dev/vitest/issues/9506 <samp>(cd5db)</samp>
- Propagate experimental CLI options to child projects - by @hi-ogawa and Claude Opus 4.6 in https://github.com/vitest-dev/vitest/issues/9531 <samp>(b624f)</samp>
- Show a warning when
browser.isolateis used - by @sheremet-va in https://github.com/vitest-dev/vitest/issues/9410 <samp>(3d48e)</samp> - Fix
vi.mock({ spy: true })node v8 coverage - by @hi-ogawa, hi-ogawa and Claude Opus 4.6 in https://github.com/vitest-dev/vitest/issues/9541 <samp>(687b6)</samp> - Don't show internal ssr handler in errors - by @sheremet-va in https://github.com/vitest-dev/vitest/issues/9547 <samp>(76c43)</samp>
- Close vitest if it failed to start - by @sheremet-va in https://github.com/vitest-dev/vitest/issues/9573 <samp>(728ba)</samp>
- Fix ssr environment runner in project - by @hi-ogawa in https://github.com/vitest-dev/vitest/issues/9584 <samp>(09006)</samp>
- Trim trailing white spaces in code block - by @hi-ogawa in https://github.com/vitest-dev/vitest/issues/9591 <samp>(f78be)</samp>
- Support inline snapshot inside test.for/each - by @hi-ogawa in https://github.com/vitest-dev/vitest/issues/9590 <samp>(615fd)</samp>
- Apply source maps for external module stack trace - by @hi-ogawa in https://github.com/vitest-dev/vitest/issues/9152 <samp>(79e20)</samp>
- Remove the
.namefrom statically collected test - by @sheremet-va in https://github.com/vitest-dev/vitest/issues/9596 <samp>(b66ff)</samp> - Don't suppress warnings on pnp - by @sheremet-va in https://github.com/vitest-dev/vitest/issues/9602 <samp>(89cbd)</samp>
- Support snapshot with
expect.soft- by @iumehara, @hi-ogawa and Claude Opus 4.6 in https://github.com/vitest-dev/vitest/issues/9231 <samp>(3eb2c)</samp> - Log seed when only
sequence.shuffle.testsis enabled - by @kaigritun, Kai Gritun and @sheremet-va in https://github.com/vitest-dev/vitest/issues/9576 <samp>(8182b)</samp> - Externalize
expect/src/utilsfromvitest- by @hi-ogawa in https://github.com/vitest-dev/vitest/issues/9616 <samp>(48739)</samp> - Ignore test.override during static collection - by @sheremet-va in https://github.com/vitest-dev/vitest/issues/9620 <samp>(09174)</samp>
- Increase stacktrace limit for
--detect-async-leaks- by @AriPerkkio in https://github.com/vitest-dev/vitest/issues/9638 <samp>(9fd4c)</samp> - Hanging-reporter link in cli - by @flx-sta in https://github.com/vitest-dev/vitest/issues/9649 <samp>(7c103)</samp>
- Fix teardown timeout of
aroundEach/Allwhen inneraroundEach/Allthrows - by @hi-ogawa in https://github.com/vitest-dev/vitest/issues/9657 <samp>(4ec6c)</samp> - Fix ui mode / html reporter and coverage integration - by @hi-ogawa and Claude Opus 4.6 in https://github.com/vitest-dev/vitest/issues/9626 <samp>(86fad)</samp>
- Don't continue when
aroundEach/Allsetup timed out - by @hi-ogawa in https://github.com/vitest-dev/vitest/issues/9670 <samp>(bb013)</samp> - Align
VitestRunnerConfigoptional fields withSerializedConfig- by @hi-ogawa in https://github.com/vitest-dev/vitest/issues/9661 <samp>(79520)</samp> - Handle Symbol values in format utility - by @nami8824 in https://github.com/vitest-dev/vitest/issues/9658 <samp>(0583f)</samp>
- Deprecate
toBe*spy assertions in favor oftoHaveBeen*(andtoThrowError) - by @sheremet-va in https://github.com/vitest-dev/vitest/issues/9665 <samp>(4d390)</samp> - Don't propagate nested
aroundEach/Allerrors but aggregate them on runner - by @hi-ogawa in https://github.com/vitest-dev/vitest/issues/9673 <samp>(b6365)</samp> - Show a better error if there is a pending dynamic import - by @sheremet-va in https://github.com/vitest-dev/vitest/issues/9676 <samp>(7ef5c)</samp>
- Preserve stack trace of
resolves/rejectschained assertion error - by @hi-ogawa in https://github.com/vitest-dev/vitest/issues/9679 <samp>(c6151)</samp> - Handle module-sync condition in vmThreads/vmForks require - by @lesleh in https://github.com/vitest-dev/vitest/issues/9650 and https://github.com/vitest-dev/vitest/issues/9651 <samp>(bb203)</samp>
- Hooks should respect
maxConcurrency- by @hi-ogawa in https://github.com/vitest-dev/vitest/issues/9653 <samp>(16d13)</samp> - Recursively autospy module object - by @hi-ogawa in https://github.com/vitest-dev/vitest/issues/9687 <samp>(695a8)</samp>
- Remove trailing spaces from diff error log - by @hi-ogawa and @sheremet-va in https://github.com/vitest-dev/vitest/issues/9680 <samp>(395d1)</samp>
- Respect project
resolve.conditionsfor externals - by @hi-ogawa in https://github.com/vitest-dev/vitest/issues/9717 <samp>(1d498)</samp> - Use object for WeakMap instead of a symbol to support webcontainers - by @sheremet-va in https://github.com/vitest-dev/vitest/issues/9731 <samp>(c5225)</samp>
- Fix re-mocking virtual module - by @hi-ogawa in https://github.com/vitest-dev/vitest/issues/9748 <samp>(3cbbb)</samp>
- Cancelling should stop current test immediately - by @AriPerkkio in https://github.com/vitest-dev/vitest/issues/9729 <samp>(0cb2f)</samp>
- Make
mockObjectchange backwards compatible - by @sheremet-va in https://github.com/vitest-dev/vitest/issues/9744 <samp>(84c69)</samp> - Fix
URL.nameon jsdom - by @hi-ogawa in https://github.com/vitest-dev/vitest/issues/9767 <samp>(031f3)</samp> - Save and restore module graph in blob reporter - by @hi-ogawa in https://github.com/vitest-dev/vitest/issues/9740 <samp>(84355)</samp>
- Don't silence reporter errors from test runtime events handler in normal run and --merge-reports - by @hi-ogawa in https://github.com/vitest-dev/vitest/issues/9727 <samp>(4072d)</samp>
- Fix
vi.importActual()for virtual modules - by @hi-ogawa and Claude Opus 4.6 in https://github.com/vitest-dev/vitest/issues/9772 <samp>(1e89e)</samp> - Throw
FixtureAccessErrorif suite hook accesses undefined fixture - by @sheremet-va in https://github.com/vitest-dev/vitest/issues/9786 <samp>(fc2ce)</samp> - Allow hyphens in project config file name pattern - by @Koutaro-Hanabusa and @hi-ogawa in https://github.com/vitest-dev/vitest/issues/9760 <samp>(33e96)</samp>
- Manual and redirect mock shouldn't
loadortransformoriginal module - by @hi-ogawa and Claude Opus 4.6 in https://github.com/vitest-dev/vitest/issues/9774 <samp>(a8216)</samp> hideSkippedTestsshould not hidetest.todo- by @oilater in https://github.com/vitest-dev/vitest/issues/9562 and https://github.com/vitest-dev/vitest/issues/9781 <samp>(8181e)</samp>- Allow catch/finally for async assertion - by @hi-ogawa in https://github.com/vitest-dev/vitest/issues/9827 <samp>(031f0)</samp>
- Resolve fixture overrides from test's suite in
beforeEachhooks - by @hi-ogawa and Claude Opus 4.6 in https://github.com/vitest-dev/vitest/issues/9826 <samp>(99e52)</samp> - Use isAgent check, not just TTY, for watch mode - by @sheremet-va in https://github.com/vitest-dev/vitest/issues/9841 <samp>(c3cac)</samp>
- Use
performance.nowto measure test timeout duration - by @hi-ogawa and Claude Opus 4.6 in https://github.com/vitest-dev/vitest/issues/9795 <samp>(f48a6)</samp> - Correctly identify concurrent test during static analysis - by @sheremet-va in https://github.com/vitest-dev/vitest/issues/9846 <samp>(1de0a)</samp>
- browser:
- Avoid updating screenshots when
toMatchScreenshotpasses - by @macarie in https://github.com/vitest-dev/vitest/issues/9289 <samp>(46aab)</samp> - Hide injected data-testid attributes - by @sheremet-va in https://github.com/vitest-dev/vitest/issues/9503 <samp>(c8d2c)</samp>
- Throw an error if iframe was reloaded - by @sheremet-va in https://github.com/vitest-dev/vitest/issues/9516 <samp>(73a81)</samp>
- Encode projectName in browser client URL - by @dkkim0122 in https://github.com/vitest-dev/vitest/issues/9523 <samp>(5b164)</samp>
- Don't take failure screenshot if tests have artifacts created by
toMatchScreenshot- by @macarie in https://github.com/vitest-dev/vitest/issues/9552 <samp>(83ca0)</samp> - Remove
--remote-debugging-addressfrom chrome args - by @hi-ogawa and @AriPerkkio in https://github.com/vitest-dev/vitest/issues/9712 <samp>(f09bb)</samp> - Make sure userEvent actions support
ensureAwaited- by @sheremet-va in https://github.com/vitest-dev/vitest/issues/9732 <samp>(97685)</samp> - Types of
getCDPSessionandcdp()- by @AriPerkkio in https://github.com/vitest-dev/vitest/issues/9716 <samp>(689a2)</samp> - Skip esbuild.legalComments when using rolldown-vite - by @Copilot, hi-ogawa and @hi-ogawa in https://github.com/vitest-dev/vitest/issues/9803 <samp>(3505f)</samp>
- Avoid updating screenshots when
- chai:
- Don't allow
deepEqualin the config because it's not serializable - by @sheremet-va in https://github.com/vitest-dev/vitest/issues/9666 <samp>(9ee99)</samp>
- Don't allow
- coverage:
- Infer transform mode for uncovered files - by @AriPerkkio in https://github.com/vitest-dev/vitest/issues/9435 <samp>(f3967)</samp>
thresholds.autoUpdateto preserve ending whitespace - by @AriPerkkio in https://github.com/vitest-dev/vitest/issues/9436 <samp>(7e534)</samp>
- deps:
- Update all non-major dependencies - by @hi-ogawa in https://github.com/vitest-dev/vitest/issues/9192 <samp>(90c30)</samp>
- Update all non-major dependencies - in https://github.com/vitest-dev/vitest/issues/9485 <samp>(c0118)</samp>
- Update all non-major dependencies - in https://github.com/vitest-dev/vitest/issues/9567 <samp>(13c9e)</samp>
- docs:
- Fix old
/config/#optionhash links causing hydration errors - by @hi-ogawa, Claude Opus 4.6 and @sheremet-va in https://github.com/vitest-dev/vitest/issues/9610 <samp>(a603c)</samp>
- Fix old
- expect:
toMatchObject(Map/Set)should expectMap/Seton left hand side - by @hi-ogawa and Claude Opus 4.6 in https://github.com/vitest-dev/vitest/issues/9532 <samp>(381da)</samp>- Fix objectContaining with proxy - by @hi-ogawa and Claude Opus 4.6 in https://github.com/vitest-dev/vitest/issues/9554 <samp>(7ce34)</samp>
- Support arbitrary value equality for
toThrowand make Error detection robust - by @hi-ogawa and Claude Opus 4.6 in https://github.com/vitest-dev/vitest/issues/9570 <samp>(de215)</samp>
- mock:
- Inject helpers after hashbang if present - by @sheremet-va in https://github.com/vitest-dev/vitest/issues/9545 <samp>(65432)</samp>
- mocker:
- Update vite's peer dependency range - by @sheremet-va in https://github.com/vitest-dev/vitest/issues/9808 <samp>(36f9a)</samp>
- reporter:
dotreporter leaves pending tests - by @AriPerkkio in https://github.com/vitest-dev/vitest/issues/9684 <samp>(4d793)</samp>
- runner:
- Mark repeated tests as finished on last run - by @AriPerkkio in https://github.com/vitest-dev/vitest/issues/9707 <samp>(cc735)</samp>
- spy:
- Support deep partial in vi.mocked - by @j2h30728 in https://github.com/vitest-dev/vitest/issues/8152 and https://github.com/vitest-dev/vitest/issues/9493 <samp>(71cb5)</samp>
- Fallback to object accessor if descriptor's value is
undefined- by @sheremet-va in https://github.com/vitest-dev/vitest/issues/9511 <samp>(6f181)</samp> - Throw correct errors when shorthand methods are used on a class - by @sheremet-va in https://github.com/vitest-dev/vitest/issues/9513 <samp>(5d0fd)</samp>
- types:
bench.reportersno longer gives type errors when passing file name string paths - by @Bertie690 in https://github.com/vitest-dev/vitest/issues/9695 <samp>(093c8)</samp>
- ui:
- Process artifact attachments when generating HTML reporter - by @macarie in https://github.com/vitest-dev/vitest/issues/9472 <samp>(96eb9)</samp>
- Don't fail if --ui and --root are specified together - by @sheremet-va in https://github.com/vitest-dev/vitest/issues/9536 <samp>(d9305)</samp>
🏎 Performance
- pretty-format: Combine DOMElement plugins - by @sheremet-va in https://github.com/vitest-dev/vitest/issues/9581 <samp>(da85a)</samp>