Vitest Release Notes
54 release notes curated from 6 sources by the Releasebot Team. Last updated: Sep 30, 2026
- Sep 30, 2026
- Date parsed from source:Sep 30, 2026
- First seen by Releasebot:Sep 30, 2026
v5.0.3
Vitest fixes browser, cache, expect, jsdom, and UI behavior with a broad round of bug fixes, including better retry handling, safer mock boundaries, improved screenshot references, and cleaner environment and pool handling.
π Bug Fixes
Isolate result.status between repeats runs - by @hi-ogawa, Hiroshi Ogawa and Codex (GPT-6) in #11218 (5dbeb)
Don't print an interceptor warning in browser mode - by @sheremet-va in #11377 (15cc0)
Don't retry when test.fails expectedly failed - by @hi-ogawa, Hiroshi Ogawa and Codex (GPT-6) in #11219 (b2458)
Scope cache key generators to projects - by @ecoyoung in #11281 and #11301 (92ba7)
browser:
Delay server listen until tests start running - by @sheremet-va in #11366 (7d8ed)
Check mock path boundaries - by @saryn17, Ryosei Sato and @sheremet-va in #11361 and #11362 (1c388)
Keep config of browser-consumed environments - by @kasperpeulen and Claude in #11378 (aafc0)
Ignore page crash while cancelling - by @sheremet-va in #11386 (7c367)
toMatchScreenshot uses wrong reference on retried tests - by @macarie in #11393 (c22ab)
cache:
Revalidate imports of cached modules - by @sheremet-va in #11381 (38f98)
deps:
Pin why-is-node-running to 3.2.1 to avoid users running into ERR_PNPM_TRUST_DOWNGRADE - by @AriPerkkio in #11403 (f6c9a)
expect:
Pass current equality testers to expect.extend asymmetric matchers - by @hi-ogawa, Hiroshi Ogawa and Claude in #11401 (3e794)
jsdom:
Support Blob on jsdom 30.1 - by @sheremet-va in #11379 (6c49b)
pool:
Preserve unique pool ids when groupOrder is set - by @mtorp in #11392 (50312)
ui:
Split-pane handle overlapping iframe - by @macarie in #11221 (f91db)
vitest:
Remove root temp dir on close - by @abhinav-phi in #11248 (7c711)
vm:
Do not optimize deps from index.html - by @ezefernandezyf, Hiroshi Ogawa and Codex (GPT-6) in #11329 and #11360 (caf28)
Don't reuse scripts across vite environments - by @MO2k4, Martin Oehlert and Claude in #11395 (346d3)
View changes on GitHub
Original source - Sep 25, 2026
- Date parsed from source:Sep 25, 2026
- First seen by Releasebot:Sep 26, 2026
v5.0.2
Vitest fixes several bugs across expect, jsdom, reporters, spies, and process handling, while improving the UI by persisting authentication cookies beyond the current browser session.
π Bug Fixes
Bind process in case global is overwritten - by @AriPerkkio in #11343 (0b792)
detect-async-leaks:
Ignore process.stdio handles - by @AriPerkkio in #11333 (0fd6b)
expect:
Fix toMatchObject with asymmetric matchers - by @ShreeBohara, Claude Opus 5, @hi-ogawa, Hiroshi Ogawa and Codex (GPT-5) in #11100 (42523)
jsdom:
Fix Request with Blob body on jsdom 28+ - by @harshit-d3v in #11295 (d1c3e)
reporter:
agent to respect --silent - by @Raj4478 and @AriPerkkio in #11271 (5b95e)
reporters:
Handle concurrent createReport calls - by @7rulnik in #11278 (e8e55)
hanging-process to use ESM entrypoint - by @AriPerkkio in #11316 (4e91e)
spy:
Fix stack overflow when spying Set.prototype.add - by @fengmk2 in #11299 (a0a93)
ui:
Persist authentication cookie beyond current browser session - by @hi-ogawa, Hiroshi Ogawa and OpenCode (gpt-5.6-sol) in #11066 (f8819)
View changes on GitHub
Original source All of your release notes in one feed
Join Releasebot and get updates from Vitest and hundreds of other software products.
- Sep 15, 2026
- Date parsed from source:Sep 15, 2026
- First seen by Releasebot:Sep 26, 2026
v5.0.1
Vitest improves the UI trace viewer with a new focused layout and better attempt selection, while fixing a wide range of bugs across collection, snapshots, automocking, timers, browser config, and the explorer for a smoother testing experience.
Features
ui
Move trace attempts selector to viewer header - by @hi-ogawa, Hiroshi Ogawa and Codex in #11189 (5dc4b)
Add focused trace view layout mode - by @hi-ogawa, Hiroshi Ogawa, OpenCode (gpt-5.6-sol) and Codex in #11190 (376dc)
Bug Fixes
Exit 1 when vitest list fails collection - by @hamed-bavar in #11145 and #11146 (6108b)
Keep parse error details in static collection - by @hamed-bavar in #11150 and #11151 (7c818)
Avoid recursive prototype in automocking - by @sheremet-va in #11195 (99fc5)
Prevent false Vitest import resolution - by @sheremet-va in #11196 (b426c)
Keep metadata file when clearing the cache - by @sheremet-va in #11199 (73614)
Correct typos in error message and comments - by @shinji00222 and Shinji in #11187 (115c3)
Resolve ResolvedConfig exactOptionalPropertyTypes errors - by @LukeAbby in #11175 (498fb)
Share the server on self-referencing extends - by @sheremet-va in #11034 (23dda)
Warn when deprecated deps.optimizer.web is used - by @im10furry in #11214 (2ce29)
browser
Avoid double quotes in config.define - by @sheremet-va in #11198 (972e2)
doctor
Measure vm pools for custom environments - by @sheremet-va in #11212 (91ab1)
expect
Correct return value in toMatchAriaSnapshot - by @sheremet-va in #11208 (c119b)
fakeTimers
Force queueMicrotask and nextTick in toNotFake - by @kingmakeruix, kingmakeruix, Hiroshi Ogawa, Codex and @hi-ogawa in #11261 (a47d7)
snapshot
Report obsolete keys next to skipped tests - by @hamed-bavar, Hiroshi Ogawa and OpenCode (gpt-5.6-sol) in #11157 and #11158 (17e2b)
types
Make public declarations self-contained - by @ZoeySigel in #11141 (45546)
ui
Fix collapse/expand suite with file name search - by @hi-ogawa, Hiroshi Ogawa and Codex in #11260 (0a712)
Fix explorer file summary count - by @hi-ogawa, Hiroshi Ogawa, OpenCode (gpt-5.6-sol) and Codex in #11125 (05982)
utils
Fix deepMerge to handle prototype - by @hi-ogawa, Hiroshi Ogawa and Codex in #11215 (4944c)
View changes on GitHub
Original source - Sep 3, 2026
- Date parsed from source:Sep 3, 2026
- First seen by Releasebot:Sep 3, 2026
v5.0.0
Vitest ships version 5 with a major performance push, a wide slate of new features, and many bug fixes. The release also tightens defaults, updates browser and UI workflows, and introduces several breaking changes for a cleaner core.
Vitest 5 is officially out!
This release focuses on performance and brings a lot of new features while fixing long-standing bugs. See our blog post for the official announcement.
π¨ Breaking Changes
- Replace loupe.inspect with pretty-format - by @hi-ogawa, Claude Opus 5 (1M context) and OpenAI Codex in #9609 (3f802)
- Remove quotes from string values in test.for/each title $ variable (take 2) - by @hi-ogawa in #10170 (04d37)
- Default attachmentsDir from .vitest-attachements/ to .vitest/attachments/ - by @MdSadiqMd in #10186 (1ba73)
- Remove sequential test/suite options in favor of concurrent - by @hi-ogawa and OpenAI Codex in #10198 (9229f)
- Represent locator as an object instead of a string - by @sheremet-va in #10212 (80f07)
- Inline expect package - by @sheremet-va in #10221 (ad162)
- Remove deprecated entry points - by @sheremet-va in #10222 (994c6)
- Require Node.js 22 and Vite 6.4 - by @sheremet-va in #10178 (38762)
- Fail expect.poll when function didn't resolve in time - by @hi-ogawa and OpenAI Codex in #10233 (4df04)
- Throw an error if hoistable methods are outside the top level scope - by @sheremet-va in #10460 (d0b4f)
- toHaveTextContent is strict, add toMatchTextContent as alternative - by @sheremet-va in #10473 (18f30)
- Don't lookup config file from ancestor directories - by @hi-ogawa, OpenAI Codex and Hiroshi Ogawa in #10428 (945d9)
- Inline @vitest/runner package, do not publish it anymore - by @sheremet-va in #10511 (6d6e4)
- Allow mutating happy-dom/jsdom window object - by @hi-ogawa, Hiroshi Ogawa and OpenAI Codex in #10373 (206e8)
- Expose concurrencyId/workerId on TestModule's diagnostics, make id 1-based - by @sheremet-va in #10516 (bdd98)
- Add screenshotDirectory config to browser.expect.toMatchScreenshot - by @macarie in #10592 (a60de)
- Update @sinonjs/fake-timers and support mocking Temporal - by @hi-ogawa, Hiroshi Ogawa and OpenCode (gpt-5.6-sol) in #10654 (f8b15)
- Remove webdriverio package - by @sheremet-va in #10675 (5fed6)
- Clear mocks by default before each test - by @sheremet-va in #10613 (0f646)
- Don't emit localStorage warnings on Node 26, fail gracefully when worker fails to start - by @sheremet-va in #10293 (334ed)
- Separate config resolution from the server creation - by @sheremet-va in #10554 (1c0ec)
- Inline projects extend the root config by default - by @sheremet-va in #10750 (fec00)
- Enable mocking Temporal without fake timers - by @fabon-f, Hiroshi Ogawa and OpenCode (gpt-5.6-sol) in #10757 (ac2d4)
- Support nested projects - by @sheremet-va in #10846 (ec367)
- Use > as separator in -t, calculate only once - by @sheremet-va in #10686 (a0b20)
- Fail the test when an asynchronous assertion is not awaited - by @sheremet-va in #10868 (86d4a)
- Share the Vite server between inline projects - by @sheremet-va in #10848 (d87c9)
- Parse files statically in vitest list by default - by @sheremet-va in #11088 (51e94)
benchmark:
- Rewrite the public API - by @sheremet-va in #10113 (19f6e)
browser:
- Iframe scale - by @macarie in #9745 (b6398)
- Enable locators.exact by default - by @sheremet-va in #10430 (e2032)
- Require sessionId for orchestrator html request - by @hi-ogawa, Hiroshi Ogawa and OpenAI Codex in #10522 (79b7d)
- Save failure screenshots in attachmentsDir - by @macarie in #10917 (3b5bb)
coverage:
- include/exclude globs too eager - by @AriPerkkio in #9818 (edacb)
- Allow thresholds.perFile to accept an object - by @vladlenskiy and @AriPerkkio in #10190 (13b78)
expect:
- Fix toThrow("") behavior by reverting #6710 - by @hi-ogawa in #9643 and #6710 (6c3e4)
mocker:
- Deserialize automock as automock - by @nami8824 in #10192 (2f892)
reporters:
- blob reporter and --merge-reports default to .vitest/blob/ - by @AriPerkkio in #10232 (d22b0)
- Write json and junit reporter output files to .vitest by default - by @hi-ogawa, Hiroshi Ogawa, OpenCode (gpt-5.6-sol) and @AriPerkkio in #10621 (58577)
spy:
- Preserve class mock prototype methods on instances - by @sheremet-va in #10910 (6093d)
types:
- Add better promise support in expects and matchers - by @samchungy and @sheremet-va in #8266 (41f55)
ui:
- Harden UI API access - by @hi-ogawa, Hiroshi Ogawa and OpenAI Codex in #10583 (4c26d)
- Change html reporter default output to .vitest - by @hi-ogawa and Hiroshi Ogawa in #10620 (29c36)
π Features
- Add createReport and .vitest report directory convention - by @AriPerkkio in #9993 (72a6d)
- Expose default reporters through configDefaults.reporters - by @hi-ogawa and Claude Opus 5 (1M context) in #10219 (083f6)
- Support merge reports for non-sharded multi-environment runs (take 2) - by @hi-ogawa, Claude Opus 5 (1M context), OpenAI Codex and @AriPerkkio in #10031 (e60b2)
- Add logger.formatError - by @hi-ogawa and OpenAI Codex in #10268 (2c5f3)
- Support typescript build mode - by @lishaduck in #9870 (106da)
- Add toggable injectCjsGlobals option - by @sheremet-va in #10709 (82671)
- Promote fsModuleCache to a top-level option - by @sheremet-va in #10734 (78ed7)
- Support non-ascii characters in for/each title placeholders - by @k-yle in #10773 (15e0a)
- Report the duration breakdown as percentages - by @sheremet-va and @AriPerkkio in #10820 (c67d2)
- Promote parseSpecifications out of experimental - by @sheremet-va in #11087 (b628c)
- Promote clearCache out of experimental - by @sheremet-va in #11086 (d4fe1)
api:
- Expose logs recorded during the test - by @sheremet-va in #10277 (cba20)
benchmark:
- Add pluggable benchmark provider API - by @GuillaumeLagrange and @sheremet-va in #10799 (86c70)
browser:
- Export aria tree utils - by @hi-ogawa in #10171 (c3423)
- Support dom snapshot trace view - by @hi-ogawa, Claude Opus 5 (1M context) and OpenAI Codex in #10102 (7eddd)
- Provide project reference in ToMatchScreenshotResolvePath - by @macarie and @sheremet-va in #10138 (16654)
- Show aria tree on locator element error - by @hi-ogawa and OpenAI Codex in #10257 (04f04)
- Support custom kind in page.mark - by @AriPerkkio in #10302 (053e8)
- Live update trace view on watch UI - by @hi-ogawa and OpenAI Codex in #10296 (78c11)
- Add context.mark for custom command tracing - by @AriPerkkio in #10329 (aa514)
- Show trace view steps in editor panel - by @hi-ogawa and OpenAI Codex in #10404 (8c4b6)
- Display nested mark trace in UI - by @hi-ogawa, Hiroshi Ogawa and OpenAI Codex in #10437 (86ffc)
cli:
- Add --repeats CLI option - by @todor-a in #10504 (ee48b)
- Support -p shorthand for --project - by @sheremet-va in #10826 (1addd)
coverage:
- V8 to track node:child_process and node:worker_threads contexts - by @AriPerkkio in #9976 (9baa5)
- thresholds.autoUpdate to receive previous threshold as argument - by @wouterkroes in #10495 (04f81)
- Switch to @vitest/istanbuljs packages - by @AriPerkkio in #11053 (5f6a5)
junit-reporter:
- Add jest-junit-compatible naming options - by @neumaennl, neumaennl, Martin Neumann and Copilot in #10189 (27393)
reporter:
- Support html reporter single file output - by @hi-ogawa, OpenAI Codex and Claude Opus 5 (1M context) in #10235 (f757e)
- Add custom GitHub Actions summary title - by @heyJonBray and @macarie in #10891 (4363c)
ui:
- Highlight editor source locations - by @sheremet-va, Hiroshi Ogawa and OpenCode (gpt-5.6-sol) in #11004 (bce2d)
- Navigate trace steps with keyboard and remove indirect editor focus - by @sheremet-va, Hiroshi Ogawa and OpenCode (gpt-5.6-sol) in #11005 (6816f)
- Persist trace view selection in URL - by @hi-ogawa, Hiroshi Ogawa and OpenCode (gpt-5.6-sol) in #10981 (3069e)
- Toggle trace target highlight - by @hi-ogawa, Hiroshi Ogawa and OpenCode (gpt-5.6-sol) in #11049 (cd63e)
- Add link to open playwright trace - by @hi-ogawa, Hiroshi Ogawa and OpenCode (gpt-5.6-sol) in #11059 (58f02)
vitest:
- Create vi.when() - by @macarie in #10174 (3900e)
vm:
- Support require(esm) in vm pools - by @sheremet-va in #10829 (01298)
π Bug Fixes
- Global sequence.concurrent: true with top-level test(..., { concurrent: false }) + depreacte sequential test API and options - by @hi-ogawa, OpenAI Codex and @sheremet-va in #10194 (9387f)
- Test tags options should overwrite inherited suite options + inherit suite options in task API - by @hi-ogawa and OpenAI Codex in #10216 (457db)
- Udpate optimize deps config - by @sheremet-va in #10223 (95dc6)
- Shell injection safety via github.ref_name in publish workflow - by @lloyd-c137 and lloyd-c137 in #10327 (dd020)
- Make attachmentsDir root only config - by @hi-ogawa and OpenAI Codex in #10334 (fab1b)
- Apply cjs interop for truthy __esModule - by @hi-ogawa in #10363 (2b135)
- Preserve vi.defineHelper callsite for async error stack - by @macayu17 and @hi-ogawa in #10415 (ac697)
- Respect disableConsoleIntercept in browser mode - by @Copilot, Hiroshi Ogawa, @hi-ogawa and OpenAI Codex in #10391 (66110)
- ForceRerunTriggers uses directory globs against files - by @Patrick-Clausen and Patrick Clausen in #10421 and #10420 (4fee2)
- Unify typechecking and ast collection - by @sheremet-va in #10449 (af993)
- Don't print typecheck warning more than once - by @sheremet-va in #10461 (15275)
- Correct collumn when parsing tests - by @sheremet-va in #10467 (7c2fc)
- Fix mixed stdout/stderr log timestamps in onUserConsoleLog - by @Copilot, Hiroshi Ogawa, @hi-ogawa and @sheremet-va in #10308 (62756)
- Fix importOriginal with optimizer and query import - by @davidxharris, David Harris, @hi-ogawa, Hiroshi Ogawa and OpenAI Codex in #10469 (6a3bb)
- Correct transform time calculation in merged report - by @potatomatoooo and @hi-ogawa in #10570 and #10578 (b7897)
- Fix setImmediate await in detect-async-leak - by @hi-ogawa and Hiroshi Ogawa in #10608 (dd62b)
- Fix per-project sequence config - by @hi-ogawa, Hiroshi Ogawa and OpenCode (gpt-5.6-sol) in #10659 (40cdc)
- Add handshake timeout to iframe communication - by @sheremet-va in #10656 (3545f)
- Don't print column in test names when includeTaskLocation is enabled - by @sheremet-va in #10681 (bd9cc)
- Disable server HMR before plugins read it in their config hook - by @sheremet-va in #10731 (e060b)
- Close the pool before the Vite servers - by @sheremet-va in #10725 (96fa6)
- Remove listeners in the typecheck worker's off - by @sheremet-va in #10741 (d758b)
- Keep per-file isolation in vm pools when maxWorkers is 1 - by @sheremet-va in #10743 (83ab9)
- Node.js 20 deprecation warning for ci.yml - by @hirehamir in #10759 (2127f)
- Prevent node builtins double prefix - by @malobre in #10630 and #10767 (22d35)
- Set non-zero exit code when teardown throws during close - by @zakcutner and @AriPerkkio in #10794 (22116)
- Don't race the typechecker spawn grace period on windows - by @xevrion in #10814 (b19e5)
- Coalesce concurrent watch-mode restarts, deflake the pool stderr fixture - by @sheremet-va in #10822 (a31f8)
- Prevent vitest --typecheck from reporting a false success when the tsc process crashes - by @hitenkalda and Hiten Kalda in #10705 (a1b05)
- Collect in-source tests when the module is cached - by @koutaro-masaki in #10577 and #10589 (a7bf2)
- Swap replace() arguments so timeout error stack shows the real message - by @lazerg in #10875 (aba0f)
- Stale mock metadata breaks automocking with isolate:false - by @kade-robertson in #10145 and #10541 (8e210)
- Don't lose worker output on teardown, deflake timing-sensitive tests - by @sheremet-va in #10842 (1216b)
- Revive global concurrency limit for test lifecycle - by @hi-ogawa, Hiroshi Ogawa, OpenCode (gpt-5.6-sol) and @sheremet-va in #10928 (cf917)
- Own the post-restart rerun, keep process.exit disabled in workers - by @sheremet-va in #10963 (5e69a)
- Preserve correct root during resolve config - by @AriPerkkio and @sheremet-va in #10909 (210ba)
- Combine multiple --project filters correctly - by @sheremet-va in #10988 (66c1c)
- Fix recordArtifact location with vi.defineHelper - by @hi-ogawa, Hiroshi Ogawa and OpenCode (gpt-5.6-sol) in #11047 (c2186)
- Invalidate resolved setup files - by @sheremet-va in #11073 and #11081 (488c0)
- Accept awaited value in vi.when thenResolve - by @sheremet-va in #11084 (c10a1)
- Ignore computed member calls in static collection - by @sheremet-va in #11085 (130f7)
- Don't duplicte oxc.target if user provides a custom array - by @sheremet-va in #11095 (848d7)
- Propagate --maxWorkers to projects - by @Gaurav1112 in #11102 (2122f)
- Apply queued mocks from doMock() in queue order - by @juliandescottes and Claude Opus 5 (1M context) in #10706 and #11127 (f08ce)
- Add a warning if inline project has duplicate plugins due to unexpected extends: true - by @sheremet-va in #11120 (584cf)
- Treat test.describe as a suite during static collection - by @sheremet-va in #11128 (d46a7)
browser:
- Fix trace highlight of shadow dom on webdriverio - by @hi-ogawa in #10227 (b01af)
- Simplify orchestrator otel carrier - by @hi-ogawa in #10283 (3514f)
- Remove orphaned Playwright route when same module is mocked via multiple ids - by @Zelys-DFKH in #9957 and #10267 (41db6)
- Skip wrapDynamicImport transform on ssr environment - by @hi-ogawa in #10355 (d3c96)
- Fix stale source map on watch mode - by @hi-ogawa in #10389 (6d772)
- Escape inline orchestrator scripts - by @hi-ogawa and OpenAI Codex in #10412 (c22cf)
- Disable client cdp API when allowWrite/allowExec: false - by @hi-ogawa and OpenAI Codex in #10444 (63e3b)
- Wait for orchestrator readiness before resolving browser sessions - by @soconnor-seeq in #10397 (fe5ed)
- Wait for iframe tester readiness before preparing - by @soconnor-seeq in #10497 (f2655)
- Encode iframeId in tester iframe URL - by @Pduhard, Pduhard and Claude Opus 5 (1M context) in #10520 and #10521 (c8bf1)
- Always derive a positive locator action timeout - by @sheremet-va in #10626 (5b864)
- Resize the browser ui only if it's not headless - by @sheremet-va in #10662 (b5c61)
- Check fs access in builtin commands - by @hi-ogawa, Hiroshi Ogawa and OpenCode (gpt-5.6-sol) in #10674 (33f96)
- Preserve pre-transform request defaults - by @sheremet-va in #10748 (b6060)
- Fix error stacktrace location off-by-one - by @hi-ogawa, Hiroshi Ogawa and OpenCode (gpt-5.6-sol) in #10724 (62b8d)
- Inlined awaited import should not trigger syntax error after transform - by @smeng9, Shaoyu Meng and Claude Opus 5 (1M context) in #10784 (51acd)
- Mock window.print to avoid hanging - by @aaravjaichand in #7375 and #10798 (66d95)
- Ignore channel events in a tester opened as a top-level window - by @simshanith in #9379 and #9381 (46a3c)
- Resolve connectTimeout from the project config - by @lazerg in #10879 and #10880 (62c79)
- Prebundle vite module runner with vitest - by @lebovvskii and @sheremet-va in #10836 and #10856 (37c24)
- Restore dependency reload warning - by @hi-ogawa, Hiroshi Ogawa and OpenCode (gpt-5.6-sol) in #10913 (90d69)
- Configure internal optimizer dependencies - by @hi-ogawa, Hiroshi Ogawa and OpenCode (gpt-5.6-sol) in #10915 (a72f4)
- Trigger playwright/chromium gc on lower disk availability - by @hi-ogawa, Hiroshi Ogawa and OpenCode (gpt-5.6-sol) in #10912 (032d3)
- Disallow filter-only options in getBy* locators - by Arjun in #10295 and #10933 (9b4df)
- Fail instead of hanging when the browser stops responding - by @sheremet-va in #10956 (c496c)
- Exit gracefully when the browser disconnects during cancellation - by @sheremet-va in #10962 (67e84)
- Don't redirect vitest in client environment - by @sheremet-va in #10975 (aeb67)
- Don't hang when ui: true in projects - by @AriPerkkio in #10994 (9f710)
- Preserve trace popover state - by @liuluochen6-af, Hiroshi Ogawa, OpenCode (gpt-5.6-sol) and @hi-ogawa in #10906 and #11021 (1bbc2)
- Report the action error when a task times out - by @sheremet-va in #11101 (dc10f)
cache:
- Improve fsModuleCache resiliency during external modifications - by @jszumski in #10869 (5eb35)
cli:
- Respect FORCE_COLOR over agent detection - by @dokson in #10272 (7e66b)
- Exit on CTRL+c even when globalSetup runs blocked code - by @AriPerkkio in #10863 (d568f)
coverage:
- exclude to not inherit negation globs from test.include - by @AriPerkkio in #10299 (28685)
- Avoid matching sibling project roots - by @innoprej, Shin JaeHee and @AriPerkkio in #10311 (e30dd)
- Non-awaited module imports cause wrong offsets - by @AriPerkkio in #10643 (c4090)
- Fail fast when coverage.reportsDirectory conflicts between concurrent runs - by @jgamaraalv and @AriPerkkio in #10466 (833f0)
- V8 to ignore Vite SSR's generated import bindings - by @AriPerkkio in #11023 (c6174)
- Prevent crash on /@fs/ prepended virtual files - by @AriPerkkio in #11119 (c4473)
deps:
- Update ivya to fix empty aria tree snapshot - by @hi-ogawa in #10218 (f7822)
- Update fake-timers to 15.3.2. support toNotFake - by @BPScott, @hi-ogawa and OpenAI Codex in #10043 (bbf2f)
- Update all non-major dependencies - by @sheremet-va in #9958 (7faa7)
- Update all non-major dependencies - by @sheremet-va in #10861 (0188c)
- Update all non-major dependencies - by @sheremet-va in #10898 (61c4b)
- Update all non-major dependencies - in #10966 (65263)
- Update all non-major dependencies - in #11043 (732df)
expect:
- Allow readonly arrays and sets in toBeOneOf - by @YBJ0000 in #10264 and #10374 (fed11)
- Handle nullish toHaveProperty values - by @liyimil in #10735 and #10811 (99e59)
junit:
- Include unhandled errors in JUnit XML report - by @gbleu and Claude Opus 5 (1M context) in #10244 (6f74e)
mocker:
- Skip hoist transform without ast mock calls - by @hi-ogawa and OpenAI Codex in #10410 (0468e)
- Hoist vi.mock() for vite-plus/test imports - by @Brooooooklyn and Claude Opus 5 (1M context) in #10489 (88376)
- Restrict redirect mocks to the fs allowlist - by @sheremet-va in #10972 (8ff9b)
pool:
- Prevent test run hang on worker crash - by @jaxalo and @AriPerkkio in #10543 (40878)
- Improve error message when worker exits unexpectedly - by @filmaj and @AriPerkkio in #10587 (76139)
- Vm pools to respect cgroupsv2 memory limit - by @milas in #10721 (3923c)
- Worker init to handle queued synchronous messages - by @lazerg and @AriPerkkio in #10932 (76096)
- Report the worker exit instead of a pipe error that raced it - by @sheremet-va in #10964 (59a03)
reporter:
- Guard against non-finite slowTestThreshold in summary reporter - by @OfekDanny, Ofek Danny, Claude Opus 5 (1M context) and @AriPerkkio in #10202 (f362f)
- Fix non-existing import subpath module blob serialization - by @hi-ogawa in #10318 (29cb0)
reporters:
- Fix blob file name with label - by @hi-ogawa in #10346 (c5e2e)
- summary to intercept logger's streams even when they are not process.std* streams - by @AriPerkkio in #10340 (f79e7)
- Fix missing testModules in onTestRunEnd when merging blobs from different root directory test runs - by @hi-ogawa and OpenAI Codex in #10348 (745b3)
- Print parent describe suites when the passed-test list is hidden - by @ChihebBENCHEIKH1, Chiheb Bencheikh and @sheremet-va in #10606 and #10768 (658af)
- Display test.name in GitHub Actions reporter summary header - by @macarie in #10887 (49e24)
runner:
- Propagate chainable flags in describe.for - by @DoriAlagem, Dor Alagem and @hi-ogawa in #10187 (db678)
- Limit concurrency per task branch in addition to per leaf callbacks - by @hi-ogawa in #10179 (3112a)
- Remove AbortSignal listener leak in withCancel - by @tomohiro86 and @AriPerkkio in #10265 (ab098)
- Don't fail collection when accessing error.stack throws - by @sheremet-va in #10839 (202e2)
snapshot:
- Fail test when snapshot assertion is used with test.fails - by @hi-ogawa in #10090 (e1aa7)
- Treat empty string as valid snapshot - by @mayrang and @hi-ogawa in #10188 (e145d)
- Support no-unsafe-eval CSP by evaluating snapshot files on server - by @hi-ogawa in #10665 (667c1)
- Reject when toMatchFileSnapshot uses same snapshot file as toMatchSnapshot - by @hi-ogawa, Hiroshi Ogawa, OpenCode (gpt-5.6-sol) and @sheremet-va in #10978 (17646)
spy:
- Support private method spy types - by @cyphercodes in #10172 and #10213 (628ab)
- Point ESM namespace spy error to module mocking docs - by @ryandiginomad and Ryan Tang in #10707 (d6cec)
typecheck:
- Report a checker crash on Windows instead of a spawn failure - by @sheremet-va in #10907 (77aac)
types:
- Allow changed in configuration options - by @AriPerkkio in #10651 (0da12)
ui:
- Fix duplicate colored error message - by @hi-ogawa and OpenAI Codex in #10258 (035e3)
- Fix missing source code in html reporter metadata when merging blobs with different root directory test runs - by @hi-ogawa and OpenAI Codex in #10338 (4f7c2)
- Fix module graph in browser mode with --ui - by @hi-ogawa in #10386 (3003c)
- Render ANSI color codes in editor panel inline error widget - by @Copilot, Hiroshi Ogawa and @hi-ogawa in #10418 (766b8)
- Fix code editor error and annotations gadgets layout shifts - by @hi-ogawa, Hiroshi Ogawa and OpenCode (gpt-5.6-sol) in #10969 (438ed)
- Synchronize watch-run UI state on file removal - by @hi-ogawa, Hiroshi Ogawa and OpenCode (gpt-5.6-sol) in #10941 (30c21)
- Require auth for coverage report and all UI subtree requests - by @sheremet-va in #10971 (5622f)
- Improve suite interaction and layout in explorer tree - by @hi-ogawa, Hiroshi Ogawa and OpenCode (gpt-5.6-sol) in #10970 (91231)
- Reveal explorer virtual scroller on resize - by @hi-ogawa, Hiroshi Ogawa and OpenCode (gpt-5.6-sol) in #10998 (1f4fc)
- Persist trace step-iframe split pane sizes - by @hi-ogawa, Hiroshi Ogawa and OpenCode (gpt-5.6-sol) in #11027 (3cd01)
- Add suite level report view - by @dvmhmdsd, Hiroshi Ogawa, OpenCode (gpt-5.6-sol) and @hi-ogawa in #11038 (602d2)
- Hide running count in static reports - by @hi-ogawa, Hiroshi Ogawa and OpenCode (gpt-5.6-sol) in #11123 (73d72)
utils:
- Don't crash on a malformed inline source map - by @lazerg, Hiroshi Ogawa, OpenCode (gpt-5.6-sol) and @hi-ogawa in #10892 and #10893 (fe790)
vitest:
- Strip non-serializable functions from inline diff config - by @DucMinhNe in #10573 (5b81a)
- Remove broken "./src/*" export from package.json - by @sheremet-va in #10918 (2e5df)
- Render non-Error causes from env setup so the actual diagnostic is not dropped - by @spokodev in #10567 (b298d)
vm:
- Fix external module resolve error with deps optimizer query for encoded URI - by @SveLil in #10658 (90c4e)
- Stop retaining every finished test file in vm pool workers - by @sheremet-va in #10854 (38503)
- Fall back to compiling from source when a module's code cache is rejected - by @MarshallOfSound in #11031 (c3ba1)
- Link module graphs one at a time - by @sheremet-va in #11096 (3f2dd)
webdriverio:
- Allow gpu in headless chrome - by @rotempasharel1 in #10376 (f310a)
worker:
- Bind stdio's early in case overriden - by @AriPerkkio in #11020 (67ef7)
π Performance
- Stringify diff objects only once - by @sheremet-va in #10276 (d006a)
- Improve performance in hot paths - by @sheremet-va in #10446 (03faf)
- Serve warm modules to workers in one round-trip, enable the node compile cache - by @sheremet-va in #10708 (b144a)
- Make the Node compile cache opt-in, persist worker caches on teardown - by @sheremet-va in #10742 (941bc)
- Reuse compiled code across vm pool contexts and prewarm the module graph - by @sheremet-va in #10744 (d8b04)
- Bundle vitest's own dependencies - by @sheremet-va in #10685 (c0508)
- Lowers peak memory usage when using --changed on a large graph - by @jszumski in #10866 (9f23f)
- Initialize trace view in the orchestrator once per worker - by @sheremet-va in #10984 (fad26)
browser:
- Reduce matching screenshot overhead - by @kasperpeulen in #10278 (511c0)
- Open browser sessions adaptively instead of maxWorkers upfront - by @sheremet-va in #10726 (6db8d)
- Cut per-file round trips - by @sheremet-va in #10730 (3feef)
- Stop serving framework sourcemaps in headless runs - by @sheremet-va in #10728 (6aefb)
- Prewarm the browser while the Vite server starts - by @sheremet-va in #10727 (c1767)
- Pre-bundle the vitest runtime in optimizeDeps - by @sheremet-va in #10713 (de631)
- Serve framework assets as immutable - by @sheremet-va in #10729 (7af87)
cache:
- Hash the environment-invariant part of the fs module cache key once - by @MarshallOfSound in #11029 (1d365)
coverage:
- Speed up v8 report generation (bounded-memory merge + precompiled globs) - by @toxik, Claude Opus 5 (1M context) and @AriPerkkio in #10506 (b05e5)
- Reduce RPC data and unnecessary serializations - by @AriPerkkio in #10781 (7e7e3)
expect:
- Avoid redefining matcher state - by @scttcper and OpenAI Codex in #11048 (58e71)
- Lazily format spy matcher failures - by @scttcper and OpenAI Codex in #11090 (e08c4)
spy:
- Avoid scanning cleared mocks - by @scttcper and OpenAI Codex in #11092 (2451e)
vm:
- Don't prewarm modules the worker never requests - by @MarshallOfSound and @sheremet-va in #11033 (1e9f8)
- Let environments opt out of the module graph prewarm - by @sheremet-va in #11078 (a6d5e)
View changes on GitHub
Original source - Aug 31, 2026
- Date parsed from source:Aug 31, 2026
- First seen by Releasebot:Aug 31, 2026
v5.0.0-rc.4
Vitest releases a batch of updates with a new static parse default for vitest list, clearCache promoted out of experimental, and UI improvements like Playwright trace links and suite-level reports. It also adds bug fixes, worker propagation, browser error reporting, and performance tuning.
Breaking Changes
Parse files statically in vitest list by default - by @sheremet-va in #11088 (51e94)
Features
Promote clearCache out of experimental - by @sheremet-va in #11086 (d4fe1)
ui: Add link to open playwright trace - by @hi-ogawa, Hiroshi Ogawa and OpenCode (gpt-5.6-sol) in #11059 (58f02)
Bug Fixes
Don't duplicte oxc.target if user provides a custom array - by @sheremet-va in #11095 (848d7)
Propagate --maxWorkers to projects - by @Gaurav1112 in #11102 (2122f)
browser: Report the action error when a task times out - by @sheremet-va in #11101 (dc10f)
ui: Add suite level report view - by @dvmhmdsd, Hiroshi Ogawa, OpenCode (gpt-5.6-sol) and @hi-ogawa in #11038 (602d2)
vm: Link module graphs one at a time - by @sheremet-va in #11096 (3f2dd)
Performance
expect: Lazily format spy matcher failures - by @scttcper and Codex in #11090 (e08c4)
View changes on GitHub
Original source Similar to Vitest with recent updates:
- Cursor release notes138 release notes Β· Latest Oct 6, 2026
- Google release notes2260 release notes Β· Latest Oct 12, 2026
- xAI release notes273 release notes Β· Latest Oct 6, 2026
- Anthropic release notes882 release notes Β· Latest Oct 10, 2026
- OpenAI release notes1114 release notes Β· Latest Oct 10, 2026
- Zed release notes172 release notes Β· Latest Oct 7, 2026
- Aug 28, 2026
- Date parsed from source:Aug 28, 2026
- First seen by Releasebot:Aug 29, 2026
v5.0.0-rc.3
Vitest ships UI, trace, coverage, and performance improvements, including editor source highlighting, keyboard trace navigation, URL-persisted selection, upgraded Istanbul coverage packages, and faster worker and VM handling. It also includes several bug fixes and dependency updates.
Features
Promote parseSpecifications out of experimental - by @sheremet-va in #11087 (b628c)
coverage:
Switch to @vitest/istanbuljs packages - by @AriPerkkio in #11053 (5f6a5)
ui:
Highlight editor source locations - by @sheremet-va, Hiroshi Ogawa and OpenCode in #11004 (bce2d)
Navigate trace steps with keyboard and remove indirect editor focus - by @sheremet-va, Hiroshi Ogawa and OpenCode in #11005 (6816f)
Persist trace view selection in URL - by @hi-ogawa, Hiroshi Ogawa and OpenCode in #10981 (3069e)
Toggle trace target highlight - by @hi-ogawa, Hiroshi Ogawa and OpenCode in #11049 (cd63e)
Bug Fixes
Combine multiple --project filters correctly - by @sheremet-va in #10988 (66c1c)
Fix recordArtifact location with vi.defineHelper - by @hi-ogawa, Hiroshi Ogawa and OpenCode in #11047 (c2186)
Invalidate resolved setup files - by @sheremet-va in #11073 and #11081 (488c0)
Accept awaited value in vi.when thenResolve - by @sheremet-va in #11084 (c10a1)
Ignore computed member calls in static collection - by @sheremet-va in #11085 (130f7)
browser:
Don't hang when ui: true in projects - by @AriPerkkio in #10994 (9f710)
Preserve trace popover state - by @liuluochen6-af, Hiroshi Ogawa, OpenCode and @hi-ogawa in #10906 and #11021 (1bbc2)
coverage:
V8 to ignore Vite SSR's generated import bindings - by @AriPerkkio in #11023 (c6174)
deps:
Update all non-major dependencies - in #11043 (732df)
snapshot:
Reject when toMatchFileSnapshot uses same snapshot file as toMatchSnapshot - by @hi-ogawa, Hiroshi Ogawa, OpenCode and @sheremet-va in #10978 (17646)
ui:
Improve suite interaction and layout in explorer tree - by @hi-ogawa, Hiroshi Ogawa and OpenCode in #10970 (91231)
Reveal explorer virtual scroller on resize - by @hi-ogawa, Hiroshi Ogawa and OpenCode in #10998 (1f4fc)
Persist trace step-iframe split pane sizes - by @hi-ogawa, Hiroshi Ogawa and OpenCode in #11027 (3cd01)
vm:
Fall back to compiling from source when a module's code cache is rejected - by @MarshallOfSound in #11031 (c3ba1)
worker:
Bind stdio's early in case overriden - by @AriPerkkio in #11020 (67ef7)
Performance
Initialize trace view in the orchestrator once per worker - by @sheremet-va in #10984 (fad26)
cache:
Hash the environment-invariant part of the fs module cache key once - by @MarshallOfSound in #11029 (1d365)
expect:
Avoid redefining matcher state - by @scttcper and Codex in #11048 (58e71)
vm:
Don't prewarm modules the worker never requests - by @MarshallOfSound and @sheremet-va in #11033 (1e9f8)
Let environments opt out of the module graph prewarm - by @sheremet-va in #11078 (a6d5e)
View changes on GitHub
Original source - Aug 18, 2026
- Date parsed from source:Aug 18, 2026
- First seen by Releasebot:Aug 18, 2026
v4.1.11
Vitest fixes browser and mocker issues, revives global test concurrency limits, and improves Chromium GC handling.
π Bug Fixes
Revive global concurrency limit for test lifecycle [backport to v4] - by @sheremet-va and @hi-ogawa in #10992 (5146d)
browser:
Encode iframeId in tester iframe URL [backport to v4] - by @sheremet-va, Pduhard and Claude Opus 4.8 in #10955 (10b2c)
Trigger playwright/chromium gc on lower disk availability [backport to v4] - by @hi-ogawa, Hiroshi Ogawa and OpenCode in #10951 (9851d)
mocker:
Restrict redirect mocks to the fs allowlist [backport to v4] - by @sheremet-va in #10974 (fe5a1)
View changes on GitHub
Original source - Aug 17, 2026
- Date parsed from source:Aug 17, 2026
- First seen by Releasebot:Aug 18, 2026
v5.0.0-rc.2
Vitest adds a custom GitHub Actions summary title and improves reporters, snapshots, browser handling, and UI stability. It also tightens security and configuration behavior, fixes worker and concurrency issues, and updates non-major dependencies for a smoother release.
π Features
reporter: Add custom GitHub Actions summary title - by @heyJonBray and @macarie in #10891 (4363c)
π Bug Fixes
Revive global concurrency limit for test lifecycle - by @hi-ogawa, Hiroshi Ogawa, OpenCode (claude-opus-4-8) and @sheremet-va in #10928 (cf917)
Own the post-restart rerun, keep process.exit disabled in workers - by @sheremet-va in #10963 (5e69a)
Preserve correct root during resolve config - by @AriPerkkio and @sheremet-va in #10909 (210ba)
browser:
Trigger playwright/chromium gc on lower disk availability - by @hi-ogawa, Hiroshi Ogawa and OpenCode (claude-opus-4-8) in #10912 (032d3)
Disallow filter-only options in getBy* locators - by @arjun2075 in #10295 and #10933 (9b4df)
Fail instead of hanging when the browser stops responding - by @sheremet-va in #10956 (c496c)
Exit gracefully when the browser disconnects during cancellation - by @sheremet-va in #10962 (67e84)
Don't redirect vitest in client environment - by @sheremet-va in #10975 (aeb67)
deps:
Update all non-major dependencies - in #10966 (65263)
mocker:
Restrict redirect mocks to the fs allowlist - by @sheremet-va in #10972 (8ff9b)
pool:
Worker init to handle queued synchronous messages - by @lazerg and @AriPerkkio in #10932 (76096)
Report the worker exit instead of a pipe error that raced it - by @sheremet-va in #10964 (59a03)
reporters:
Display test.name in GitHub Actions reporter summary header - by @macarie in #10887 (49e24)
snapshot:
Support no-unsafe-eval CSP by evaluating snapshot files on server - by @hi-ogawa in #10665 (667c1)
ui:
Fix code editor error and annotations gadgets layout shifts - by @hi-ogawa, Hiroshi Ogawa and OpenCode (claude-opus-4-8) in #10969 (438ed)
Synchronize watch-run UI state on file removal - by @hi-ogawa, Hiroshi Ogawa and OpenCode (claude-opus-4-8) in #10941 (30c21)
Require auth for coverage report and all UI subtree requests - by @sheremet-va in #10971 (5622f)
utils:
Don't crash on a malformed inline source map - by @lazerg, Hiroshi Ogawa, OpenCode (claude-opus-4-8) and @hi-ogawa in #10892 and #10893 (fe790)
vitest:
Render non-Error causes from env setup so the actual diagnostic is not dropped - by @spokodev in #10567 (b298d)
View changes on GitHub
Original source - Aug 11, 2026
- Date parsed from source:Aug 11, 2026
- First seen by Releasebot:Aug 13, 2026
v5.0.0-rc.1
Vitest releases breaking changes, new features, bug fixes, and performance improvements, including nested project support, better async assertion handling, browser screenshot attachments, duration breakdown percentages, and lower memory use on large --changed runs.
π¨ Breaking Changes
Inline projects extend the root config by default - by @sheremet-va in #10750 (fec00)
Enable mocking Temporal without fake timers - by @fabon-f, Hiroshi Ogawa and OpenCode in #10757 (ac2d4)
Support nested projects - by @sheremet-va in #10846 (ec367)
Use > as separator in -t, calculate only once - by @sheremet-va in #10686 (a0b20)
Fail the test when an asynchronous assertion is not awaited - by @sheremet-va in #10868 (86d4a)
Share the Vite server between inline projects - by @sheremet-va in #10848 (d87c9)
browser: Save failure screenshots in attachmentsDir - by @macarie in #10917 (3b5bb)
spy: Preserve class mock prototype methods on instances - by @sheremet-va in #10910 (6093d)
types: Add better promise support in expects and matchers - by @samchungy and @sheremet-va in #8266 (41f55)
π Features
Report the duration breakdown as percentages - by @sheremet-va and @AriPerkkio in #10820 (c67d2)
cli: Support -p shorthand for --project - by @sheremet-va in #10826 (1addd)
vm: Support require(esm) in vm pools - by @sheremet-va in #10829 (01298)
π Bug Fixes
Coalesce concurrent watch-mode restarts, deflake the pool stderr fixture - by @sheremet-va in #10822 (a31f8)
Prevent vitest --typecheck from reporting a false success when the tsc process crashes - by @hitenkalda and Hiten Kalda in #10705 (a1b05)
Collect in-source tests when the module is cached - by @koutaro-masaki in #10577 and #10589 (a7bf2)
Swap replace() arguments so timeout error stack shows the real message - by @lazerg in #10875 (aba0f)
Stale mock metadata breaks automocking with isolate:false - by @kade-robertson in #10145 and #10541 (8e210)
Don't lose worker output on teardown, deflake timing-sensitive tests - by @sheremet-va in #10842 (1216b)
browser:
Ignore channel events in a tester opened as a top-level window - by @simshanith in #9379 and #9381 (46a3c)
Resolve connectTimeout from the project config - by @lazerg in #10879 and #10880 (62c79)
Prebundle vite module runner with vitest - by @lebovvskii and @sheremet-va in #10836 and #10856 (37c24)
Restore dependency reload warning - by @hi-ogawa, Hiroshi Ogawa and OpenCode in #10913 (90d69)
Configure internal optimizer dependencies - by @hi-ogawa, Hiroshi Ogawa and OpenCode in #10915 (a72f4)
cache:
Improve fsModuleCache resiliency during external modifications - by @jszumski in #10869 (5eb35)
cli:
Exit on CTRL+c even when globalSetup runs blocked code - by @AriPerkkio in #10863 (d568f)
deps:
Update all non-major dependencies - by @sheremet-va in #9958 (7faa7)
Update all non-major dependencies - by @sheremet-va in #10861 (0188c)
Update all non-major dependencies - by @sheremet-va in #10898 (61c4b)
expect:
Handle nullish toHaveProperty values - by @liyimil in #10735 and #10811 (99e59)
reporters:
Print parent describe suites when the passed-test list is hidden - by @ChihebBENCHEIKH1, Chiheb Bencheikh and @sheremet-va in #10606 and #10768 (658af)
runner:
Don't fail collection when accessing error.stack throws - by @sheremet-va in #10839 (202e2)
spy:
Point ESM namespace spy error to module mocking docs - by @ryandiginomad and Ryan Tang in #10707 (d6cec)
typecheck:
Report a checker crash on Windows instead of a spawn failure - by @sheremet-va in #10907 (77aac)
vitest:
Remove broken "./src/*" export from package.json - by @sheremet-va in #10918 (2e5df)
vm:
Stop retaining every finished test file in vm pool workers - by @sheremet-va in #10854 (38503)
π Performance
Lowers peak memory usage when using --changed on a large graph - by @jszumski in #10866 (9f23f)
browser: Serve framework assets as immutable - by @sheremet-va in #10729 (7af87)
View changes on GitHub
Original source - Jul 24, 2026
- Date parsed from source:Jul 24, 2026
- First seen by Releasebot:Jul 25, 2026
v5.0.0-beta.7
Vitest releases a broad update with breaking config changes, new injectCjsGlobals and fsModuleCache options, a pluggable benchmark API, faster browser and worker performance, and a range of bug fixes and stability improvements.
π¨ Breaking Changes
Separate config resolution from the server creation - by @sheremet-va in #10554 (1c0ec)
π Features
Add toggable injectCjsGlobals option - by @sheremet-va in #10709 (82671)
Promote fsModuleCache to a top-level option - by @sheremet-va in #10734 (78ed7)
Support non-ascii characters in for/each title placeholders - by @k-yle in #10773 (15e0a)
benchmark: Add pluggable benchmark provider API - by @GuillaumeLagrange and @sheremet-va in #10799 (86c70)
π Bug Fixes
Disable server HMR before plugins read it in their config hook - by @sheremet-va in #10731 (e060b)
Close the pool before the Vite servers - by @sheremet-va in #10725 (96fa6)
Remove listeners in the typecheck worker's off - by @sheremet-va in #10741 (d758b)
Keep per-file isolation in vm pools when maxWorkers is 1 - by @sheremet-va in #10743 (83ab9)
Node.js 20 deprecation warning for ci.yml - by @hirehamir in #10759 (2127f)
Prevent node builtins double prefix - by @malobre in #10630 and #10767 (22d35)
Set non-zero exit code when teardown throws during close - by @zakcutner and @AriPerkkio in #10794 (22116)
Don't race the typechecker spawn grace period on windows - by @xevrion in #10814 (b19e5)
browser:
Preserve pre-transform request defaults - by @sheremet-va in #10748 (b6060)
Fix error stacktrace location off-by-one - by @hi-ogawa, Hiroshi Ogawa and OpenCode in #10724 (62b8d)
Inlined awaited import should not trigger syntax error after transform - by @smeng9, Shaoyu Meng and Claude Opus 4.8 (1M context) in #10784 (51acd)
Mock window.print to avoid hanging - by @aaravjaichand in #7375 and #10798 (66d95)
pool:
Vm pools to respect cgroupsv2 memory limit - by @milas in #10721 (3923c)
π Performance
Serve warm modules to workers in one round-trip, enable the node compile cache - by @sheremet-va in #10708 (b144a)
Make the Node compile cache opt-in, persist worker caches on teardown - by @sheremet-va in #10742 (941bc)
Reuse compiled code across vm pool contexts and prewarm the module graph - by @sheremet-va in #10744 (d8b04)
Bundle vitest's own dependencies - by @sheremet-va in #10685 (c0508)
browser:
Open browser sessions adaptively instead of maxWorkers upfront - by @sheremet-va in #10726 (6db8d)
Cut per-file round trips - by @sheremet-va in #10730 (3feef)
Stop serving framework sourcemaps in headless runs - by @sheremet-va in #10728 (6aefb)
Prewarm the browser while the Vite server starts - by @sheremet-va in #10727 (c1767)
Pre-bundle the vitest runtime in optimizeDeps - by @sheremet-va in #10713 (de631)
coverage:
Speed up v8 report generation (bounded-memory merge + precompiled globs) - by @toxik, Claude Opus 4.8 (1M context) and @AriPerkkio in #10506 (b05e5)
Reduce RPC data and unnecessary serializations - by @AriPerkkio in #10781 (7e7e3)
View changes on GitHub
Original source - Jul 6, 2026
- Date parsed from source:Jul 6, 2026
- First seen by Releasebot:Jul 6, 2026
v5.0.0-beta.6
Vitest releases a major update with new vi.when(), browser screenshot directory support, and safer defaults for mocks and report output. It also hardens UI and browser handling, improves coverage and worker reliability, and fixes several testing and type issues.
π¨ Breaking Changes
Add screenshotDirectory config to browser.expect.toMatchScreenshot - by @macarie in #10592 (a60de)
Update @sinonjs/fake-timers and support mocking Temporal - by @hi-ogawa, Hiroshi Ogawa and OpenCode (claude-opus-4-8) in #10654 (f8b15)
Remove webdriverio package - by @sheremet-va in #10675 (5fed6)
Clear mocks by default before each test - by @sheremet-va in #10613 (0f646)
Don't emit localStorage warnings on Node 26, fail gracefully when worker fails to start - by @sheremet-va in #10293 (334ed)
reporters:
Write json and junit reporter output files to .vitest by default - by @hi-ogawa, Hiroshi Ogawa, OpenCode (claude-opus-4-8) and @AriPerkkio in #10621 (58577)
ui:
Harden UI API access - by @hi-ogawa, Hiroshi Ogawa and Codex in #10583 (4c26d)
Change html reporter default output to .vitest - by @hi-ogawa and Hiroshi Ogawa in #10620 (29c36)
π Features
vitest: Create vi.when() - by @macarie in #10174 (3900e)
π Bug Fixes
Fix setImmediate await in detect-async-leak - by @hi-ogawa and Hiroshi Ogawa in #10608 (dd62b)
Fix per-project sequence config - by @hi-ogawa, Hiroshi Ogawa and OpenCode (claude-opus-4-8) in #10659 (40cdc)
Add handshake timeout to iframe communication - by @sheremet-va in #10656 (3545f)
Don't print column in test names when includeTaskLocation is enabled - by @sheremet-va in #10681 (bd9cc)
browser:
Always derive a positive locator action timeout - by @sheremet-va in #10626 (5b864)
Resize the browser ui only if it's not headless - by @sheremet-va in #10662 (b5c61)
Check fs access in builtin commands - by @hi-ogawa, Hiroshi Ogawa and OpenCode (claude-opus-4-8) in #10674 (33f96)
coverage:
Non-awaited module imports cause wrong offsets - by @AriPerkkio in #10643 (c4090)
Fail fast when coverage.reportsDirectory conflicts between concurrent runs - by @jgamaraalv and @AriPerkkio in #10466 (833f0)
pool:
Improve error message when worker exits unexpectedly - by @filmaj and @AriPerkkio in #10587 (76139)
types:
Allow changed in configuration options - by @AriPerkkio in #10651 (0da12)
vm:
Fix external module resolve error with deps optimizer query for encoded URI - by @SveLil in #10658 (90c4e)
View changes on GitHub
Original source - Jul 6, 2026
- Date parsed from source:Jul 6, 2026
- First seen by Releasebot:Jul 6, 2026
v4.1.10
Vitest fixes browser fs access checks and vm external module resolution in a backport release.
π Bug Fixes
browser: Check fs access in builtin commands [backport to v4] - by @hi-ogawa, Hiroshi Ogawa and OpenCode (claude-opus-4-8) in #10680 (5c18d)
vm: Fix external module resolve error with deps optimizer query for encoded URI [backport to v4] - by @SveLil and @hi-ogawa in #10661 (bae52)
View changes on GitHub
Original source - Jul 6, 2026
- Date parsed from source:Jul 6, 2026
- First seen by Releasebot:Jul 6, 2026
v3.2.7
Vitest fixes browser fs access checks in builtin commands, backported to v3.
π Bug Fixes
browser: Check fs access in builtin commands [backport to v3] - by @hi-ogawa, Hiroshi Ogawa and OpenCode (claude-opus-4-8) in #10679 (b795e)
View changes on GitHub
Original source - Jun 16, 2026
- Date parsed from source:Jun 16, 2026
- First seen by Releasebot:Jun 16, 2026
v4.1.9
Vitest fixes key bugs in browser sessions, iframe readiness, mocking imports, and worker crashes, improving stability and reliability for v4 users.
π Bug Fixes
Fix importOriginal with optimizer and query import [backport to v4] - by Hiroshi Ogawa, David Harris, Codexand Vladimir in #10546 (a5180)
browser:
Wait for orchestrator readiness before resolving browser sessions [backport to v4] - by Vladimir and SΓ©amus O'Connor in #10555 (7fb29)
Wait for iframe tester readiness before preparing [backport to v4] - by Vladimir and SΓ©amus O'Connor in #10497 and #10556 (fbc62)
mocker:
Hoist vi.mock() for vite-plus/test imports [backport to v4] - by Hiroshi Ogawa, LongYinan, Claude Opus 4.8 and Vladimir in #10548 (2c955)
pool:
Prevent test run hang on worker crash [backport to v4] - by Ari PerkkiΓΆ and Jattioui Ismail in #10543 and #10564 (934b0)
View changes on GitHub
Original source - Jun 15, 2026
- Date parsed from source:Jun 15, 2026
- First seen by Releasebot:Jun 16, 2026
v5.0.0-beta.5
Vitest ships breaking changes, new browser and coverage capabilities, and a set of bug fixes. Highlights include inline runner packaging, nested mark traces in the browser UI, a new --repeats CLI option, and improved stability across sessions, imports, mocks, and worker crashes.
π¨ Breaking Changes
Don't lookup config file from ancestor directories - by @hi-ogawa, Codex and Hiroshi Ogawa in #10428 (945d9)
Inline @vitest/runner package, do not publish it anymore - by @sheremet-va in #10511 (6d6e4)
Allow mutating happy-dom/jsdom window object - by @hi-ogawa, Hiroshi Ogawa and Codex in #10373 (206e8)
Expose concurrencyId/workerId on TestModule's diagnostics, make id 1-based - by @sheremet-va in #10516 (bdd98)
browser: Require sessionId for orchestrator html request - by @hi-ogawa, Hiroshi Ogawa and Codex in #10522 (79b7d)
coverage: Allow thresholds.perFile to accept an object - by @vladlenskiy and @AriPerkkio in #10190 (13b78)
π Features
browser: Display nested mark trace in UI - by @hi-ogawa, Hiroshi Ogawa and Codex in #10437 (86ffc)
cli: Add --repeats CLI option - by @todor-a in #10504 (ee48b)
coverage: thresholds.autoUpdate to receive previous threshold as argument - by @wouterkroes in #10495 (04f81)
π Bug Fixes
Fix mixed stdout/stderr log timestamps in onUserConsoleLog - by @Copilot, Hiroshi Ogawa, @hi-ogawa and @sheremet-va in #10308 (62756)
Fix importOriginal with optimizer and query import - by @davidhwilliams, David Harris, @hi-ogawa, Hiroshi Ogawa and Codex in #10469 (6a3bb)
Correct transform time calculation in merged report - by @potatomatoooo and @hi-ogawa in #10570 and #10578 (b7897)
browser:
Wait for orchestrator readiness before resolving browser sessions - by @soconnor-seeq in #10397 (fe5ed)
Wait for iframe tester readiness before preparing - by @soconnor-seeq in #10497 (f2655)
Encode iframeId in tester iframe URL - by @Pduhard, Pduhard and Claude Opus 4.8 (1M context) in #10520 and #10521 (c8bf1)
coverage:
Avoid matching sibling project roots - by @innoprej, Shin JaeHee and @AriPerkkio in #10311 (e30dd)
mocker:
Hoist vi.mock() for vite-plus/test imports - by @Brooooooklyn and Claude Opus 4.8 (1M context) in #10489 (88376)
pool:
Prevent test run hang on worker crash - by @jaxalo and @AriPerkkio in #10543 (40878)
vitest:
Strip non-serializable functions from inline diff config - by @DucMinhNe in #10573 (5b81a)
View changes on GitHub
Original source
Curated by the Releasebot team
Releasebot is an aggregator of official release notes from hundreds of software vendors and thousands of sources.
Our editorial process involves the manual review and audit of release notes procured with the help of automated systems.