Browser running for Vitest
Last release 9 days ago
18 Aug 2026
Ships on a steady schedule
a new release about every 2 weeks
Nearly every release is documented
notes for 60 of the last 60 stable releases
Nothing withdrawn
no release was ever pulled
4 years old
233 releases ยท first in 2022
Release timeline
233 releases since 20222023202420252026
Releases
- 5.0.0-rc.217 Aug 2026pre-release
Release notes
Open source โ๐ 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.exitdisabled 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:
- 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:
- snapshot:
- 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:
- vitest:
View changes on GitHub
- 5.0.0-rc.111 Aug 2026pre-release
Release notes
Open source โ๐จ 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, calculateonlyonce - 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 --typecheckfrom reporting a false success when thetscprocess 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
connectTimeoutfrom 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:
- cli:
- Exit on
CTRL+ceven whenglobalSetupruns blocked code - by @AriPerkkio in #10863 (d568f)
- Exit on
- 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:
- 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.stackthrows - by @sheremet-va in #10839 (202e2)
- Don't fail collection when accessing
- 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
--changedon a large graph - by @jszumski in #10866 (9f23f) - browser: Serve framework assets as immutable - by @sheremet-va in #10729 (7af87)
View changes on GitHub
- 5.0.0-beta.724 Jul 2026pre-release
Release notes
Open source โ๐จ Breaking Changes
- Separate config resolution from the server creation - by @sheremet-va in #10554 (1c0ec)
๐ Features
- Add toggable
injectCjsGlobalsoption - 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/eachtitle 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:
๐ 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
- 5.0.0-beta.66 Jul 2026pre-release
Release notes
Open source โ๐จ Breaking Changes
- Add
screenshotDirectoryconfig tobrowser.expect.toMatchScreenshot- by @macarie in #10592 (a60de) - Update
@sinonjs/fake-timersand support mockingTemporal- 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
.vitestby default - by @hi-ogawa, Hiroshi Ogawa, OpenCode (claude-opus-4-8) and @AriPerkkio in #10621 (58577)
- Write json and junit reporter output files to
- ui:
๐ Features
๐ Bug Fixes
- Fix
setImmediateawait in detect-async-leak - by @hi-ogawa and Hiroshi Ogawa in #10608 (dd62b) - Fix per-project
sequenceconfig - 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
includeTaskLocationis 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.reportsDirectoryconflicts 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
changedin configuration options - by @AriPerkkio in #10651 (0da12)
- Allow
- vm:
View changes on GitHub
- Add
- 5.0.0-beta.515 Jun 2026pre-release
Release notes
Open source โ๐จ Breaking Changes
- Don't lookup config file from ancestor directories - by @hi-ogawa, Codex and Hiroshi Ogawa in #10428 (945d9)
- Inline
@vitest/runnerpackage, 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/workerIdon TestModule's diagnostics, make id 1-based - by @sheremet-va in #10516 (bdd98) - browser: Require
sessionIdfor orchestrator html request - by @hi-ogawa, Hiroshi Ogawa and Codex in #10522 (79b7d) - coverage: Allow
thresholds.perFileto 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
--repeatsCLI option - by @todor-a in #10504 (ee48b) - coverage:
thresholds.autoUpdateto 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
importOriginalwith 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
- 5.0.0-beta.41 Jun 2026pre-release
Release notes
Open source โ๐จ Breaking Changes
- Throw an error if hoistable methods are outside the top level scope - by @sheremet-va in #10460 (d0b4f)
toHaveTextContentis strict, addtoMatchTextContentas alternative - by @sheremet-va in #10473 (18f30)- benchmark: Rewrite the public API - by @sheremet-va in #10113 (19f6e)
- browser: Enable
locators.exactby default - by @sheremet-va in #10430 (e2032)
๐ Features
- browser: Show trace view steps in editor panel - by @hi-ogawa and Codex in #10404 (8c4b6)
- reporter: Support html reporter single file output - by @hi-ogawa, Codex and Claude Opus 4.7 (1M context) in #10235 (f757e)
๐ Bug Fixes
- Preserve
vi.defineHelpercallsite for async error stack - by @macayu17 and @hi-ogawa in #10415 (ac697) - Respect
disableConsoleInterceptin browser mode - by @Copilot, hi-ogawa, @hi-ogawa and 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)
- browser:
- mocker:
- ui:
- webdriverio:
- Allow gpu in headless chrome - by @rotempasharel1 in #10376 (f310a)
๐ Performance
- Improve performance in hot paths - by @sheremet-va in #10446 (03faf)
View changes on GitHub
- 5.0.0-beta.319 May 2026pre-release
Release notes
Open source โ๐จ Breaking Changes
- Require Node.js 22 and Vite 6.4 - by @sheremet-va in https://github.com/vitest-dev/vitest/issues/10178 <samp>(38762)</samp>
- Fail
expect.pollwhen function didn't resolve in time - by @hi-ogawa and Codex in https://github.com/vitest-dev/vitest/issues/10233 <samp>(4df04)</samp>
๐ Features
- Support typescript build mode - by @lishaduck in https://github.com/vitest-dev/vitest/issues/9870 <samp>(106da)</samp>
- api:
- Expose logs recorded during the test - by @sheremet-va in https://github.com/vitest-dev/vitest/issues/10277 <samp>(cba20)</samp>
- browser:
- Show aria tree on locator element error - by @hi-ogawa and Codex in https://github.com/vitest-dev/vitest/issues/10257 <samp>(04f04)</samp>
- Support custom
kindinpage.mark- by @AriPerkkio in https://github.com/vitest-dev/vitest/issues/10302 <samp>(053e8)</samp> - Live update trace view on watch UI - by @hi-ogawa and Codex in https://github.com/vitest-dev/vitest/issues/10296 <samp>(78c11)</samp>
- Add
context.markfor custom command tracing - by @AriPerkkio in https://github.com/vitest-dev/vitest/issues/10329 <samp>(aa514)</samp>
๐ Bug Fixes
- Shell injection safety via github.ref_name in publish workflow - by @lloyd-c137 and lloyd-c137 in https://github.com/vitest-dev/vitest/issues/10327 <samp>(dd020)</samp>
- Make
attachmentsDirroot only config - by @hi-ogawa and Codex in https://github.com/vitest-dev/vitest/issues/10334 <samp>(fab1b)</samp> - Apply cjs interop for truthy
__esModule- by @hi-ogawa in https://github.com/vitest-dev/vitest/issues/10363 <samp>(2b135)</samp> - browser:
- Simplify orchestrator otel carrier - by @hi-ogawa in https://github.com/vitest-dev/vitest/issues/10283 <samp>(3514f)</samp>
- Remove orphaned Playwright route when same module is mocked via multiple ids - by @Zelys-DFKH in https://github.com/vitest-dev/vitest/issues/9957 and https://github.com/vitest-dev/vitest/issues/10267 <samp>(41db6)</samp>
- Skip
wrapDynamicImporttransform on ssr environment - by @hi-ogawa in https://github.com/vitest-dev/vitest/issues/10355 <samp>(d3c96)</samp>
- cli:
- Respect
FORCE_COLORover agent detection - by @dokson in https://github.com/vitest-dev/vitest/issues/10272 <samp>(7e66b)</samp>
- Respect
- coverage:
excludeto not inherit negation globs fromtest.include- by @AriPerkkio in https://github.com/vitest-dev/vitest/issues/10299 <samp>(28685)</samp>
- deps:
- Update fake-timers to 15.3.2. support
toNotFake- by @BPScott, @hi-ogawa and Codex in https://github.com/vitest-dev/vitest/issues/10043 <samp>(bbf2f)</samp>
- Update fake-timers to 15.3.2. support
- expect:
- Allow readonly arrays and sets in toBeOneOf - by @YBJ0000 in https://github.com/vitest-dev/vitest/issues/10264 and https://github.com/vitest-dev/vitest/issues/10374 <samp>(fed11)</samp>
- junit:
- Include unhandled errors in JUnit XML report - by @gbleu and Claude Sonnet 4.6 in https://github.com/vitest-dev/vitest/issues/10244 <samp>(6f74e)</samp>
- reporter:
- Guard against non-finite slowTestThreshold in summary reporter - by @OfekDanny, Ofek Danny, Claude Sonnet 4.6 and @AriPerkkio in https://github.com/vitest-dev/vitest/issues/10202 <samp>(f362f)</samp>
- Fix non-existing import subpath module blob serialization - by @hi-ogawa in https://github.com/vitest-dev/vitest/issues/10318 <samp>(29cb0)</samp>
- reporters:
- Fix blob file name with label - by @hi-ogawa in https://github.com/vitest-dev/vitest/issues/10346 <samp>(c5e2e)</samp>
summaryto intercept logger's streams even when they are notprocess.std*streams - by @AriPerkkio in https://github.com/vitest-dev/vitest/issues/10340 <samp>(f79e7)</samp>- Fix missing
testModulesinonTestRunEndwhen merging blobs from different root directory test runs - by @hi-ogawa and Codex in https://github.com/vitest-dev/vitest/issues/10348 <samp>(745b3)</samp>
- runner:
- Remove AbortSignal listener leak in withCancel - by @tomohiro86 and @AriPerkkio in https://github.com/vitest-dev/vitest/issues/10265 <samp>(ab098)</samp>
- ui:
- Fix duplicate colored error message - by @hi-ogawa and Codex in https://github.com/vitest-dev/vitest/issues/10258 <samp>(035e3)</samp>
- Fix missing source code in html reporter metadata when merging blobs with different root directory test runs - by @hi-ogawa and Codex in https://github.com/vitest-dev/vitest/issues/10338 <samp>(4f7c2)</samp>
๐ Performance
- Stringify diff objects only once - by @sheremet-va in https://github.com/vitest-dev/vitest/issues/10276 <samp>(d006a)</samp>
- browser: Reduce matching screenshot overhead - by @kasperpeulen in https://github.com/vitest-dev/vitest/issues/10278 <samp>(511c0)</samp>
View changes on GitHub
- 5.0.0-beta.25 May 2026pre-release
Release notes
Open source โ๐จ Breaking Changes
- Default
attachmentsDirfrom.vitest-attachements/to.vitest/attachments/- by @MdSadiqMd in https://github.com/vitest-dev/vitest/issues/10186 <samp>(1ba73)</samp> - Remove
sequentialtest/suite options in favor ofconcurrent- by @hi-ogawa and Codex in https://github.com/vitest-dev/vitest/issues/10198 <samp>(9229f)</samp> - Represent locator as an object instead of a string - by @sheremet-va in https://github.com/vitest-dev/vitest/issues/10212 <samp>(80f07)</samp>
- Inline
expectpackage - by @sheremet-va in https://github.com/vitest-dev/vitest/issues/10221 <samp>(ad162)</samp> - Remove deprecated entry points - by @sheremet-va in https://github.com/vitest-dev/vitest/issues/10222 <samp>(994c6)</samp>
- mocker: Deserialize automock as automock - by @nami8824 in https://github.com/vitest-dev/vitest/issues/10192 <samp>(2f892)</samp>
- reporters:
blobreporter and--merge-reportsdefault to.vitest/blob/- by @AriPerkkio in https://github.com/vitest-dev/vitest/issues/10232 <samp>(d22b0)</samp>
๐ Features
- Expose default reporters through
configDefaults.reporters- by @hi-ogawa and Claude Sonnet 4.6 in https://github.com/vitest-dev/vitest/issues/10219 <samp>(083f6)</samp> - Support merge reports for non-sharded multi-environment runs (take 2) - by @hi-ogawa, Claude Sonnet 4.6, Codex and @AriPerkkio in https://github.com/vitest-dev/vitest/issues/10031 <samp>(e60b2)</samp>
- Add
logger.formatError- by @hi-ogawa and Codex in https://github.com/vitest-dev/vitest/issues/10268 <samp>(2c5f3)</samp> - browser: Provide project reference in
ToMatchScreenshotResolvePath- by @macarie and @sheremet-va in https://github.com/vitest-dev/vitest/issues/10138 <samp>(16654)</samp> - coverage: V8 to track
node:child_processandnode:worker_threadscontexts - by @AriPerkkio in https://github.com/vitest-dev/vitest/issues/9976 <samp>(9baa5)</samp> - junit-reporter: Add jest-junit-compatible naming options - by @neumaennl, neumaennl, @neumann4soft and Copilot in https://github.com/vitest-dev/vitest/issues/10189 <samp>(27393)</samp>
๐ Bug Fixes
- 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/10194 <samp>(9387f)</samp> - Test
tagsoptions should overwrite inherited suite options + inherit suite options intaskAPI - by @hi-ogawa and Codex in https://github.com/vitest-dev/vitest/issues/10216 <samp>(457db)</samp> - Udpate optimize deps config - by @sheremet-va in https://github.com/vitest-dev/vitest/issues/10223 <samp>(95dc6)</samp>
- browser:
- Fix trace highlight of shadow dom on webdriverio - by @hi-ogawa in https://github.com/vitest-dev/vitest/issues/10227 <samp>(b01af)</samp>
- deps:
- Update ivya to fix empty aria tree snapshot - by @hi-ogawa in https://github.com/vitest-dev/vitest/issues/10218 <samp>(f7822)</samp>
- runner:
- Propagate chainable flags in describe.for - by @DORI2001, Dor Alagem and @hi-ogawa in https://github.com/vitest-dev/vitest/issues/10187 <samp>(db678)</samp>
- Limit concurrency per task branch in addition to per leaf callbacks - by @hi-ogawa in https://github.com/vitest-dev/vitest/issues/10179 <samp>(3112a)</samp>
- snapshot:
- Treat empty string as valid snapshot - by @mayrang and @hi-ogawa in https://github.com/vitest-dev/vitest/issues/10188 <samp>(e145d)</samp>
- spy:
- Support private method spy types - by @cyphercodes in https://github.com/vitest-dev/vitest/issues/10172 and https://github.com/vitest-dev/vitest/issues/10213 <samp>(628ab)</samp>
View changes on GitHub
- Default
- 5.0.0-beta.123 Apr 2026pre-release
Release notes
Open source โ๐จ Breaking Changes
- Replace
loupe.inspectwith pretty-format - by @hi-ogawa, Claude Sonnet 4.6 and Codex in https://github.com/vitest-dev/vitest/issues/9609 <samp>(3f802)</samp> - Remove quotes from string values in
test.for/eachtitle$variable (take 2) - by @hi-ogawa in https://github.com/vitest-dev/vitest/issues/10170 <samp>(04d37)</samp> - browser: Iframe scale - by @macarie in https://github.com/vitest-dev/vitest/issues/9745 <samp>(b6398)</samp>
- coverage:
include/excludeglobs too eager - by @AriPerkkio in https://github.com/vitest-dev/vitest/issues/9818 <samp>(edacb)</samp> - expect: Fix
toThrow("")behavior by reverting #6710 - by @hi-ogawa in https://github.com/vitest-dev/vitest/issues/9643 and https://github.com/vitest-dev/vitest/issues/6710 <samp>(6c3e4)</samp>
๐ Features
- Add
createReportand.vitestreport directory convention - by @AriPerkkio in https://github.com/vitest-dev/vitest/issues/9993 <samp>(72a6d)</samp> - browser:
- Export aria tree utils - by @hi-ogawa in https://github.com/vitest-dev/vitest/issues/10171 <samp>(c3423)</samp>
- Support dom snapshot trace view - by @hi-ogawa, Claude Sonnet 4.6 and Codex in https://github.com/vitest-dev/vitest/issues/10102 <samp>(7eddd)</samp>
๐ Bug Fixes
- snapshot: Fail test when snapshot assertion is used with
test.fails- by @hi-ogawa in https://github.com/vitest-dev/vitest/issues/10090 <samp>(e1aa7)</samp>
View changes on GitHub
- Replace
- 4.1.1118 Aug 2026
Release notes
Open source โ๐ Bug Fixes
- Revive global concurrency limit for test lifecycle [backport to v4] - by @sheremet-va and @hi-ogawa in #10992 (5146d)
- browser:
- mocker:
- Restrict redirect mocks to the fs allowlist [backport to v4] - by @sheremet-va in #10974 (fe5a1)
View changes on GitHub
- 4.1.106 Jul 2026
Release notes
Open source โ๐ 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
- 4.1.915 Jun 2026
Release notes
Open source โ๐ Bug Fixes
- Fix
importOriginalwith optimizer and query import [backport to v4] - by Hiroshi Ogawa, David Harris, Codexand Vladimir in #10546 (a5180) - browser:
- mocker:
- pool:
View changes on GitHub
- Fix
- 4.1.81 Jun 2026
Release notes
Open source โ๐ Bug Fixes
- browser:
- Disable client
cdpAPI whenallowWrite/allowExec: false[backport to v4] - by @hi-ogawa and Codex in https://github.com/vitest-dev/vitest/issues/10450 <samp>(e4067)</samp> - Remove orphaned Playwright route when same module is mocked via multiple ids [backport to v4] - by @toxik and @Zelys-DFKH in https://github.com/vitest-dev/vitest/issues/10474 <samp>(675b4)</samp>
- Disable client
View changes on GitHub
- browser:
- 4.1.720 May 2026
Release notes
Open source โ๐ 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
- 4.1.611 May 2026
Release notes
Open source โ๐ 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
- browser: Provide project reference in
- 4.1.521 Apr 2026
Release notes
Open source โ๐ 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
- coverage: Istanbul to support
- 4.1.49 Apr 2026
Release notes
Open source โ๐ 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
- coverage:
- 4.1.37 Apr 2026
Release notes
Open source โ๐ 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
- Add
- 4.1.226 Mar 2026
Release notes
Open source โThis release bumps Vitest's
flattedversion and removes version pinning to resolveflatted'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
- Don't resolve
- 4.1.123 Mar 2026
Release notes
Open source โ๐ 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
- experimental:
- 4.1.012 Mar 2026
Release notes
Open source โ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>
View changes on GitHub
- 4.1.0-beta.65 Mar 2026pre-release
Release notes
Open source โ๐ Features
- Add
page/locator.markAPI to enhance playwright trace - by @hi-ogawa in https://github.com/vitest-dev/vitest/issues/9652 <samp>(d0ee5)</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
- 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>- browser: Types of
getCDPSessionandcdp()- by @AriPerkkio in https://github.com/vitest-dev/vitest/issues/9716 <samp>(689a2)</samp>
View changes on GitHub
- Add
- 4.1.0-beta.526 Feb 2026pre-release
Release notes
Open source โ๐ Features
- 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> - browser:
- 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>
- coverage:
- Add
coverage.changedoption to report only changed files - by @kykim00 and @AriPerkkio in https://github.com/vitest-dev/vitest/issues/9521 <samp>(1d939)</samp>
- Add
- ui:
- Implement filter for slow tests - by @DerYeger and @userquin in https://github.com/vitest-dev/vitest/issues/9705 <samp>(8880c)</samp>
๐ Bug Fixes
- 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> - browser:
- 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>
- Remove
- 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>
- 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>
View changes on GitHub
- Implement
- 4.1.0-beta.416 Feb 2026pre-release
Release notes
Open source โ๐ Features
- 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 Sonnet 4.5 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> - api: Allow passing down test cases to
toTestSpecification- by @sheremet-va in https://github.com/vitest-dev/vitest/issues/9627 <samp>(6f17d)</samp> - fixtures: Pass down file context to
beforeAll/afterAll- by @sheremet-va in https://github.com/vitest-dev/vitest/issues/9572 <samp>(c8339)</samp> - ui: Add duration sorting to explorer - by @julianhahn and @cursoragent in https://github.com/vitest-dev/vitest/issues/9603 <samp>(209b1)</samp>
๐ Bug Fixes
- 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 Sonnet 4.5 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 Sonnet 4.5 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> - 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> - docs: Fix old
/config/#optionhash links causing hydration errors - by @hi-ogawa, Claude Sonnet 4.5 and @sheremet-va in https://github.com/vitest-dev/vitest/issues/9610 <samp>(a603c)</samp> - expect: Support arbitrary value equality for
toThrowand make Error detection robust - by @hi-ogawa and Claude Sonnet 4.5 in https://github.com/vitest-dev/vitest/issues/9570 <samp>(de215)</samp> - ui: 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>
View changes on GitHub
- Support type inference with a new
- 4.1.0-beta.32 Feb 2026pre-release
Release notes
Open source โ๐ Features
- 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> - api:
- Add
allowWriteandallowExecoptions toapi- by @sheremet-va in https://github.com/vitest-dev/vitest/issues/9350 <samp>(20e00)</samp>
- Add
- browser:
- Added
detailsPanelPositionoption and button - by @shairez in https://github.com/vitest-dev/vitest/issues/9525 <samp>(c8a31)</samp>
- Added
- experimental:
- Add
importDurations: { limit, print }options - by @hi-ogawa, Claude Opus 4.5 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.5 in https://github.com/vitest-dev/vitest/issues/9533 <samp>(3f7a5)</samp>
- Add
๐ Bug Fixes
- Handle
external/noExternalduringconfigEnvironmenthook - by @hi-ogawa and Claude Opus 4.5 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.5 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.5 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.5 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>
- browser:
- 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>
- deps:
- 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>
- expect:
toMatchObject(Map/Set)should expectMap/Seton left hand side - by @hi-ogawa and Claude Opus 4.5 in https://github.com/vitest-dev/vitest/issues/9532 <samp>(381da)</samp>- Fix objectContaining with proxy - by @hi-ogawa and Claude Opus 4.5 in https://github.com/vitest-dev/vitest/issues/9554 <samp>(7ce34)</samp>
- mock:
- Inject helpers after hashbang if present - by @sheremet-va in https://github.com/vitest-dev/vitest/issues/9545 <samp>(65432)</samp>
- spy:
- 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>
- Fallback to object accessor if descriptor's value is
View changes on GitHub
- Implement
- 4.1.0-beta.222 Jan 2026pre-release
Release notes
Open source โ๐ Features
- 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>
- browser:
- 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.5 and @sheremet-va in https://github.com/vitest-dev/vitest/issues/9229 <samp>(f865d)</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>
- experimental:
- Option to disable the module runner - by @sheremet-va and @AriPerkkio in https://github.com/vitest-dev/vitest/issues/9210 <samp>(9be61)</samp>
- 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>
๐ Bug Fixes
- Deprecate unused types in matcher context - by @sheremet-va in https://github.com/vitest-dev/vitest/issues/9449 <samp>(20f87)</samp>
- coverage:
thresholds.autoUpdateto preserve ending whitespace - by @AriPerkkio in https://github.com/vitest-dev/vitest/issues/9436 <samp>(7e534)</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>
- ui: Process artifact attachments when generating HTML reporter - by @macarie in https://github.com/vitest-dev/vitest/issues/9472 <samp>(96eb9)</samp>
View changes on GitHub
- 4.1.0-beta.114 Jan 2026pre-release
Release notes
Open source โ๐ Features
- Return a disposable from doMock() - by @kirkwaiblinger in https://github.com/vitest-dev/vitest/issues/9332 <samp>(e3e65)</samp>
- Added chai style assertions for spying - 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> - 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>
- 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
- coverage:
- Support
ignore start/stopignore hints - by @AriPerkkio in https://github.com/vitest-dev/vitest/issues/9204 <samp>(e59c9)</samp>
- Support
- experimental:
- Add
onModuleRunnerhook toworker.init- by @sheremet-va in https://github.com/vitest-dev/vitest/issues/9286 <samp>(e977f)</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
๐ 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>
- browser: Avoid updating screenshots when
toMatchScreenshotpasses - by @macarie in https://github.com/vitest-dev/vitest/issues/9289 <samp>(46aab)</samp> - coverage: Infer transform mode for uncovered files - by @AriPerkkio in https://github.com/vitest-dev/vitest/issues/9435 <samp>(f3967)</samp>
- deps: Update all non-major dependencies - by @hi-ogawa in https://github.com/vitest-dev/vitest/issues/9192 <samp>(90c30)</samp>
View changes on GitHub
- 4.0.1822 Jan 2026
Release notes
Open source โ๐ Experimental Features
- experimental: Add
onModuleRunnerhook toworker.init- by @sheremet-va in https://github.com/vitest-dev/vitest/issues/9286 <samp>(ea837)</samp>
๐ Bug Fixes
- Use
meta.urlincreateRequire- by @sheremet-va in https://github.com/vitest-dev/vitest/issues/9441 <samp>(e0572)</samp> - browser: Hide injected data-testid attributes - by @sheremet-va in https://github.com/vitest-dev/vitest/issues/9503 <samp>(f8989)</samp>
- ui: Process artifact attachments when generating HTML reporter - by @macarie in https://github.com/vitest-dev/vitest/issues/9472 <samp>(22543)</samp>
View changes on GitHub
- experimental: Add
- 4.0.1712 Jan 2026
Release notes
Open source โ๐ Experimental Features
- Support openTelemetry for browser mode - by @hi-ogawa in https://github.com/vitest-dev/vitest/issues/9180 <samp>(1ec3a)</samp>
- Support TRACEPARENT and TRACESTATE environment variables for OpenTelemetry context propagation - by @Copilot, hi-ogawa and @hi-ogawa in https://github.com/vitest-dev/vitest/issues/9295 <samp>(876cb)</samp>
๐ Bug Fixes
- Improve asymmetric matcher diff readability by unwrapping container matchers - by @Copilot, sheremet-va, hi-ogawa and @hi-ogawa in https://github.com/vitest-dev/vitest/issues/9330 <samp>(b2ec7)</samp>
- Improve runner error when importing outside of test context - by @sheremet-va in https://github.com/vitest-dev/vitest/issues/9335 <samp>(2dd3d)</samp>
- Replace crypto.randomUUID to allow insecure environments (fix #9โฆ - by @plusgut in https://github.com/vitest-dev/vitest/issues/9339 and https://github.com/vitest-dev/vitest/issues/9 <samp>(e6a3f)</samp>
- Handle null options in
addEventHandler#9371 - by @ThibautMarechal in https://github.com/vitest-dev/vitest/issues/9372 and https://github.com/vitest-dev/vitest/issues/9371 <samp>(40841)</samp> - Typo in browser.provider error - by @deammer in https://github.com/vitest-dev/vitest/issues/9394 <samp>(4b67f)</samp>
- browser:
- Fix
process.envandimport.meta.envdefines in inline project - by @hi-ogawa in https://github.com/vitest-dev/vitest/issues/9239 <samp>(b70c9)</samp> - Fix upload File instance - by @hi-ogawa in https://github.com/vitest-dev/vitest/issues/9294 <samp>(b6778)</samp>
- Fix invalid project token for artifacts assets - by @hi-ogawa in https://github.com/vitest-dev/vitest/issues/9321 <samp>(caa7d)</samp>
- Log
ErrorEvent.messagewhen unhandledErrorEvent.erroris null - by @hi-ogawa in https://github.com/vitest-dev/vitest/issues/9322 <samp>(5d84e)</samp> - Support
fileParallelismon an instance - by @sheremet-va in https://github.com/vitest-dev/vitest/issues/9328 <samp>(15006)</samp>
- Fix
- coverage:
- Remove unnecessary
istanbul-lib-source-mapsusage - by @AriPerkkio in https://github.com/vitest-dev/vitest/issues/9344 <samp>(b0940)</samp> - Apply patch from istanbuljs/istanbuljs#837 - by @AriPerkkio and sapphi-red in https://github.com/vitest-dev/vitest/issues/9413 and https://github.com/vitest-dev/vitest/issues/837 <samp>(e05ce)</samp>
- Remove unnecessary
- fsModuleCache:
- Don't store importers in cache - by @sheremet-va in https://github.com/vitest-dev/vitest/issues/9422 <samp>(75136)</samp>
- Add importers alongside importedModules - by @sheremet-va in https://github.com/vitest-dev/vitest/issues/9423 <samp>(59f92)</samp>
- mocker:
- Fix mock transform with class - by @hi-ogawa in https://github.com/vitest-dev/vitest/issues/9421 <samp>(d390e)</samp>
- pool:
- Validate environment options when reusing the worker - by @sheremet-va in https://github.com/vitest-dev/vitest/issues/9349 <samp>(a8a88)</samp>
- Handle worker start failures gracefully - by @AriPerkkio in https://github.com/vitest-dev/vitest/issues/9337 <samp>(200da)</samp>
- reporter:
- Report test module if it failed to run - by @sheremet-va in https://github.com/vitest-dev/vitest/issues/9272 <samp>(c7888)</samp>
- runner:
- Respect nested test.only within describe.only - by @Ujjwaljain16 in https://github.com/vitest-dev/vitest/issues/9021 and https://github.com/vitest-dev/vitest/issues/9213 <samp>(55d5d)</samp>
- typecheck:
- Improve error message when tsc outputs help text - by @Ujjwaljain16 in https://github.com/vitest-dev/vitest/issues/9214 <samp>(7b10a)</samp>
- ui:
- Detect gzip by magic numbers instead of Content-Type header in html reporter - by @Copilot, hi-ogawa and @hi-ogawa in https://github.com/vitest-dev/vitest/issues/9278 <samp>(dd033)</samp>
- webdriverio:
- Fall back to WebDriver Classic #9244 - by @JustasMonkev in https://github.com/vitest-dev/vitest/issues/9373 and https://github.com/vitest-dev/vitest/issues/9244 <samp>(c23dd)</samp>
View changes on GitHub
- 4.0.1616 Dec 2025
Release notes
Open source โ๐ Bug Fixes
- Fix browser mode default testTimeout back to 15 seconds - by @hi-ogawa in https://github.com/vitest-dev/vitest/issues/9167 <samp>(da0ad)</samp>
- Avoid crashing on
process.versionsstub - by @AriPerkkio in https://github.com/vitest-dev/vitest/issues/9174 <samp>(78cfb)</samp> - Reject calling suite function inside test - by @hi-ogawa in https://github.com/vitest-dev/vitest/issues/9198 <samp>(1a259)</samp>
- Allow inlining fully dynamic import - by @hi-ogawa in https://github.com/vitest-dev/vitest/issues/9137 <samp>(56851)</samp>
- Fix module graph UI on html reporter with headless browser mode - by @hi-ogawa in https://github.com/vitest-dev/vitest/issues/9219 <samp>(60642)</samp>
- Log deprecated
test.poolOptionsif it's set - by @sheremet-va in https://github.com/vitest-dev/vitest/issues/9226 <samp>(f7f6a)</samp> - browser:
- Import
recordArtifactfrom the vitest package - by @macarie in https://github.com/vitest-dev/vitest/issues/9186 <samp>(01c56)</samp> - Fix
import.meta.envdefine - by @hi-ogawa in https://github.com/vitest-dev/vitest/issues/9205 <samp>(01a9a)</samp> - String formatting bug when including placeholders in console.log - by @michael-debs and @hi-ogawa in https://github.com/vitest-dev/vitest/issues/9030 and https://github.com/vitest-dev/vitest/issues/9131 <samp>(84a30)</samp>
- Import
- coverage:
- Istanbul untested files source maps are off - by @AriPerkkio in https://github.com/vitest-dev/vitest/issues/9208 <samp>(372e8)</samp>
- experimental:
- Export
setupEnvironmentfor custom pools - by @AriPerkkio in https://github.com/vitest-dev/vitest/issues/9187 <samp>(5d26b)</samp>
- Export
View changes on GitHub
- 4.0.152 Dec 2025
Release notes
Open source โ๐ Experimental Features
- cache: Add opt-out on a plugin level, fix internal root cache - by @sheremet-va in https://github.com/vitest-dev/vitest/issues/9154 <samp>(a68f7)</samp>
- reporters: Print import duration breakdown - by @sheremet-va in https://github.com/vitest-dev/vitest/issues/9105 <samp>(122ff)</samp>
๐ Bug Fixes
- Keep built-in id as is in bun and deno - by @sheremet-va in https://github.com/vitest-dev/vitest/issues/9117 <samp>(075ab)</samp>
- Use
optimizeDeps.rolldownOptionsto fix depreated warning + fixssr.external: true- by @hi-ogawa in https://github.com/vitest-dev/vitest/issues/9121 <samp>(fd8bd)</samp> - Fix external behavior with
deps.optimizer- by @hi-ogawa in https://github.com/vitest-dev/vitest/issues/9125 <samp>(4c754)</samp> - Very minor typo in "Chrome DevTools Protocol" - by @HowToTestFrontend in https://github.com/vitest-dev/vitest/issues/9146 <samp>(20997)</samp>
- browser: Run
toMatchScreenshotonly once when used withexpect.element- by @macarie in https://github.com/vitest-dev/vitest/issues/9132 <samp>(0d2e7)</samp> - coverage: Istanbul provider to not break source maps - by @AriPerkkio in https://github.com/vitest-dev/vitest/issues/9040 <samp>(e4ca9)</samp>
- deps: Update dependency tinyexec to v1 - in https://github.com/vitest-dev/vitest/issues/9122 <samp>(fd786)</samp>
- docs: Remove
--browser.providerfrom docs - by @sheremet-va in https://github.com/vitest-dev/vitest/issues/9115 <samp>(120b3)</samp> - expect: Preserve
currentTestNamein extended matchers - by @macarie in https://github.com/vitest-dev/vitest/issues/9106 <samp>(e4345)</samp> - pool: Terminate workers on
CTRL+cforceful exits - by @AriPerkkio in https://github.com/vitest-dev/vitest/issues/9140 <samp>(d57d8)</samp> - reporters: Show project in github reporter - by @sheremet-va in https://github.com/vitest-dev/vitest/issues/9138 <samp>(bb65e)</samp>
- spy: Do not mock overriden method, if parent was automocked - by @sheremet-va in https://github.com/vitest-dev/vitest/issues/9116 <samp>(1a246)</samp>
- web-worker: MessagePort objects passed to Worker.postMessage work when clone === "native" - by @whitphx in https://github.com/vitest-dev/vitest/issues/9118 <samp>(deee8)</samp>
View changes on GitHub
- 4.0.1425 Nov 2025
Release notes
Open source โ๐ Experimental Features
- browser: Expose
utils.configurePrettyDOM- by @sheremet-va in https://github.com/vitest-dev/vitest/issues/9103 <samp>(2cc34)</samp> - runner: Add full names to tasks - by @macarie in https://github.com/vitest-dev/vitest/issues/9087 <samp>(821aa)</samp>
- ui: Add tabbed failure view for
toMatchScreenshotwith comparison slider - by @macarie in https://github.com/vitest-dev/vitest/issues/8813 <samp>(c37c2)</samp>
๐ Bug Fixes
- Externalize before caching - by @sheremet-va in https://github.com/vitest-dev/vitest/issues/9077 <samp>(e1b2e)</samp>
- Collect the duration of external imports - by @sheremet-va in https://github.com/vitest-dev/vitest/issues/9097 <samp>(3326c)</samp>
- Rename
collecttoimport, removeprepare- by @sheremet-va in https://github.com/vitest-dev/vitest/issues/9091 <samp>(1256b)</samp> - browser:
- Unsubscribe
onCancelon rpc destroy - by @AriPerkkio in https://github.com/vitest-dev/vitest/issues/9088 <samp>(f5b72)</samp> - Revert the viewport scaling in non-ui mode #9018 - by @sheremet-va in https://github.com/vitest-dev/vitest/issues/9072 and https://github.com/vitest-dev/vitest/issues/9018 <samp>(64502)</samp>
- Unsubscribe
- coverage:
- Invalidate circular modules correctly on rerun with coverage - by @aicest in https://github.com/vitest-dev/vitest/issues/9096 <samp>(6f22c)</samp>
- expect:
- Allow function as standard schema - by @hi-ogawa in https://github.com/vitest-dev/vitest/issues/9099 <samp>(ed8a2)</samp>
- jsdom:
- Reuse abort signals if possible - by @sheremet-va in https://github.com/vitest-dev/vitest/issues/9090 <samp>(2c468)</samp>
- pool:
- Init
VITEST_POOL_ID+VITEST_WORKER_IDbefore environment setup - by @AriPerkkio in https://github.com/vitest-dev/vitest/issues/9085 <samp>(37918)</samp>
- Init
- web-worker:
postMessageto send ports to workers - by @whitphx and @AriPerkkio in https://github.com/vitest-dev/vitest/issues/9078 <samp>(9d176)</samp>
๐ Performance
- Replace
debugwithobug- by @sxzz and @AriPerkkio in https://github.com/vitest-dev/vitest/issues/9057 <samp>(acc51)</samp>
View changes on GitHub
- browser: Expose
- 4.0.1321 Nov 2025
Release notes
Open source โ๐ Bug Fixes
- types:
- Don't use type from Vite 7.1 - by @sheremet-va in https://github.com/vitest-dev/vitest/issues/9071 <samp>(6356b)</samp>
- Don't import node.js dependent types in vitest/browser - by @sheremet-va in https://github.com/vitest-dev/vitest/issues/9068 <samp>(332af)</samp>
๐ Performance
- Avoid fetchModule roundtrip if the module is cached - by @sheremet-va in https://github.com/vitest-dev/vitest/issues/9075 <samp>(b27e0)</samp>
- experimental: If
fsCacheModuleis enabled, read from the memory when possible - by @sheremet-va in https://github.com/vitest-dev/vitest/issues/9076 <samp>(6b9a1)</samp>
View changes on GitHub
- types:
- 4.0.1220 Nov 2025
Release notes
Open source โ๐ Bug Fixes
- Inherit
fsModuleCachePathby default - by @sheremet-va in https://github.com/vitest-dev/vitest/issues/9063 <samp>(9a8bc)</samp> - Don't import from
@opentelemetry/apiin public types - by @sheremet-va in https://github.com/vitest-dev/vitest/issues/9066 <samp>(e944a)</samp>
View changes on GitHub
- Inherit
- 4.0.1120 Nov 2025
Release notes
Open source โ๐ Experimental Features
- api: Add extensible test artifact API - by @macarie in https://github.com/vitest-dev/vitest/issues/8987 <samp>(77292)</samp>
- See more at https://vitest.dev/api/advanced/artifacts
- expect: Provide
taskinMatchState- by @macarie in https://github.com/vitest-dev/vitest/issues/9022 <samp>(afd1f)</samp> - experimental: Support OpenTelemetry traces - by @sheremet-va in https://github.com/vitest-dev/vitest/issues/8994 <samp>(d6d33)</samp>
- See more at https://vitest.dev/guide/open-telemetry
๐ Performance
- experimental: Add file system cache - by @sheremet-va in https://github.com/vitest-dev/vitest/issues/9026 <samp>(1b147)</samp>
- See more at https://vitest.dev/config/experimental#experimental-fsmodulecache
View changes on GitHub
- api: Add extensible test artifact API - by @macarie in https://github.com/vitest-dev/vitest/issues/8987 <samp>(77292)</samp>
- 4.0.1017 Nov 2025
Release notes
Open source โ๐ Bug Fixes
- Remove
onCancelwhen worker is terminated - by @sheremet-va in https://github.com/vitest-dev/vitest/issues/9033 <samp>(6d7f0)</samp> - browser:
- Don't scale the iframe if UI is disabled - by @sheremet-va in https://github.com/vitest-dev/vitest/issues/9018 <samp>(5406e)</samp>
- Handle dependency stack traces with external source maps. Resolves: #9003 - by @iclectic in https://github.com/vitest-dev/vitest/issues/9016 and https://github.com/vitest-dev/vitest/issues/9003 <samp>(57ae5)</samp>
- bun:
- Parsing of stack trace for bun runtime - by @nazarhussain in https://github.com/vitest-dev/vitest/issues/9032 <samp>(f3ec6)</samp>
- core:
- Prevent starting new run when cancelling - by @AriPerkkio in https://github.com/vitest-dev/vitest/issues/8991 <samp>(eb98d)</samp>
- pool:
- Prevent writing to closed worker - by @AriPerkkio and @sheremet-va in https://github.com/vitest-dev/vitest/issues/9023 <samp>(042c6)</samp>
- reporters:
- Report correct test run duration at the end - by @sheremet-va in https://github.com/vitest-dev/vitest/issues/8969 <samp>(bc3a6)</samp>
- ui:
- Use execution time from ws reporter (
onFinished) - by @userquin in https://github.com/vitest-dev/vitest/issues/8975 <samp>(f56dc)</samp>
- Use execution time from ws reporter (
View changes on GitHub
- Remove
- 4.0.914 Nov 2025
Release notes
Open source โ๐ Experimental Features
- expect: Add Set support to toBeOneOf - by @tim-we and @sheremet-va in https://github.com/vitest-dev/vitest/issues/8906 <samp>(a415d)</samp>
๐ Bug Fixes
- browser: Add favicon icons to the browser mode ui - by @userquin in https://github.com/vitest-dev/vitest/issues/8972 <samp>(353ee)</samp>
- forks: Increase worker start timeout - by @AriPerkkio in https://github.com/vitest-dev/vitest/issues/9027 <samp>(5e750)</samp>
- jsdom: Cloned request is an instance of
Request- by @sheremet-va in https://github.com/vitest-dev/vitest/issues/8985 <samp>(506a9)</samp> - ui: Collect file/suite/test duration correctly - by @userquin in https://github.com/vitest-dev/vitest/issues/8976 <samp>(8016d)</samp>
View changes on GitHub
- 4.0.87 Nov 2025
Release notes
Open source โ๐ Bug Fixes
- Workaround
noExternalmerging bug on Vite 6 - by @hi-ogawa in https://github.com/vitest-dev/vitest/issues/8950 <samp>(bcb13)</samp> - Missed context.d.ts file - by @termorey in https://github.com/vitest-dev/vitest/issues/8965 <samp>(9044d)</samp>
- Incorrect error message for non-awaited
expect.element()- by @StyleShit in https://github.com/vitest-dev/vitest/issues/8954 <samp>(9638d)</samp> - browser: Cleanup frame-ancestors from CSP header at coverage middleware - by @userquin in https://github.com/vitest-dev/vitest/issues/8941 <samp>(1f730)</samp>
- deps: Update all non-major dependencies - by @sheremet-va in https://github.com/vitest-dev/vitest/issues/8636 <samp>(da8b9)</samp>
- forks: Do not fail with Windows Defender enabled - by @sheremet-va in https://github.com/vitest-dev/vitest/issues/8967 <samp>(c79f4)</samp>
- runner: Properly encode Uint8Array body in annotations - by @Livan-pro in https://github.com/vitest-dev/vitest/issues/8951 <samp>(997ca)</samp>
- spy: Copy static properties if spy is initialised with
vi.fn(), fix types forvi.spyOn(obj, class)- by @sheremet-va in https://github.com/vitest-dev/vitest/issues/8956 <samp>(75e7f)</samp> - webdriverio: When no argument is passed to the .click interaction command, the webdriver command should also have no argument - by @julienw in https://github.com/vitest-dev/vitest/issues/8937 <samp>(069e6)</samp>
View changes on GitHub
- Workaround
- 4.0.74 Nov 2025
Release notes
Open source โ๐ Bug Fixes
- Bind
processin case global is overwritten - by @AriPerkkio in https://github.com/vitest-dev/vitest/issues/8916 <samp>(6240d)</samp> - Create environment once per worker with
isolate: false- by @sheremet-va in https://github.com/vitest-dev/vitest/issues/8915 <samp>(c9078)</samp> - Add Locator as a possible element type in
toContainElement()matcher - by @vitalybaev in https://github.com/vitest-dev/vitest/issues/8910 and https://github.com/vitest-dev/vitest/issues/8927 <samp>(35a27)</samp> - browser: Inherit
isolateoption, deprecatebrowser.isolate/browser.fileParallelism- by @sheremet-va in https://github.com/vitest-dev/vitest/issues/8890 <samp>(9d2b4)</samp> - cli: Parse
--execArgvas array - by @AriPerkkio in https://github.com/vitest-dev/vitest/issues/8924 <samp>(751c3)</samp> - jsdom: Support
URL.createObjectURL,FormData.set(prop, blob)- by @sheremet-va in https://github.com/vitest-dev/vitest/issues/8935 <samp>(a1b73)</samp> - pool: Avoid
--requireargument when running in deno - by @pi0 in https://github.com/vitest-dev/vitest/issues/8897 <samp>(d41fa)</samp> - typecheck: Handle re-runs outside
tsc- by @AriPerkkio in https://github.com/vitest-dev/vitest/issues/8920 <samp>(fdb2e)</samp>
๐ Performance
- pool:
- Sort test files by project by default - by @AriPerkkio in https://github.com/vitest-dev/vitest/issues/8914 <samp>(680a6)</samp>
- reporters:
- Optimize getting the tests stats - by @Connormiha in https://github.com/vitest-dev/vitest/issues/8908 <samp>(06d62)</samp>
- Remove unnecessary
Array.fromcall - by @Connormiha in https://github.com/vitest-dev/vitest/issues/8907 <samp>(b6014)</samp>
View changes on GitHub
- Bind
- 4.0.631 Oct 2025
Release notes
Open source โ๐ Bug Fixes
- Don't merge errors with different diffs for reporting - by @hi-ogawa in https://github.com/vitest-dev/vitest/issues/8871 <samp>(3e19f)</samp>
- Do not throw when importing a type from an external package - by @sheremet-va in https://github.com/vitest-dev/vitest/issues/8875 <samp>(7e6c3)</samp>
- Improve spying types - by @sheremet-va in https://github.com/vitest-dev/vitest/issues/8878 <samp>(ca041)</samp>
- Reuse the same environment when
isolateandfileParallelismare false - by @sheremet-va in https://github.com/vitest-dev/vitest/issues/8889 <samp>(31706)</samp> - browser:
- Support module tracking - by @sheremet-va in https://github.com/vitest-dev/vitest/issues/8877 <samp>(9e24a)</samp>
- Ensure setup files are re-evaluated on each test run - by @yjaaidi in https://github.com/vitest-dev/vitest/issues/8883 and https://github.com/vitest-dev/vitest/issues/8884 <samp>(f50ea)</samp>
- coverage:
- Prevent filtering out virtual files before remapping to sources - by @AriPerkkio in https://github.com/vitest-dev/vitest/issues/8860 <samp>(e3b77)</samp>
- happy-dom:
- Properly teardown additional keys - by @sheremet-va in https://github.com/vitest-dev/vitest/issues/8888 <samp>(10a06)</samp>
- jsdom:
- Pass down Node.js
FormDatatoRequest- by @sheremet-va in https://github.com/vitest-dev/vitest/issues/8880 <samp>(197ca)</samp>
- Pass down Node.js
View changes on GitHub
- 4.0.529 Oct 2025
Release notes
Open source โ๐ Bug Fixes
- Respect
ssr.noExternalwhen externalizing dependencies, fix Svelte and Astro - by @sheremet-va in https://github.com/vitest-dev/vitest/issues/8862 <samp>(a4f86)</samp> - Allow module in --config - by @sheremet-va in https://github.com/vitest-dev/vitest/issues/8864 <samp>(b9521)</samp>
- browser: Allow
Locatortype in selectOptions element parameter - by @rzzf and @sheremet-va in https://github.com/vitest-dev/vitest/issues/8848 <samp>(7ee28)</samp> - module-runner: Don't return node builtins for
getBuiltinsunconditionally - by @sapphi-red in https://github.com/vitest-dev/vitest/issues/8863 <samp>(0e858)</samp> - pool: Rename
groupIdtogroupOrderin error message - by @Yohannfra in https://github.com/vitest-dev/vitest/issues/8856 <samp>(b9aab)</samp>
๐ Performance
- Pass testfiles at once when
--no-isolate --maxWorkers=1- by @AriPerkkio in https://github.com/vitest-dev/vitest/issues/8835 <samp>(584aa)</samp> - expect: Optimize checking the input type - by @Connormiha in https://github.com/vitest-dev/vitest/issues/8840 <samp>(06968)</samp>
View changes on GitHub
- Respect
- 4.0.427 Oct 2025
Release notes
Open source โ๐ Bug Fixes
- browser:
- Correct typo - by @benmccann in https://github.com/vitest-dev/vitest/issues/8796 <samp>(ede1f)</samp>
- Publish a missing context file for webdriverio - by @sheremet-va in https://github.com/vitest-dev/vitest/issues/8824 <samp>(7c7b6)</samp>
- mocker:
- Support mocking builtins without
node:prefix - by @sheremet-va in https://github.com/vitest-dev/vitest/issues/8829 <samp>(06208)</samp>
- Support mocking builtins without
- pool:
- Runner's error listener causing
MaxListenersExceededWarning- by @AriPerkkio in https://github.com/vitest-dev/vitest/issues/8820 <samp>(d1bff)</samp> - Capture workers
stdioto logger - by @AriPerkkio in https://github.com/vitest-dev/vitest/issues/8809 <samp>(fb95f)</samp>
- Runner's error listener causing
- spy:
- Allow classes in
vi.mockedutility - by @sheremet-va in https://github.com/vitest-dev/vitest/issues/8839 <samp>(f8756)</samp>
- Allow classes in
- worker:
- Rpc listener leak when
isolate: false- by @AriPerkkio in https://github.com/vitest-dev/vitest/issues/8821 <samp>(573dc)</samp>
- Rpc listener leak when
๐ Performance
- utils: Optimized reducer to avoid creating new objects - by @Connormiha in https://github.com/vitest-dev/vitest/issues/8818 <samp>(d19ce)</samp>
View changes on GitHub
- browser:
- 4.0.324 Oct 2025
Release notes
Open source โ๐ Bug Fixes
- Preserve reporter options from config when CLI reporters override them - by @Copilot and sheremet-va in https://github.com/vitest-dev/vitest/issues/8794 <samp>(15552)</samp>
- browser: More stable in-source testing validation - by @sheremet-va in https://github.com/vitest-dev/vitest/issues/8793 <samp>(62297)</samp>
- happy-dom: Support fetch globals - by @sheremet-va in https://github.com/vitest-dev/vitest/issues/8791 <samp>(0fb74)</samp>
- init: Use correct jsx/tsx extension - by @sheremet-va in https://github.com/vitest-dev/vitest/issues/8792 <samp>(abc04)</samp>
View changes on GitHub
- 4.0.223 Oct 2025
Release notes
Open source โ๐ Bug Fixes
- browser:
- Don't print the deprecation notice in node_modules - by @sheremet-va in https://github.com/vitest-dev/vitest/issues/8779 <samp>(588f7)</samp>
- pool:
- Assign envs before running tests to keep in sync with process.env - by @sheremet-va in https://github.com/vitest-dev/vitest/issues/8769 <samp>(26ce8)</samp>
- spy:
- Properly inherit implementation's
length- by @sheremet-va in https://github.com/vitest-dev/vitest/issues/8778 <samp>(d4c2b)</samp> - Reset spies if both
restoreMocksandmockResetare set in the config - by @sheremet-va in https://github.com/vitest-dev/vitest/issues/8781 <samp>(2eedb)</samp>
- Properly inherit implementation's
View changes on GitHub
- browser:
- 4.0.122 Oct 2025
Release notes
Open source โ๐ Bug Fixes
- Move the
getBuiltinscheck - by @sheremet-va in https://github.com/vitest-dev/vitest/issues/8765 <samp>(81000)</samp> - pool: Don't teardown the communication channel too soon if something is running after the test - by @sheremet-va in https://github.com/vitest-dev/vitest/issues/8767 <samp>(3fae7)</samp>
View changes on GitHub
- Move the
- 4.0.022 Oct 2025
Release notes
Open source โVitest 4.0 is out!
To stay updated, read our blog post and check the migration guide.
๐จ Breaking Changes
- Remove
'basic'reporter - by @AriPerkkio in https://github.com/vitest-dev/vitest/issues/7884 <samp>(82fcf)</samp> - Simplify default exclude pattern - by @sheremet-va in https://github.com/vitest-dev/vitest/issues/6287 <samp>(14c50)</samp>
- Remove deprecated getSourceMap - by @sheremet-va in https://github.com/vitest-dev/vitest/issues/8194 <samp>(ff934)</samp>
- Replace deprecated ErrorWithDiff with TestError - by @sheremet-va in https://github.com/vitest-dev/vitest/issues/8195 <samp>(da59e)</samp>
- Remove UserConfig type in favor of ViteUserConfig - by @sheremet-va in https://github.com/vitest-dev/vitest/issues/8196 <samp>(22f7f)</samp>
- Remove deprecated coverage options in favor of
vitest/nodeexports - by @sheremet-va in https://github.com/vitest-dev/vitest/issues/8197 <samp>(dc848)</samp> - Remove deprecated internal helpers and environment exports - by @sheremet-va in https://github.com/vitest-dev/vitest/issues/8198 <samp>(4703c)</samp>
- Remove deprecated typecheck and runner types - by @sheremet-va in https://github.com/vitest-dev/vitest/issues/8199 <samp>(89a1c)</samp>
- Remove Node types from the main entry point, use
vitest/nodeinstead - by @sheremet-va in https://github.com/vitest-dev/vitest/issues/8200 <samp>(1e60c)</samp> - Remove support for Vite 5 - by @sheremet-va in https://github.com/vitest-dev/vitest/issues/8202 <samp>(cb8b0)</samp>
- Remove deprecated types - by @sheremet-va in https://github.com/vitest-dev/vitest/issues/8203 <samp>(66bee)</samp>
- Remove deprecated environmentMatchGlobs and poolMatchGlobs - by @sheremet-va in https://github.com/vitest-dev/vitest/issues/8205 <samp>(be11d)</samp>
- Remove deprecated
workspaceoption in favor ofprojects- by @sheremet-va in https://github.com/vitest-dev/vitest/issues/8218 <samp>(76fb7)</samp> - Ignore
--standalonewhen CLI filename filter is used - by @AriPerkkio in https://github.com/vitest-dev/vitest/issues/8262 <samp>(013bf)</samp> - Use module-runner instead of vite-node - by @sheremet-va and @AriPerkkio in https://github.com/vitest-dev/vitest/issues/8208 <samp>(9be01)</samp>
- Rewrite spying implementation to make module mocking more intuitive - by @sheremet-va in https://github.com/vitest-dev/vitest/issues/8363 <samp>(9e412)</samp>
- Remove deprecated APIs - by @sheremet-va in https://github.com/vitest-dev/vitest/issues/8428 <samp>(a1cb9)</samp>
- Remove
minWorkersand set it automatically to 0 in non watch mode - by @sheremet-va in https://github.com/vitest-dev/vitest/issues/8454 <samp>(2c2d1)</samp> - Verbose reporter prints tests in a list, introduce
treereporter - by @sheremet-va and @AriPerkkio in https://github.com/vitest-dev/vitest/issues/8500 <samp>(25fd3)</samp> - Include shadow root contents in pretty-format output - by @wkillerud in https://github.com/vitest-dev/vitest/issues/8545 <samp>(9e722)</samp>
- Remove deprecated order from test() API - by @sheremet-va in https://github.com/vitest-dev/vitest/issues/8594 <samp>(4d419)</samp>
- Rewrite pools without
tinypool- by @AriPerkkio and @sheremet-va in https://github.com/vitest-dev/vitest/issues/8705 <samp>(4822d)</samp> - browser: Require a provider factory instead of a string - by @sheremet-va in https://github.com/vitest-dev/vitest/issues/8445 <samp>(606cb)</samp>
- expect: Pass current equality testers to asymmetric matcher - by @hi-ogawa in https://github.com/vitest-dev/vitest/issues/6825 <samp>(965ce)</samp>
- projects: Allow only files that have "vitest.config" or "vite.config" in the name - by @sheremet-va in https://github.com/vitest-dev/vitest/issues/8542 <samp>(304bc)</samp>
- reporter: Remove deprecated APIs - by @AriPerkkio and @sheremet-va in https://github.com/vitest-dev/vitest/issues/8223 <samp>(149f8)</samp>
- runner: Set mode to
todoif no function is passed down totestordescribe- by @sheremet-va in https://github.com/vitest-dev/vitest/issues/8346 <samp>(1a81c)</samp> - snapshot: Fail test with obsolete snapshot on CI - by @hi-ogawa in https://github.com/vitest-dev/vitest/issues/7963 <samp>(4d84f)</samp>
- spy: Support spying on classes - by @sheremet-va in https://github.com/vitest-dev/vitest/issues/6160 <samp>(abc0d)</samp>
๐ Features
- Provide entity to onConsoleLog - by @sheremet-va in https://github.com/vitest-dev/vitest/issues/8159 <samp>(437d4)</samp>
- Add
onUnhandledErrorcallback - by @sheremet-va in https://github.com/vitest-dev/vitest/issues/8162 <samp>(924cb)</samp> - Add spy option to vi.mockObject - by @rChaoz in https://github.com/vitest-dev/vitest/issues/8285 <samp>(81d76)</samp>
- Don't use vite-node in coverage packages - by @sheremet-va <samp>(ffdb4)</samp>
- Clickable dashboard numbers - by @shairez in https://github.com/vitest-dev/vitest/issues/7406 <samp>(2344c)</samp>
- Display test "path" when filtering - by @userquin in https://github.com/vitest-dev/vitest/issues/8547 <samp>(2e491)</samp>
- Introduce separate packages for browser mode providers - by @sheremet-va in https://github.com/vitest-dev/vitest/issues/8629 <samp>(0dc93)</samp>
- Add hooks with type-safe extra context to TestAPI - by @ysfaran in https://github.com/vitest-dev/vitest/issues/8623 <samp>(6b21c)</samp>
- Support
expect.assertfor type narrowing - by @sheremet-va in https://github.com/vitest-dev/vitest/issues/8695 <samp>(fe589)</samp> - Add
displayAnnotationsoption togithub-options- by @sheremet-va in https://github.com/vitest-dev/vitest/issues/8706 <samp>(4a66d)</samp> - Add schema validation matchers - by @zirkelc in https://github.com/vitest-dev/vitest/issues/8527 <samp>(c0b25)</samp>
- Add a way to dump transformed content - by @sheremet-va in https://github.com/vitest-dev/vitest/issues/8711 <samp>(931c0)</samp>
- api:
- Expose
experimental_parseSpecifications- by @sheremet-va in https://github.com/vitest-dev/vitest/issues/8408 <samp>(fdeb2)</samp> - Expose Vitest watcher - by @sheremet-va in https://github.com/vitest-dev/vitest/issues/8413 <samp>(aaa6e)</samp>
- Add
enableCoverageanddisableCoveragemethods - by @sheremet-va and @AriPerkkio in https://github.com/vitest-dev/vitest/issues/8412 <samp>(61eb7)</samp> - Add
getGlobalTestNamePatternmethod - by @sheremet-va in https://github.com/vitest-dev/vitest/issues/8438 <samp>(bdb70)</samp> - Add
relativeModuleIdtoTestModule- by @sheremet-va in https://github.com/vitest-dev/vitest/issues/8505 <samp>(3be09)</samp> - Add
getSeedmethod - by @sheremet-va in https://github.com/vitest-dev/vitest/issues/8592 <samp>(438c4)</samp>
- Expose
- browser:
- Support
toBeInViewportutility method to assert element is in viewport or not - by @Shinyaigeek in https://github.com/vitest-dev/vitest/issues/8234 <samp>(ceed5)</samp> - Add qwik to the
vitest initcli command - by @thejackshelton in https://github.com/vitest-dev/vitest/issues/8330 <samp>(1638b)</samp> - Introduce
toMatchScreenshotfor Visual Regression Testing - by @macarie in https://github.com/vitest-dev/vitest/issues/8041 <samp>(d45f9)</samp> - Add
trackUnhandledErrorsoption - by @sheremet-va in https://github.com/vitest-dev/vitest/issues/8386 <samp>(c0ec0)</samp> - Support iframe locator with playwright provider - by @sheremet-va in https://github.com/vitest-dev/vitest/issues/8016 <samp>(57b2c)</samp>
- Add
lengthproperty to locators,toHaveLengthnow accepts locators - by @sheremet-va in https://github.com/vitest-dev/vitest/issues/8512 <samp>(2308c)</samp> - Support playwright tracing - by @sheremet-va in https://github.com/vitest-dev/vitest/issues/8584 <samp>(1aac5)</samp>
- Expose
optionsonBrowserProviderOption- by @sheremet-va in https://github.com/vitest-dev/vitest/issues/8609 <samp>(0d0e5)</samp> - Support
--inspectoption in webdriverio - by @sheremet-va in https://github.com/vitest-dev/vitest/issues/8613 <samp>(38adc)</samp> - Support custom screenshot comparison algorithms - by @macarie in https://github.com/vitest-dev/vitest/issues/8687 <samp>(e63b1)</samp>
- Support
- coverage:
autoUpdateto support percentage formatting - by @Battjmo and @AriPerkkio in https://github.com/vitest-dev/vitest/issues/8456 <samp>(99e01)</samp>
- expect:
- Support
toBeNullableexpect function to check provided value is nullish - by @Shinyaigeek and @sheremet-va in https://github.com/vitest-dev/vitest/issues/8294 <samp>(eeec5)</samp>
- Support
- mocker:
- Add
automockerentry - by @sheremet-va in https://github.com/vitest-dev/vitest/issues/8301 <samp>(e9c92)</samp>
- Add
๐ Bug Fixes
- Allow overriding globals in types - by @sheremet-va in https://github.com/vitest-dev/vitest/issues/8215 <samp>(2248b)</samp>
- Remove unused dependencies - by @AriPerkkio in https://github.com/vitest-dev/vitest/issues/8184 <samp>(feadc)</samp>
- Distribute test files to shards more evenly - by @Shinyaigeek and @AriPerkkio in https://github.com/vitest-dev/vitest/issues/8288 <samp>(7b489)</samp>
- Use suite's timeout when
test.extend- by @AriPerkkio in https://github.com/vitest-dev/vitest/issues/8278 <samp>(43977)</samp> - Support snapshot with no object key sorting - by @hi-ogawa and @sheremet-va in https://github.com/vitest-dev/vitest/issues/8136 <samp>(e85e3)</samp>
- Annotation location always points to the test file - by @sheremet-va in https://github.com/vitest-dev/vitest/issues/8315 <samp>(88071)</samp>
- Add
--changedflag support tovitest listcommand - by @haakonjackfloat in https://github.com/vitest-dev/vitest/issues/8270 and https://github.com/vitest-dev/vitest/issues/8272 <samp>(e71a5)</samp> - Prevent rpc timeout on slow thread blocking synchronous methods - by @AriPerkkio and @sheremet-va in https://github.com/vitest-dev/vitest/issues/8297 <samp>(bea87)</samp>
- Forbid setting environment to
browser- by @sheremet-va in https://github.com/vitest-dev/vitest/issues/8334 <samp>(0417a)</samp> - Invalidate modules in all module graphs when the file is changed - by @sheremet-va in https://github.com/vitest-dev/vitest/issues/8352 <samp>(94ab3)</samp>
- Screenshot masks with Playwright provider - by @macarie in https://github.com/vitest-dev/vitest/issues/8357 <samp>(459ef)</samp>
- Configure
oxcinstead ofesbuildonrolldown-vite- by @hi-ogawa in https://github.com/vitest-dev/vitest/issues/8378 <samp>(e922e)</samp> - Make sure test errors always have
stacksproperty in Node.js context - by @sheremet-va in https://github.com/vitest-dev/vitest/issues/8392 <samp>(b825e)</samp> - Support
import.meta.resolveon Vite 7 - by @hi-ogawa in https://github.com/vitest-dev/vitest/issues/8493 <samp>(549d3)</samp> - Show the assertion error first when
expect.pollassertion fails - by @sheremet-va in https://github.com/vitest-dev/vitest/issues/8483 <samp>(fb450)</samp> - Override fake timers when
useFakeTimersis called multiple times - by @sheremet-va in https://github.com/vitest-dev/vitest/issues/8504 <samp>(ed7e3)</samp> - Custom expect messages for
expect.extendmatchers - by @lzl0304 in https://github.com/vitest-dev/vitest/issues/8520 <samp>(96945)</samp> - Process sourcemaps for stack traces from
globalSetupfiles - by @sheremet-va in https://github.com/vitest-dev/vitest/issues/8534 <samp>(8978a)</samp> - Resolve performance issue when throwing errors with stackTraceLimit = 0 - by @Copilot, sheremet-va and @AriPerkkio in https://github.com/vitest-dev/vitest/issues/8531 <samp>(6d5b5)</samp>
- Avoid recursively applying
$and%formatting totest.for/eachtitle - by @hi-ogawa in https://github.com/vitest-dev/vitest/issues/8557 <samp>(ea6d7)</samp> - Replace wildcard exports
"./*"with specific files in vitest package - by @hi-ogawa in https://github.com/vitest-dev/vitest/issues/8560 <samp>(ce746)</samp> - Don't publish unused d.ts files - by @sheremet-va in https://github.com/vitest-dev/vitest/issues/8562 <samp>(42dfd)</samp>
- Remove loupe dependencies from
optimizeDeps.includefor browser mode - by @jake-danton in https://github.com/vitest-dev/vitest/issues/8570 <samp>(cdcf7)</samp> - Update
enginesfield to drop Node 18 support - by @sheremet-va in https://github.com/vitest-dev/vitest/issues/8608 <samp>(9a0bf)</samp> - Correctly inherit test options on extended tests - by @sheremet-va in https://github.com/vitest-dev/vitest/issues/8618 <samp>(15c09)</samp>
- Update @types/node peer deps - by @sheremet-va <samp>(ee6b2)</samp>
- Re-export CDP Session directly from playwright - by @mrginglymus in https://github.com/vitest-dev/vitest/issues/8702 <samp>(9553a)</samp>
- Disable trackUnhandledErrors if inspector is enabled - by @sheremet-va in https://github.com/vitest-dev/vitest/issues/8732 <samp>(acac7)</samp>
baseoption doesn't crash vitest - by @sheremet-va in https://github.com/vitest-dev/vitest/issues/8760 <samp>(9f0ec)</samp>- browser:
- Run in-source tests only when the file itsels is a test file - by @sheremet-va in https://github.com/vitest-dev/vitest/issues/8204 <samp>(bdd2e)</samp>
locator.element()returnsHTMLElementorSVGElement- by @sheremet-va in https://github.com/vitest-dev/vitest/issues/8440 <samp>(c1ac1)</samp>- Don't import from
vitedirectly - by @sheremet-va in https://github.com/vitest-dev/vitest/issues/8541 <samp>(d7fca)</samp> - Update expect.element type to match the implementation - by @sheremet-va in https://github.com/vitest-dev/vitest/issues/8597 <samp>(b2804)</samp>
- Throw an error if iframe is not accessible anymore - by @sheremet-va in https://github.com/vitest-dev/vitest/issues/8601 <samp>(6acdc)</samp>
- Stop creating unnecessary directories when taking screenshots - by @macarie in https://github.com/vitest-dev/vitest/issues/8605 <samp>(b1c8f)</samp>
- Always define commands - by @sheremet-va in https://github.com/vitest-dev/vitest/issues/8626 <samp>(acbe0)</samp>
- Exclude deprecated context import from optimization - by @sheremet-va in https://github.com/vitest-dev/vitest/issues/8658 <samp>(a96ea)</samp>
- Allow importing BrowserCommand if no browser package is installed - by @sheremet-va in https://github.com/vitest-dev/vitest/issues/8666 <samp>(95c36)</samp>
- Define an export for browser/utils - by @sheremet-va in https://github.com/vitest-dev/vitest/issues/8678 <samp>(529ab)</samp>
- Allow service workers to mock the network in chromium without breaking vi.mock - by @Georgegriff and @sheremet-va in https://github.com/vitest-dev/vitest/issues/8668 <samp>(87108)</samp>
- Support sync
not.toBeInTheDocument()- by @sheremet-va in https://github.com/vitest-dev/vitest/issues/8751 <samp>(f5d06)</samp>
- core:
- Fix
objectContainingexpect utility to have more compatibility to jest's one - by @Shinyaigeek in https://github.com/vitest-dev/vitest/issues/8241 <samp>(480be)</samp>
- Fix
- coverage:
- Include files based on
--projectfilter - by @gtbuchanan in https://github.com/vitest-dev/vitest/issues/7885 <samp>(761be)</samp> - Prevent encoding filenames of uncovered files - by @AriPerkkio in https://github.com/vitest-dev/vitest/issues/8239 <samp>(8a998)</samp>
- Handle query param based transforms correctly - by @AriPerkkio in https://github.com/vitest-dev/vitest/issues/8418 <samp>(a400a)</samp>
- Enforce order of
vitest:coverage-transformplugin - by @AriPerkkio in https://github.com/vitest-dev/vitest/issues/8477 <samp>(ff517)</samp> - V8 to ignore Vite's generated cjs import helpers - by @mrginglymus and @AriPerkkio in https://github.com/vitest-dev/vitest/issues/8718 <samp>(35816)</samp>
- Keep only strings in
coverage.exclude- by @sheremet-va in https://github.com/vitest-dev/vitest/issues/8731 <samp>(c9c30)</samp>
- Include files based on
- deps:
- Update all non-major dependencies - by @sheremet-va in https://github.com/vitest-dev/vitest/issues/8235 <samp>(a1e57)</samp>
- Update all non-major dependencies - in https://github.com/vitest-dev/vitest/issues/8328 <samp>(aa79e)</samp>
- Update all non-major dependencies - in https://github.com/vitest-dev/vitest/issues/8348 <samp>(13f94)</samp>
- Update all non-major dependencies - by @sheremet-va in https://github.com/vitest-dev/vitest/issues/8382 <samp>(704eb)</samp>
- Update all non-major dependencies - in https://github.com/vitest-dev/vitest/issues/8550 <samp>(048f7)</samp>
- jsdom:
- Override globals that Fetch API relies on - by @sheremet-va in https://github.com/vitest-dev/vitest/issues/8390 <samp>(05b41)</samp>
- Support AbortSignal API - by @sheremet-va in https://github.com/vitest-dev/vitest/issues/8704 <samp>(f6690)</samp>
- mocker:
- Fix
regexpHoistableto allow whitespace before parentheses - by @cszhjh in https://github.com/vitest-dev/vitest/issues/8231 <samp>(a0f9a)</samp>
- Fix
- module-runner:
- Resolve
resolvedSourcescorrectly - by @sheremet-va in https://github.com/vitest-dev/vitest/issues/8736 <samp>(8fc52)</samp> - Support getBuiltins - by @sheremet-va in https://github.com/vitest-dev/vitest/issues/8746 <samp>(87bb8)</samp>
- Resolve
- pool:
- Properly reuse the vm pool - by @sheremet-va in https://github.com/vitest-dev/vitest/issues/8758 <samp>(08498)</samp>
- reporter:
- Invisible CLI menus when
vitest --standalone- by @AriPerkkio in https://github.com/vitest-dev/vitest/issues/8248 <samp>(37cc2)</samp>
- Invisible CLI menus when
- rolldown-vite:
- Properly disable minifier in the browser client - by @sheremet-va in https://github.com/vitest-dev/vitest/issues/8306 <samp>(f55bb)</samp>
- runner:
- Don't bundle runner with utils - by @sheremet-va in https://github.com/vitest-dev/vitest/issues/8496 <samp>(2b4b0)</samp>
- spy:
- Fix spyOn types with optional method - by @sheremet-va in https://github.com/vitest-dev/vitest/issues/8499 <samp>(d3afa)</samp>
- Can respy on an exported method - by @sheremet-va in https://github.com/vitest-dev/vitest/issues/8521 <samp>(bf450)</samp>
- Don't fail when spying on static getters - by @sheremet-va in https://github.com/vitest-dev/vitest/issues/8589 <samp>(ac1d9)</samp>
- types:
- Ensure Chai declaration merge works with TS-Go - by @LukeAbby in https://github.com/vitest-dev/vitest/issues/8188 <samp>(5261d)</samp>
- Allow returning a promise from defineConfig - by @sheremet-va in https://github.com/vitest-dev/vitest/issues/8651 <samp>(c3474)</samp>
- ui:
- Keep the same tab open when clicking on different tests - by @sheremet-va in https://github.com/vitest-dev/vitest/issues/8599 <samp>(3e535)</samp>
- utils:
- Remove ast export - by @bluwy in https://github.com/vitest-dev/vitest/issues/8435 <samp>(21622)</samp>
- vitest:
- Override
config.includeoption withconfig.browser.instances[].includeoption if it is specified - by @Shinyaigeek in https://github.com/vitest-dev/vitest/issues/8260 <samp>(010fc)</samp>
- Override
- watch:
- Filename filter runs duplicate tests in workspaces - by @AriPerkkio in https://github.com/vitest-dev/vitest/issues/8250 <samp>(932d8)</samp>
- wdio:
- Wait for the driver to be properly closed - by @sheremet-va in https://github.com/vitest-dev/vitest/issues/8305 <samp>(c16ab)</samp>
- Properly construct the shadow root selector if there are multiple elements - by @sheremet-va in https://github.com/vitest-dev/vitest/issues/8354 <samp>(28765)</samp>
๐ Performance
- Avoid spawning extra workers if no tests will run there - by @sheremet-va in https://github.com/vitest-dev/vitest/issues/8446 <samp>(3fb3e)</samp>
- Don't set
process.title- by @sheremet-va in https://github.com/vitest-dev/vitest/issues/8453 <samp>(0a766)</samp> - Remove chai as a direct dependency, keep it in
@vitest/expect- by @sheremet-va in https://github.com/vitest-dev/vitest/issues/8461 <samp>(cc98c)</samp> - Reduce the amount of dynamic imports - by @sheremet-va in https://github.com/vitest-dev/vitest/issues/8465 <samp>(db6cd)</samp>
- Use ES2022 language features - by @TrevorBurnham in https://github.com/vitest-dev/vitest/issues/8492 <samp>(bb34c)</samp>
- Delay populating node-globals - by @sheremet-va in https://github.com/vitest-dev/vitest/issues/8506 <samp>(41cbc)</samp>
- Get
workerIdfrom a global object - by @sheremet-va in https://github.com/vitest-dev/vitest/issues/8507 <samp>(46b13)</samp> - Replace startsWith with strict equality - by @btea in https://github.com/vitest-dev/vitest/issues/8546 <samp>(c42e6)</samp>
- Reduce the number of unused imports - by @sheremet-va in https://github.com/vitest-dev/vitest/issues/8508 <samp>(9a79b)</samp>
- Use experimental
meta.resolveflag instead of a custom loader - by @sheremet-va in https://github.com/vitest-dev/vitest/issues/8567 <samp>(2e063)</samp> - Create only one fetcher per project - by @sheremet-va in https://github.com/vitest-dev/vitest/issues/8762 <samp>(8e15b)</samp>
- pool: Resolve all environments first - by @sheremet-va in https://github.com/vitest-dev/vitest/issues/8759 <samp>(d3ef4)</samp>
View changes on GitHub
- Remove
- 4.0.0-beta.1921 Oct 2025pre-release
Release notes
Open source โ๐จ Breaking Changes
- Rewrite pools without
tinypool- by @AriPerkkio and @sheremet-va in https://github.com/vitest-dev/vitest/issues/8705 <samp>(4822d)</samp>
๐ Bug Fixes
- Disable trackUnhandledErrors if inspector is enabled - by @sheremet-va in https://github.com/vitest-dev/vitest/issues/8732 <samp>(acac7)</samp>
- browser:
- Allow service workers to mock the network in chromium without breaking vi.mock - by @Georgegriff and @sheremet-va in https://github.com/vitest-dev/vitest/issues/8668 <samp>(87108)</samp>
- Support sync
not.toBeInTheDocument()- by @sheremet-va in https://github.com/vitest-dev/vitest/issues/8751 <samp>(f5d06)</samp>
- coverage:
- V8 to ignore Vite's generated cjs import helpers - by @mrginglymus and @AriPerkkio in https://github.com/vitest-dev/vitest/issues/8718 <samp>(35816)</samp>
- Keep only strings in
coverage.exclude- by @sheremet-va in https://github.com/vitest-dev/vitest/issues/8731 <samp>(c9c30)</samp>
- module-runner:
- Resolve
resolvedSourcescorrectly - by @sheremet-va in https://github.com/vitest-dev/vitest/issues/8736 <samp>(8fc52)</samp> - Support getBuiltins - by @sheremet-va in https://github.com/vitest-dev/vitest/issues/8746 <samp>(87bb8)</samp>
- Resolve
View changes on GitHub
- Rewrite pools without
- 4.0.0-beta.1815 Oct 2025pre-release
Release notes
Open source โ๐ Features
- Support
expect.assertfor type narrowing - by @sheremet-va in https://github.com/vitest-dev/vitest/issues/8695 <samp>(fe589)</samp> - Add
displayAnnotationsoption togithub-options- by @sheremet-va in https://github.com/vitest-dev/vitest/issues/8706 <samp>(4a66d)</samp> - Add schema validation matchers - by @zirkelc in https://github.com/vitest-dev/vitest/issues/8527 <samp>(c0b25)</samp>
- Add a way to dump transformed content - by @sheremet-va in https://github.com/vitest-dev/vitest/issues/8711 <samp>(931c0)</samp>
- browser: Support custom screenshot comparison algorithms - by @macarie in https://github.com/vitest-dev/vitest/issues/8687 <samp>(e63b1)</samp>
๐ Bug Fixes
- Re-export CDP Session directly from playwright - by @mrginglymus in https://github.com/vitest-dev/vitest/issues/8702 <samp>(9553a)</samp>
- browser: Define an export for browser/utils - by @sheremet-va in https://github.com/vitest-dev/vitest/issues/8678 <samp>(529ab)</samp>
- jsdom: Support AbortSignal API - by @sheremet-va in https://github.com/vitest-dev/vitest/issues/8704 <samp>(f6690)</samp>
View changes on GitHub
- Support
- 4.0.0-beta.176 Oct 2025pre-release
Release notes
Open source โ๐ Bug Fixes
- browser: Allow importing BrowserCommand if no browser package is installed - by @sheremet-va in https://github.com/vitest-dev/vitest/issues/8666 <samp>(95c36)</samp>
View changes on GitHub
- 4.0.0-beta.163 Oct 2025pre-release
Release notes
Open source โ๐ Features
- Add hooks with type-safe extra context to TestAPI - by @ysfaran in https://github.com/vitest-dev/vitest/issues/8623 <samp>(6b21c)</samp>
๐ Bug Fixes
- Update @types/node peer deps - by @sheremet-va <samp>(ee6b2)</samp>
- browser: Exclude deprecated context import from optimization - by @sheremet-va in https://github.com/vitest-dev/vitest/issues/8658 <samp>(a96ea)</samp>
- types: Allow returning a promise from defineConfig - by @sheremet-va in https://github.com/vitest-dev/vitest/issues/8651 <samp>(c3474)</samp>
View changes on GitHub
- 4.0.0-beta.151 Oct 2025pre-release
- 4.0.0-beta.141 Oct 2025pre-release
Release notes
Open source โ๐จ Breaking Changes
- Introduce separate packages for browser mode providers - by @sheremet-va in https://github.com/vitest-dev/vitest/issues/8629 <samp>(0dc93)</samp>
๐ Bug Fixes
- Correctly inherit test options on extended tests - by @sheremet-va in https://github.com/vitest-dev/vitest/issues/8618 <samp>(15c09)</samp>
- browser: Always define commands - by @sheremet-va in https://github.com/vitest-dev/vitest/issues/8626 <samp>(acbe0)</samp>
View changes on GitHub
- 4.0.0-beta.1324 Sept 2025pre-release
Release notes
Open source โ๐ Features
- browser:
- Expose
optionsonBrowserProviderOption- by @sheremet-va in https://github.com/vitest-dev/vitest/issues/8609 <samp>(0d0e5)</samp> - Support
--inspectoption in webdriverio - by @sheremet-va in https://github.com/vitest-dev/vitest/issues/8613 <samp>(38adc)</samp>
- Expose
๐ Bug Fixes
- browser: Stop creating unnecessary directories when taking screenshots - by @macarie in https://github.com/vitest-dev/vitest/issues/8605 <samp>(b1c8f)</samp>
View changes on GitHub
- browser:
- 4.0.0-beta.1222 Sept 2025pre-release
Release notes
Open source โ๐จ Breaking Changes
- Remove deprecated order from test() API - by @sheremet-va in https://github.com/vitest-dev/vitest/issues/8594 <samp>(4d419)</samp>
๐ Features
- api: Add
getSeedmethod - by @sheremet-va in https://github.com/vitest-dev/vitest/issues/8592 <samp>(438c4)</samp> - browser: Support playwright tracing - by @sheremet-va in https://github.com/vitest-dev/vitest/issues/8584 <samp>(1aac5)</samp>
๐ Bug Fixes
- Remove loupe dependencies from
optimizeDeps.includefor browser mode - by @jake-danton in https://github.com/vitest-dev/vitest/issues/8570 <samp>(cdcf7)</samp> - Update
enginesfield to drop Node 18 support - by @sheremet-va in https://github.com/vitest-dev/vitest/issues/8608 <samp>(9a0bf)</samp> - browser:
- Update expect.element type to match the implementation - by @sheremet-va in https://github.com/vitest-dev/vitest/issues/8597 <samp>(b2804)</samp>
- Throw an error if iframe is not accessible anymore - by @sheremet-va in https://github.com/vitest-dev/vitest/issues/8601 <samp>(6acdc)</samp>
- spy:
- Don't fail when spying on static getters - by @sheremet-va in https://github.com/vitest-dev/vitest/issues/8589 <samp>(ac1d9)</samp>
- ui:
- Keep the same tab open when clicking on different tests - by @sheremet-va in https://github.com/vitest-dev/vitest/issues/8599 <samp>(3e535)</samp>
๐ Performance
- Use experimental
meta.resolveflag instead of a custom loader - by @sheremet-va in https://github.com/vitest-dev/vitest/issues/8567 <samp>(2e063)</samp>
View changes on GitHub
- 4.0.0-beta.1111 Sept 2025pre-release
Release notes
Open source โ๐จ Breaking Changes
- Verbose reporter prints tests in a list, introduce
treereporter - by @sheremet-va and @AriPerkkio in https://github.com/vitest-dev/vitest/issues/8500 <samp>(25fd3)</samp> - Include shadow root contents in pretty-format output - by @wkillerud in https://github.com/vitest-dev/vitest/issues/8545 <samp>(9e722)</samp>
- expect: Pass current equality testers to asymmetric matcher - by @hi-ogawa in https://github.com/vitest-dev/vitest/issues/6825 <samp>(965ce)</samp>
- projects: Allow only files that have "vitest.config" or "vite.config" in the name - by @sheremet-va in https://github.com/vitest-dev/vitest/issues/8542 <samp>(304bc)</samp>
๐ Features
- Clickable dashboard numbers - by @shairez in https://github.com/vitest-dev/vitest/issues/7406 <samp>(2344c)</samp>
- Display test "path" when filtering - by @userquin in https://github.com/vitest-dev/vitest/issues/8547 <samp>(2e491)</samp>
๐ Bug Fixes
- Custom expect messages for
expect.extendmatchers - by @lzl0304 in https://github.com/vitest-dev/vitest/issues/8520 <samp>(96945)</samp> - Process sourcemaps for stack traces from
globalSetupfiles - by @sheremet-va in https://github.com/vitest-dev/vitest/issues/8534 <samp>(8978a)</samp> - Resolve performance issue when throwing errors with stackTraceLimit = 0 - by @Copilot, sheremet-va and @AriPerkkio in https://github.com/vitest-dev/vitest/issues/8531 <samp>(6d5b5)</samp>
- Avoid recursively applying
$and%formatting totest.for/eachtitle - by @hi-ogawa in https://github.com/vitest-dev/vitest/issues/8557 <samp>(ea6d7)</samp> - Replace wildcard exports
"./*"with specific files in vitest package - by @hi-ogawa in https://github.com/vitest-dev/vitest/issues/8560 <samp>(ce746)</samp> - Don't publish unused d.ts files - by @sheremet-va in https://github.com/vitest-dev/vitest/issues/8562 <samp>(42dfd)</samp>
- browser: Don't import from
vitedirectly - by @sheremet-va in https://github.com/vitest-dev/vitest/issues/8541 <samp>(d7fca)</samp> - deps: Update all non-major dependencies - in https://github.com/vitest-dev/vitest/issues/8550 <samp>(048f7)</samp>
- spy: Can respy on an exported method - by @sheremet-va in https://github.com/vitest-dev/vitest/issues/8521 <samp>(bf450)</samp>
๐ Performance
- Replace startsWith with strict equality - by @btea in https://github.com/vitest-dev/vitest/issues/8546 <samp>(c42e6)</samp>
- Reduce the number of unused imports - by @sheremet-va in https://github.com/vitest-dev/vitest/issues/8508 <samp>(9a79b)</samp>
View changes on GitHub
- Verbose reporter prints tests in a list, introduce
- 4.0.0-beta.101 Sept 2025pre-release
Release notes
Open source โ๐จ Breaking Changes
- browser: Require a provider factory instead of a string - by @sheremet-va in https://github.com/vitest-dev/vitest/issues/8445 <samp>(606cb)</samp>
๐ Features
- api:
- Add
relativeModuleIdtoTestModule- by @sheremet-va in https://github.com/vitest-dev/vitest/issues/8505 <samp>(3be09)</samp>
- Add
- browser:
- Support iframe locator with playwright provider - by @sheremet-va in https://github.com/vitest-dev/vitest/issues/8016 <samp>(57b2c)</samp>
- Add
lengthproperty to locators,toHaveLengthnow accepts locators - by @sheremet-va in https://github.com/vitest-dev/vitest/issues/8512 <samp>(2308c)</samp>
- coverage:
autoUpdateto support percentage formatting - by @Battjmo and @AriPerkkio in https://github.com/vitest-dev/vitest/issues/8456 <samp>(99e01)</samp>
๐ Bug Fixes
- Support
import.meta.resolveon Vite 7 - by @hi-ogawa in https://github.com/vitest-dev/vitest/issues/8493 <samp>(549d3)</samp> - Show the assertion error first when
expect.pollassertion fails - by @sheremet-va in https://github.com/vitest-dev/vitest/issues/8483 <samp>(fb450)</samp> - Override fake timers when
useFakeTimersis called multiple times - by @sheremet-va in https://github.com/vitest-dev/vitest/issues/8504 <samp>(ed7e3)</samp> - deps: Update all non-major dependencies - by @sheremet-va in https://github.com/vitest-dev/vitest/issues/8382 <samp>(704eb)</samp>
- runner: Don't bundle runner with utils - by @sheremet-va in https://github.com/vitest-dev/vitest/issues/8496 <samp>(2b4b0)</samp>
- spy: Fix spyOn types with optional method - by @sheremet-va in https://github.com/vitest-dev/vitest/issues/8499 <samp>(d3afa)</samp>
๐ Performance
- Use ES2022 language features - by @TrevorBurnham in https://github.com/vitest-dev/vitest/issues/8492 <samp>(bb34c)</samp>
- Delay populating node-globals - by @sheremet-va in https://github.com/vitest-dev/vitest/issues/8506 <samp>(41cbc)</samp>
- Get
workerIdfrom a global object - by @sheremet-va in https://github.com/vitest-dev/vitest/issues/8507 <samp>(46b13)</samp> - Update
tinypooltov2.0.0- by @AriPerkkio in https://github.com/vitest-dev/vitest/issues/8513 <samp>(a8c7f)</samp>
View changes on GitHub
- 4.0.0-beta.926 Aug 2025pre-release
Release notes
Open source โ๐จ Breaking Changes
- Remove
minWorkersand set it automatically to 0 in non watch mode - by @sheremet-va in https://github.com/vitest-dev/vitest/issues/8454 <samp>(2c2d1)</samp>
๐ Features
- api: Add
getGlobalTestNamePatternmethod - by @sheremet-va in https://github.com/vitest-dev/vitest/issues/8438 <samp>(bdb70)</samp>
๐ Bug Fixes
- browser:
locator.element()returnsHTMLElementorSVGElement- by @sheremet-va in https://github.com/vitest-dev/vitest/issues/8440 <samp>(c1ac1)</samp>
- coverage:
- Handle query param based transforms correctly - by @AriPerkkio in https://github.com/vitest-dev/vitest/issues/8418 <samp>(a400a)</samp>
- Enforce order of
vitest:coverage-transformplugin - by @AriPerkkio in https://github.com/vitest-dev/vitest/issues/8477 <samp>(ff517)</samp>
- utils:
- Remove ast export - by @bluwy in https://github.com/vitest-dev/vitest/issues/8435 <samp>(21622)</samp>
๐ Performance
- Avoid spawning extra workers if no tests will run there - by @sheremet-va in https://github.com/vitest-dev/vitest/issues/8446 <samp>(3fb3e)</samp>
- Don't set
process.title- by @sheremet-va in https://github.com/vitest-dev/vitest/issues/8453 <samp>(0a766)</samp> - Remove chai as a direct dependency, keep it in
@vitest/expect- by @sheremet-va in https://github.com/vitest-dev/vitest/issues/8461 <samp>(cc98c)</samp> - Reduce the amount of dynamic imports - by @sheremet-va in https://github.com/vitest-dev/vitest/issues/8465 <samp>(db6cd)</samp>
View changes on GitHub
- Remove
- 4.0.0-beta.812 Aug 2025pre-release
Release notes
Open source โ๐จ Breaking Changes
- Remove deprecated APIs - by @sheremet-va in https://github.com/vitest-dev/vitest/issues/8428 <samp>(a1cb9)</samp>
๐ Features
- api: Add
enableCoverageanddisableCoveragemethods - by @sheremet-va and @AriPerkkio in https://github.com/vitest-dev/vitest/issues/8412 <samp>(61eb7)</samp>
View changes on GitHub
- 4.0.0-beta.78 Aug 2025pre-release
Release notes
Open source โ๐ Features
- api:
- Expose
experimental_parseSpecifications- by @sheremet-va in https://github.com/vitest-dev/vitest/issues/8408 <samp>(fdeb2)</samp> - Expose Vitest watcher - by @sheremet-va in https://github.com/vitest-dev/vitest/issues/8413 <samp>(aaa6e)</samp>
- Expose
- browser:
- Add
trackUnhandledErrorsoption - by @sheremet-va in https://github.com/vitest-dev/vitest/issues/8386 <samp>(c0ec0)</samp>
- Add
๐ Bug Fixes
- Make sure test errors always have
stacksproperty in Node.js context - by @sheremet-va in https://github.com/vitest-dev/vitest/issues/8392 <samp>(b825e)</samp> - jsdom: Override globals that Fetch API relies on - by @sheremet-va in https://github.com/vitest-dev/vitest/issues/8390 <samp>(05b41)</samp>
View changes on GitHub
- api:
- 4.0.0-beta.64 Aug 2025pre-release
Release notes
Open source โ๐จ Breaking Changes
- Rewrite spying implementation to make mocking more intuitive - by @sheremet-va in https://github.com/vitest-dev/vitest/issues/8363 <samp>(9e412)</samp>
- reporter: Remove deprecated APIs - by @AriPerkkio and @sheremet-va in https://github.com/vitest-dev/vitest/issues/8223 <samp>(149f8)</samp>
๐ Bug Fixes
- Screenshot masks with Playwright provider - by @macarie in https://github.com/vitest-dev/vitest/issues/8357 <samp>(459ef)</samp>
- Configure
oxcinstead ofesbuildonrolldown-vite- by @hi-ogawa in https://github.com/vitest-dev/vitest/issues/8378 <samp>(e922e)</samp> - deps: Update all non-major dependencies - in https://github.com/vitest-dev/vitest/issues/8348 <samp>(13f94)</samp>
- vitest: Override
config.includeoption withconfig.browser.instances[].includeoption if it is specified - by @Shinyaigeek in https://github.com/vitest-dev/vitest/issues/8260 <samp>(010fc)</samp>
View changes on GitHub