Vitest Updates & Release Notes
28 updates curated from 1 source by the Releasebot Team. Last updated: May 11, 2026
- May 11, 2026
- Date parsed from source:May 11, 2026
- First seen by Releasebot:May 11, 2026
v4.1.6
Vitest fixes browser screenshots, concurrent test handling, and diff performance.
Bug Fixes
browser: Provide project reference in ToMatchScreenshotResolvePath - by @macarie and @sheremet-va in #10138 (31882)
Global sequence.concurrent: true with top-level test(..., { concurrent: false }) + depreacte sequential test API and options - by @hi-ogawa, Codex and @sheremet-va in #10196 (2847d)
browser: Simplify orchestrator otel carrier - by @hi-ogawa in #10285 (18af9)
Performance
Stringify diff objects only once - by @sheremet-va in #10276 (9f7b1)
View changes on GitHub
Original source - May 5, 2026
- Date parsed from source:May 5, 2026
- First seen by Releasebot:May 6, 2026
v5.0.0-beta.2
Vitest ships a major update with breaking changes around attachments, reporters, locator handling, inline expect, and deprecated entry points, while adding new reporter defaults, merged report support, richer error logging, screenshot path context, and coverage and JUnit improvements.
馃毃 Breaking Changes
Default attachmentsDir from .vitest-attachements/ to .vitest/attachments/ - by @MdSadiqMd in #10186 (1ba73)
Remove sequential test/suite options in favor of concurrent - by @hi-ogawa and Codex in #10198 (9229f)
Represent locator as an object instead of a string - by @sheremet-va in #10212 (80f07)
Inline expect package - by @sheremet-va in #10221 (ad162)
Remove deprecated entry points - by @sheremet-va in #10222 (994c6)
mocker: Deserialize automock as automock - by @nami8824 in #10192 (2f892)
reporters: blob reporter and --merge-reports default to .vitest/blob/ - by @AriPerkkio in #10232 (d22b0)
馃殌 Features
Expose default reporters through configDefaults.reporters - by @hi-ogawa and Claude Sonnet 4.6 in #10219 (083f6)
Support merge reports for non-sharded multi-environment runs (take 2) - by @hi-ogawa, Claude Sonnet 4.6, Codex and @AriPerkkio in #10031 (e60b2)
Add logger.formatError - by @hi-ogawa and Codex in #10268 (2c5f3)
browser: Provide project reference in ToMatchScreenshotResolvePath - by @macarie and @sheremet-va in #10138 (16654)
coverage: V8 to track node:child_process and node:worker_threads contexts - by @AriPerkkio in #9976 (9baa5)
junit-reporter: Add jest-junit-compatible naming options - by @neumaennl, neumaennl, @neumann4soft and Copilot in #10189 (27393)
馃悶 Bug Fixes
Global sequence.concurrent: true with top-level test(..., { concurrent: false }) + depreacte sequential test API and options - by @hi-ogawa, Codex and @sheremet-va in #10194 (9387f)
Test tags options should overwrite inherited suite options + inherit suite options in task API - by @hi-ogawa and Codex in #10216 (457db)
Udpate optimize deps config - by @sheremet-va in #10223 (95dc6)
browser:
Fix trace highlight of shadow dom on webdriverio - by @hi-ogawa in #10227 (b01af)
deps:
Update ivya to fix empty aria tree snapshot - by @hi-ogawa in #10218 (f7822)
runner:
Propagate chainable flags in describe.for - by @DORI2001, Dor Alagem and @hi-ogawa in #10187 (db678)
Limit concurrency per task branch in addition to per leaf callbacks - by @hi-ogawa in #10179 (3112a)
snapshot:
Treat empty string as valid snapshot - by @mayrang and @hi-ogawa in #10188 (e145d)
spy:
Support private method spy types - by @cyphercodes in #10172 and #10213 (628ab)
View changes on GitHub
Original source All of your release notes in one feed
Join Releasebot and get updates from Vitest and hundreds of other software products.
- Apr 23, 2026
- Date parsed from source:Apr 23, 2026
- First seen by Releasebot:Apr 23, 2026
v5.0.0-beta.1
Vitest adds report generation and a new .vitest report directory convention, supports DOM snapshot trace view and browser aria tree utils, and fixes several snapshot, coverage, browser, and expect issues while making a few breaking changes.
Breaking Changes
Replace loupe.inspect with pretty-format - by @hi-ogawa, Claude Sonnet 4.6 and Codex in #9609 (3f802)
Remove quotes from string values in test.for/each title $ variable (take 2) - by @hi-ogawa in #10170 (04d37)
browser: Iframe scale - by @macarie in #9745 (b6398)
coverage: include/exclude globs too eager - by @AriPerkkio in #9818 (edacb)
expect: Fix toThrow("") behavior by reverting #6710 - by @hi-ogawa in #9643 and #6710 (6c3e4)
Features
Add createReport and .vitest report directory convention - by @AriPerkkio in #9993 (72a6d)
browser:
Export aria tree utils - by @hi-ogawa in #10171 (c3423)
Support dom snapshot trace view - by @hi-ogawa, Claude Sonnet 4.6 and Codex in #10102 (7eddd)
Bug Fixes
snapshot: Fail test when snapshot assertion is used with test.fails - by @hi-ogawa in #10090 (e1aa7)
View changes on GitHub
Original source - Apr 21, 2026
- Date parsed from source:Apr 21, 2026
- First seen by Releasebot:Apr 21, 2026
v4.1.5
Vitest adds experimental Istanbul coverage support for the instrumenter option and ships a broad round of bug fixes across reporters, snapshots, soft assertions, worker messaging, and test discovery.
Experimental Features
coverage: Istanbul to support instrumenter option - by @BartWaardenburg and @AriPerkkio in #10119 (0e0ff)
Bug Fixes
- --project negation excludes browser instances - by @felamaslen in #10131 (9423d)
- Project color label on html reporter - by @hi-ogawa in #10142 (596f7)
- Fix vi.defineHelper called as object method - by @hi-ogawa in #10163 (122c2)
- Alias agent reporter to minimal - by @sheremet-va in #10157 (663b9)
- Respect diff config options in soft assertions - by @Copilot, sheremet-va and @sheremet-va in #8696 (9787d)
- Respect diff config options in soft assertions " - by @sheremet-va in #8696 (7dc6d)
- ast-collect: Recognize _vi_import prefix in static test discovery - by @Yejneshwar in #10129 (32546)
- coverage: Descriptive error message when reports directory is removed during test run - by @DaveT1991 and @AriPerkkio in #10117 (14133)
- snapshot: Increase default snapshot max output length - by @hi-ogawa and Codex in #10150 (21e66)
- ui: Fix jsx/tsx syntax highlight - by @hi-ogawa in #10152 (f1b1f)
- web-worker: Support MessagePort objects referenced inside postMessage data - by @whitphx and Claude Opus 4.6 (1M context) in #9927 and #10124 (7ad7d)
- api: Make test-specification options writable - by @sheremet-va in #10154 (6abd5)
View changes on GitHub
Original source - Apr 9, 2026
- Date parsed from source:Apr 9, 2026
- First seen by Releasebot:Apr 9, 2026
v4.1.4
Vitest adds experimental coverage and reporter updates, including text reporter skipFull behavior, a public assertion field, aria snapshot support, and a new json reporter filterMeta option. It also ships several bug fixes for terminal contrast, error messages, import hoisting, and browser server options.
馃殌 Experimental Features
coverage:
- Default to text reporter skipFull if agent detected - by @hi-ogawa in #10018 (53757)
experimental:
- Expose assertion as a public field - by @sheremet-va in #10095 (a120e)
- Support aria snapshot - by @hi-ogawa, Claude Opus 4.6 (1M context), @AriPerkkio, Codex and @sheremet-va in #9668 (d4fbb)
reporter:
- Add filterMeta option to json reporter - by @nami8824 and @sheremet-va in #10078 (b77de)
馃悶 Bug Fixes
- Use "black" foreground for labeled terminal message to ensure contrast - by @hi-ogawa in #10076 (203f0)
- Make expect(..., message) consistent as error message prefix - by @hi-ogawa and Codex in #10068 (a1b5f)
- Do not hoist imports whose names match class properties . - by @SunsetFi in #10093 and #10094 (0fc4b)
- browser: Spread user server options into browser Vite server in project - by @GoldStrikeArch in #10049 (65c9d)
View changes on GitHub
Original source - Apr 7, 2026
- Date parsed from source:Apr 7, 2026
- First seen by Releasebot:Apr 7, 2026
v4.1.3
Vitest adds experimental parsing, exact browser locator support, TestAttachment.bodyEncoding, and custom snapshot matcher support, while also shipping several bug fixes for fake timers, snapshots, coverage dependencies, Playwright integration, and type leakage.
Experimental Features
Add experimental.preParse flag - by @sheremet-va in #10070 (78273)
Support browser.locators.exact option - by @sheremet-va in #10013 (48799)
Add TestAttachment.bodyEncoding - by @hi-ogawa in #9969 (89ca0)
Support custom snapshot matcher - by @hi-ogawa, Claude Sonnet 4.6 and Codex in #9973 (59b0e)
Bug Fixes
Advance fake timers with expect.poll interval - by @hi-ogawa and Claude Sonnet 4.6 in #10022 (3f5bf)
Add @vitest/coverage-v8 and @vitest/coverage-istanbul as optional dependency - by @alan-agius4 in #10025 (146d4)
Fix defineHelper for webkit async stack trace + update playwright 1.59.0 - by @hi-ogawa in #10036 (5a5fa)
Fix suite hook throwing errors for unused auto test-scoped fixture - by @hi-ogawa and Claude Sonnet 4.6 in #10035 (39865)
expect:
Remove JestExtendError.context from verbose error reporting - by @hi-ogawa in #9983 (66751)
Don't leak "runner" types - by @sheremet-va in #10004 (ec204)
snapshot:
Fix flagging obsolete snapshots for snapshot properties mismatch - by @hi-ogawa and Claude Sonnet 4.6 in #9986 (6b869)
Export custom snapshot matcher helper from vitest - by @hi-ogawa and Codex in #10042 (691d3)
ui:
Don't leak vite types - by @sheremet-va in #10005 (fdff1)
vm:
Fix external module resolve error with deps optimizer query - by @hi-ogawa and Claude Sonnet 4.6 in #10024 (9dbf4)
View changes on GitHub
Original source - Mar 26, 2026
- Date parsed from source:Mar 26, 2026
- First seen by Releasebot:Mar 27, 2026
v4.1.2
Vitest ships a maintenance release that bumps flatted and removes version pinning to address CVE-related issues, while also tightening setup file resolution, mock handling, browser screenshot failures, coverage defaults, formatting limits, and agent color detection.
This release bumps Vitest's flatted version and removes version pinning to resolve flatted's CVE related issues (#9975).
馃悶 Bug Fixes
- Don't resolve setupFiles from parent directory - by @hi-ogawa in #9960 (7aa93)
- Ensure sequential mock/unmock resolution - by @hi-ogawa and Claude Opus 4.6 in #9830 (7c065)
- browser: Take failure screenshot if toMatchScreenshot can't capture a stable screenshot - by @macarie in #9847 (faace)
- coverage: Correct coverageConfigDefaults values and types - by @Arthie in #9940 (b3c99)
- pretty-format: Fix output limit over counting - by @hi-ogawa in #9965 (d3b7a)
- Disable colors if agent is detected - by @sheremet-va and @AriPerkkio in #9851 (6f97b)
View changes on GitHub
Original source - Mar 23, 2026
- Date parsed from source:Mar 23, 2026
- First seen by Releasebot:Mar 23, 2026
v4.1.1
Vitest adds experimental tag-matching and VCS provider support, while shipping a broad round of bug fixes for mocking, coverage, browser providers, timers, and test collection. It also improves preview and standalone browser behavior and tightens output handling.
Features
experimental:
Expose matchesTags to test if the current filter matches tags - by @sheremet-va in #9913 (eec53)
Introduce experimental.vcsProvider - by @sheremet-va in #9928 (56115)
Bug Fixes
Mark TestProject.testFilesList internal properly - by @sapphi-red in #9867 (54f26)
Detect fixture that returns without calling use - by @oilater in #9831 and #9861 (633ae)
Drop vite 8.beta support - by @AriPerkkio in #9862 (b78f5)
Type regression in vi.mocked() static class methods - by @purepear and @hi-ogawa in #9857 (90926)
Properly re-evaluate actual modules of mocked external - by @hi-ogawa in #9898 (ae5ec)
Preserve coverage report when html reporter overlaps - by @hi-ogawa in #9889 (2d81a)
Provide vi.advanceTimers to the preview provider - by @sheremet-va in #9891 (1bc3e)
Don't leak event listener in playwright provider - by @sheremet-va in #9910 (d9355)
Open browser in --standalone mode without running tests - by @sheremet-va in #9911 (e78ad)
Guard disposable and optional body - by @sheremet-va in #9912 (6fdb2)
Resolve retry.condition RegExp serialization issue - by @nstepien and @hi-ogawa in #9942 (7b605)
collect:
Don't treat extra props on test return as tests - by @sheremet-va in #9871 (141e7)
coverage:
Simplify provider types - by @AriPerkkio in #9931 (aaf9f)
Load built-in provider without module runner - by @AriPerkkio in #9939 (bf892)
expect:
Soft assertions continue after .resolves/.rejects promise errors - by @mixelburg, Maks Pikov, Claude Opus 4.6 (1M context) and @hi-ogawa in #9843 (6d74b)
Fix sinon-chai style API - by @hi-ogawa in #9943 (0f08d)
pretty-format:
Limit output for large object - by @hi-ogawa and Claude Opus 4.6 (1M context) in #9949 (0d5f9)
View changes on GitHub
Original source - Mar 12, 2026
- Date parsed from source:Mar 12, 2026
- First seen by Releasebot:Mar 13, 2026
v4.1.0
Vitest 4.1 arrives as a beta release page with a broad set of changes. It highlights new capabilities such as returning a disposable from doMock, chai style assertions, timer controls updates, exposed matcher types, and UI and test spec improvements aimed at broader compatibility and stability.
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 #9332 (e3e65)
- Added chai style assertions - by @ronnakamoto and @sheremet-va in #8842 (841df)
- Update to sinon/fake-timers v15 and add setTickMode to timer controls - by @atscott and @sheremet-va in #8726 (4b480)
- Expose matcher types - by @sheremet-va in #9448 (3e4b9)
- Add toTestSpecification to reported tasks - by @sheremet-va in #9464 (1a470)
- Show a warning if vi.mock or vi.hoisted are declared outside of top level of the module - by @sheremet-va in #9387 (5db54)
- Track and display expectedly failed tests (.fails) in UI and CLI - by @Copilot, sheremet-va and @sheremet-va in #9476 (77d75)
- Support tags - by @sheremet-va in #9478 (de7c8)
- Implement aroundEach and aroundAll hooks - by @sheremet-va in #9450 (2a8cb)
- Stabilize experimental features - by @sheremet-va in #9529 (b5fd2)
- Accept new or all in --update flag - by @sheremet-va in #9543 (a5acf)
- Support meta in test options - by @sheremet-va in #9535 (7d622)
- Support type inference with a new test.extend syntax - by @sheremet-va in #9550 (e5385)
- Support vite 8 beta, fix type issues in the config with different vite versions - by @sheremet-va in #9587 (99028)
- Add assertion helper to hide internal stack traces - by @hi-ogawa and Claude Opus 4.6 in #9594 (eeb0a)
- Store failure screenshots using artifacts API - by @macarie in #9588 (24603)
- Allow vitest list to statically collect tests instead of running files to collect them - by @sheremet-va in #9630 (7a8e7)
- Add --detect-async-leaks - by @AriPerkkio in #9528 (c594d)
- Implement mockThrow and mockThrowOnce - by @thor-juhasz and @sheremet-va in #9512 (61917)
- Support update: "none" and add docs about snapshots behavior on CI - by @hi-ogawa in #9700 (05f18)
- Support playwright launchOptions with connectOptions - by @hi-ogawa in #9702 (f0ff1)
- Add page/locator.mark API to enhance playwright trace - by @hi-ogawa in #9652 (d0ee5)
api:
- Support tests starting or ending with test in experimental_parseSpecification - by @jgillick and Jeremy Gillick in #9235 (2f367)
- Add filters to createSpecification - by @sheremet-va in #9336 (c8e6c)
- Expose runTestFiles as alternative to runTestSpecifications - by @sheremet-va in #9443 (43d76)
- Add allowWrite and allowExec options to api - by @sheremet-va in #9350 (20e00)
- Allow passing down test cases to toTestSpecification - by @sheremet-va in #9627 (6f17d)
browser:
- Add userEvent.wheel API - by @macarie in #9188 (66080)
- Add filterNode option to prettyDOM for filtering browser assertion error output - by @Copilot, sheremet-va and @sheremet-va in #9475 (d3220)
- Support playwright persistent context - by @hi-ogawa, Claude Opus 4.6 and @sheremet-va in #9229 (f865d)
- Added detailsPanelPosition option and button - by @shairez in #9525 (c8a31)
- Use BlazeDiff instead of pixelmatch - by @macarie in #9514 (30936)
- Add findElement and enable strict mode in webdriverio and preview - by @sheremet-va in #9677 (c3f37)
cli:
- Add @bomb.sh/tab completions - by @AmirSa12 and @sheremet-va in #8639 (200f3)
coverage:
- Support ignore start/stop ignore hints - by @AriPerkkio in #9204 (e59c9)
- Add coverage.changed option to report only changed files - by @kykim00 and @AriPerkkio in #9521 (1d939)
experimental:
- Add onModuleRunner hook to worker.init - by @sheremet-va in #9286 (e977f)
- Option to disable the module runner - by @sheremet-va and @AriPerkkio in #9210 (9be61)
- Add importDurations: { limit, print } options - by @hi-ogawa, Claude Opus 4.6 and @sheremet-va in #9401 (7e10f)
- Add print and fail thresholds for importDurations - by @hi-ogawa and Claude Opus 4.6 in #9533 (3f7a5)
fixtures:
- Pass down file context to beforeAll/afterAll - by @sheremet-va in #9572 (c8339)
reporters:
- Add agent reporter to reduce ai agent token usage - by @cpojer in #9779 (3e9e0)
runner:
- Enhance retry options - by @MazenSamehR, Matan Shavit, @AriPerkkio and @sheremet-va in #9370 (9e4cf)
ui:
- Allow run individual test/suites - by @userquin in #9465 (73b10)
- Add project filter/sort support - by @userquin in #8689 (0c7ea)
- Add duration sorting to explorer - by @julianhahn and @cursoragent in #9603 (209b1)
- Implement filter for slow tests - by @DerYeger and @userquin in #9705 (8880c)
vitest:
- Add run summary in GitHub Actions Reporter - by @macarie and jhnance in #9579 (96bfc)
馃悶 Bug Fixes
- Deprecate several vitest/* entry points - by @sheremet-va in #9347 (fd459)
- Use meta.url in createRequire - by @sheremet-va in #9441 (e3422)
- Preact browser mode init example of render function not async - by @WuMingDao in #9375 (2bea5)
- Deprecate unused types in matcher context - by @sheremet-va in #9449 (20f87)
- Handle external/noExternal during configEnvironment hook - by @hi-ogawa and Claude Opus 4.6 in #9508 (59ea2)
- Replace default ssr environment runner with Vitest server module runner - by @hi-ogawa and Claude Opus 4.6 in #9506 (cd5db)
- Propagate experimental CLI options to child projects - by @hi-ogawa and Claude Opus 4.6 in #9531 (b624f)
- Show a warning when browser.isolate is used - by @sheremet-va in #9410 (3d48e)
- Fix vi.mock({ spy: true }) node v8 coverage - by @hi-ogawa, hi-ogawa and Claude Opus 4.6 in #9541 (687b6)
- Don't show internal ssr handler in errors - by @sheremet-va in #9547 (76c43)
- Close vitest if it failed to start - by @sheremet-va in #9573 (728ba)
- Fix ssr environment runner in project - by @hi-ogawa in #9584 (09006)
- Trim trailing white spaces in code block - by @hi-ogawa in #9591 (f78be)
- Support inline snapshot inside test.for/each - by @hi-ogawa in #9590 (615fd)
- Apply source maps for external module stack trace - by @hi-ogawa in #9152 (79e20)
- Remove the .name from statically collected test - by @sheremet-va in #9596 (b66ff)
- Don't suppress warnings on pnp - by @sheremet-va in #9602 (89cbd)
- Support snapshot with expect.soft - by @iumehara, @hi-ogawa and Claude Opus 4.6 in #9231 (3eb2c)
- Log seed when only sequence.shuffle.tests is enabled - by @kaigritun, Kai Gritun and @sheremet-va in #9576 (8182b)
- Externalize expect/src/utils from vitest - by @hi-ogawa in #9616 (48739)
- Ignore test.override during static collection - by @sheremet-va in #9620 (09174)
- Increase stacktrace limit for --detect-async-leaks - by @AriPerkkio in #9638 (9fd4c)
- Hanging-reporter link in cli - by @flx-sta in #9649 (7c103)
- Fix teardown timeout of aroundEach/All when inner aroundEach/All throws - by @hi-ogawa in #9657 (4ec6c)
- Fix ui mode / html reporter and coverage integration - by @hi-ogawa and Claude Opus 4.6 in #9626 (86fad)
- Don't continue when aroundEach/All setup timed out - by @hi-ogawa in #9670 (bb013)
- Align VitestRunnerConfig optional fields with SerializedConfig - by @hi-ogawa in #9661 (79520)
- Handle Symbol values in format utility - by @nami8824 in #9658 (0583f)
- Deprecate toBe* spy assertions in favor of toHaveBeen* (and toThrowError) - by @sheremet-va in #9665 (4d390)
- Don't propagate nested aroundEach/All errors but aggregate them on runner - by @hi-ogawa in #9673 (b6365)
- Show a better error if there is a pending dynamic import - by @sheremet-va in #9676 (7ef5c)
- Preserve stack trace of resolves/rejects chained assertion error - by @hi-ogawa in #9679 (c6151)
- Handle module-sync condition in vmThreads/vmForks require - by @lesleh in #9650 and #9651 (bb203)
- Hooks should respect maxConcurrency - by @hi-ogawa in #9653 (16d13)
- Recursively autospy module object - by @hi-ogawa in #9687 (695a8)
- Remove trailing spaces from diff error log - by @hi-ogawa and @sheremet-va in #9680 (395d1)
- Respect project resolve.conditions for externals - by @hi-ogawa in #9717 (1d498)
- Use object for WeakMap instead of a symbol to support webcontainers - by @sheremet-va in #9731 (c5225)
- Fix re-mocking virtual module - by @hi-ogawa in #9748 (3cbbb)
- Cancelling should stop current test immediately - by @AriPerkkio in #9729 (0cb2f)
- Make mockObject change backwards compatible - by @sheremet-va in #9744 (84c69)
- Fix URL.name on jsdom - by @hi-ogawa in #9767 (031f3)
- Save and restore module graph in blob reporter - by @hi-ogawa in #9740 (84355)
- Don't silence reporter errors from test runtime events handler in normal run and --merge-reports - by @hi-ogawa in #9727 (4072d)
- Fix vi.importActual() for virtual modules - by @hi-ogawa and Claude Opus 4.6 in #9772 (1e89e)
- Throw FixtureAccessError if suite hook accesses undefined fixture - by @sheremet-va in #9786 (fc2ce)
- Allow hyphens in project config file name pattern - by @Koutaro-Hanabusa and @hi-ogawa in #9760 (33e96)
- Manual and redirect mock shouldn't load or transform original module - by @hi-ogawa and Claude Opus 4.6 in #9774 (a8216)
- hideSkippedTests should not hide test.todo - by @oilater in #9562 and #9781 (8181e)
- Allow catch/finally for async assertion - by @hi-ogawa in #9827 (031f0)
- Resolve fixture overrides from test's suite in beforeEach hooks - by @hi-ogawa and Claude Opus 4.6 in #9826 (99e52)
- Use isAgent check, not just TTY, for watch mode - by @sheremet-va in #9841 (c3cac)
- Use performance.now to measure test timeout duration - by @hi-ogawa and Claude Opus 4.6 in #9795 (f48a6)
- Correctly identify concurrent test during static analysis - by @sheremet-va in #9846 (1de0a)
- browser:
- Avoid updating screenshots when toMatchScreenshot passes - by @macarie in #9289 (46aab)
- Hide injected data-testid attributes - by @sheremet-va in #9503 (c8d2c)
- Throw an error if iframe was reloaded - by @sheremet-va in #9516 (73a81)
- Encode projectName in browser client URL - by @dkkim0122 in #9523 (5b164)
- Don't take failure screenshot if tests have artifacts created by toMatchScreenshot - by @macarie in #9552 (83ca0)
- Remove --remote-debugging-address from chrome args - by @hi-ogawa and @AriPerkkio in #9712 (f09bb)
- Make sure userEvent actions support ensureAwaited - by @sheremet-va in #9732 (97685)
- Types of getCDPSession and cdp() - by @AriPerkkio in #9716 (689a2)
- Skip esbuild.legalComments when using rolldown-vite - by @Copilot, hi-ogawa and @hi-ogawa in #9803 (3505f)
chai:
- Don't allow deepEqual in the config because it's not serializable - by @sheremet-va in #9666 (9ee99)
coverage:
- Infer transform mode for uncovered files - by @AriPerkkio in #9435 (f3967)
- thresholds.autoUpdate to preserve ending whitespace - by @AriPerkkio in #9436 (7e534)
deps:
- Update all non-major dependencies - by @hi-ogawa in #9192 (90c30)
- Update all non-major dependencies - in #9485 (c0118)
- Update all non-major dependencies - in #9567 (13c9e)
docs:
- Fix old /config/#option hash links causing hydration errors - by @hi-ogawa, Claude Opus 4.6 and @sheremet-va in #9610 (a603c)
expect:
- toMatchObject(Map/Set) should expect Map/Set on left hand side - by @hi-ogawa and Claude Opus 4.6 in #9532 (381da)
- Fix objectContaining with proxy - by @hi-ogawa and Claude Opus 4.6 in #9554 (7ce34)
- Support arbitrary value equality for toThrow and make Error detection robust - by @hi-ogawa and Claude Opus 4.6 in #9570 (de215)
mock:
- Inject helpers after hashbang if present - by @sheremet-va in #9545 (65432)
mocker:
- Update vite's peer dependency range - by @sheremet-va in #9808 (36f9a)
reporter:
- dot reporter leaves pending tests - by @AriPerkkio in #9684 (4d793)
runner:
- Mark repeated tests as finished on last run - by @AriPerkkio in #9707 (cc735)
spy:
- Support deep partial in vi.mocked - by @j2h30728 in #8152 and #9493 (71cb5)
- Fallback to object accessor if descriptor's value is undefined - by @sheremet-va in #9511 (6f181)
- Throw correct errors when shorthand methods are used on a class - by @sheremet-va in #9513 (5d0fd)
types:
- bench.reporters no longer gives type errors when passing file name string paths - by @Bertie690 in #9695 (093c8)
ui:
- Process artifact attachments when generating HTML reporter - by @macarie in #9472 (96eb9)
- Don't fail if --ui and --root are specified together - by @sheremet-va in #9536 (d9305)
馃弾 Performance
- pretty-format: Combine DOMElement plugins - by @sheremet-va in #9581 (da85a)
View changes on GitHub
Original source - Mar 5, 2026
- Date parsed from source:Mar 5, 2026
- First seen by Releasebot:Mar 5, 2026
v4.1.0-beta.6
New features include page/locator.mark API to enhance playwright trace and vitest run summaries. Bug fixes cover jsdom URL.name, saving/restoring module graph in blob reporter, reporter error handling, virtual modules, fixture access, config name patterns, and mock redirects. View changes on GitHub.
馃殌 Features
- Add page/locator.mark API to enhance playwright trace - by @hi-ogawa in #9652 (d0ee5)
- vitest: Add run summary in GitHub Actions Reporter - by @macarie and jhnance in #9579 (96bfc)
馃悶 Bug Fixes
- Fix URL.name on jsdom - by @hi-ogawa in #9767 (031f3)
- Save and restore module graph in blob reporter - by @hi-ogawa in #9740 (84355)
- Don't silence reporter errors from test runtime events handler in normal run and --merge-reports - by @hi-ogawa in #9727 (4072d)
- Fix vi.importActual() for virtual modules - by @hi-ogawa and Claude Opus 4.6 in #9772 (1e89e)
- Throw FixtureAccessError if suite hook accesses undefined fixture - by @sheremet-va in #9786 (fc2ce)
- Allow hyphens in project config file name pattern - by @Koutaro-Hanabusa and @hi-ogawa in #9760 (33e96)
- Manual and redirect mock shouldn't load or transform original module - by @hi-ogawa and Claude Opus 4.6 in #9774 (a8216)
- hideSkippedTests should not hide test.todo - by @oilater in #9562 and #9781 (8181e)
- browser: Types of getCDPSession and cdp() - by @AriPerkkio in #9716 (689a2)
View changes on GitHub
Original source - Feb 26, 2026
- Date parsed from source:Feb 26, 2026
- First seen by Releasebot:Feb 26, 2026
v4.1.0-beta.5
New release brings mockThrow enhancements and new mocks, updated CI snapshots behavior docs, Playwright launchOptions support, BlazeDiff for browser diffs, strict mode in webdriverio preview, and improved coverage reporting. It also fixes error propagation, dynamic imports, hooks concurrency, autospy, and reporter stability.
Features
- Implement mockThrow and mockThrowOnce - by @thor-juhasz and @sheremet-va in #9512 (61917)
- Support update: "none" and add docs about snapshots behavior on CI - by @hi-ogawa in #9700 (05f18)
- Support playwright launchOptions with connectOptions - by @hi-ogawa in #9702 (f0ff1)
browser:
- Use BlazeDiff instead of pixelmatch - by @macarie in #9514 (30936)
- Add findElement and enable strict mode in webdriverio and preview - by @sheremet-va in #9677 (c3f37)
coverage:
- Add coverage.changed option to report only changed files - by @kykim00 and @AriPerkkio in #9521 (1d939)
ui:
- Implement filter for slow tests - by @DerYeger and @userquin in #9705 (8880c)
Bug Fixes
- Don鈥檛 propagate nested aroundEach/All errors but aggregate them on runner - by @hi-ogawa in #9673 (b6365)
- Show a better error if there is a pending dynamic import - by @sheremet-va in #9676 (7ef5c)
- Preserve stack trace of resolves/rejects chained assertion error - by @hi-ogawa in #9679 (c6151)
- Handle module-sync condition in vmThreads/vmForks require - by @lesleh in #9650 and #9651 (bb203)
- Hooks should respect maxConcurrency - by @hi-ogawa in #9653 (16d13)
- Recursively autospy module object - by @hi-ogawa in #9687 (695a8)
- Remove trailing spaces from diff error log - by @hi-ogawa and @sheremet-va in #9680 (395d1)
- Respect project resolve.conditions for externals - by @hi-ogawa in #9717 (1d498)
- Use object for WeakMap instead of a symbol to support webcontainers - by @sheremet-va in #9731 (c5225)
- Fix re-mocking virtual module - by @hi-ogawa in #9748 (3cbbb)
- Cancelling should stop current test immediately - by @AriPerkkio in #9729 (0cb2f)
- Make mockObject change backwards compatible - by @sheremet-va in #9744 (84c69)
browser:
- Remove --remote-debugging-address from chrome args - by @hi-ogawa and @AriPerkkio in #9712 (f09bb)
- Make sure userEvent actions support ensureAwaited - by @sheremet-va in #9732 (97685)
reporter:
- dot reporter leaves pending tests - by @AriPerkkio in #9684 (4d793)
runner:
- Mark repeated tests as finished on last run - by @AriPerkkio in #9707 (cc735)
types:
- bench.reporters no longer gives type errors when passing file name string paths - by @Bertie690 in #9695 (093c8)
View changes on GitHub
Original source - Feb 16, 2026
- Date parsed from source:Feb 16, 2026
- First seen by Releasebot:Feb 16, 2026
v4.1.0-beta.4
Vitest delivers a broad update with type inference, Vite 8 beta support, improved assertion helpers, static test collection, async leak detection, and UI/explorer refinements. It also patches start failures, SSR tweaks, and stack traces for smoother, faster test runs.
馃殌 Features
- Support type inference with a new test.extend syntax - by @sheremet-va in #9550 (e5385)
- Support vite 8 beta, fix type issues in the config with different vite versions - by @sheremet-va in #9587 (99028)
- Add assertion helper to hide internal stack traces - by @hi-ogawa and Claude Sonnet 4.5 in #9594 (eeb0a)
- Store failure screenshots using artifacts API - by @macarie in #9588 (24603)
- Allow vitest list to statically collect tests instead of running files to collect them - by @sheremet-va in #9630 (7a8e7)
- Add --detect-async-leaks - by @AriPerkkio in #9528 (c594d)
- api: Allow passing down test cases to toTestSpecification - by @sheremet-va in #9627 (6f17d)
- fixtures: Pass down file context to beforeAll/afterAll - by @sheremet-va in #9572 (c8339)
- ui: Add duration sorting to explorer - by @julianhahn and @cursoragent in #9603 (209b1)
馃悶 Bug Fixes
- Close vitest if it failed to start - by @sheremet-va in #9573 (728ba)
- Fix ssr environment runner in project - by @hi-ogawa in #9584 (09006)
- Trim trailing white spaces in code block - by @hi-ogawa in #9591 (f78be)
- Support inline snapshot inside test.for/each - by @hi-ogawa in #9590 (615fd)
- Apply source maps for external module stack trace - by @hi-ogawa in #9152 (79e20)
- Remove the .name from statically collected test - by @sheremet-va in #9596 (b66ff)
- Don't suppress warnings on pnp - by @sheremet-va in #9602 (89cbd)
- Support snapshot with expect.soft - by @iumehara, @hi-ogawa and Claude Sonnet 4.5 in #9231 (3eb2c)
- Log seed when only sequence.shuffle.tests is enabled - by @kaigritun, Kai Gritun and @sheremet-va in #9576 (8182b)
- Externalize expect/src/utils from vitest - by @hi-ogawa in #9616 (48739)
- Ignore test.override during static collection - by @sheremet-va in #9620 (09174)
- Increase stacktrace limit for --detect-async-leaks - by @AriPerkkio in #9638 (9fd4c)
- Hanging-reporter link in cli - by @flx-sta in #9649 (7c103)
- Fix teardown timeout of aroundEach/All when inner aroundEach/All throws - by @hi-ogawa in #9657 (4ec6c)
- Fix ui mode / html reporter and coverage integration - by @hi-ogawa and Claude Sonnet 4.5 in #9626 (86fad)
- Don't continue when aroundEach/All setup timed out - by @hi-ogawa in #9670 (bb013)
- Align VitestRunnerConfig optional fields with SerializedConfig - by @hi-ogawa in #9661 (79520)
- Handle Symbol values in format utility - by @nami8824 in #9658 (0583f)
- Deprecate toBe* spy assertions in favor of toHaveBeen* (and toThrowError) - by @sheremet-va in #9665 (4d390)
- chai: Don't allow deepEqual in the config because it's not serializable - by @sheremet-va in #9666 (9ee99)
- docs: Fix old /config/#option hash links causing hydration errors - by @hi-ogawa, Claude Sonnet 4.5 and @sheremet-va in #9610 (a603c)
- expect: Support arbitrary value equality for toThrow and make Error detection robust - by @hi-ogawa and Claude Sonnet 4.5 in #9570 (de215)
- ui: Don't fail if --ui and --root are specified together - by @sheremet-va in #9536 (d9305)
馃弾 Performance
- pretty-format: Combine DOMElement plugins - by @sheremet-va in #9581 (da85a)
- View changes on GitHub
- Feb 2, 2026
- Date parsed from source:Feb 2, 2026
- First seen by Releasebot:Feb 3, 2026
v4.1.0-beta.3
A refreshed release adds new hooks and API options, plus browser details and enhanced test options. It stabilizes experimental features and fixes setup, errors, and test reliability for smoother workflows.
馃殌 Features
- Implement aroundEach and aroundAll hooks - by @sheremet-va in #9450 (2a8cb)
- Stabilize experimental features - by @sheremet-va in #9529 (b5fd2)
- Accept new or all in --update flag - by @sheremet-va in #9543 (a5acf)
- Support meta in test options - by @sheremet-va in #9535 (7d622)
- api:
- Add allowWrite and allowExec options to api - by @sheremet-va in #9350 (20e00)
- browser:
- Added detailsPanelPosition option and button - by @shairez in #9525 (c8a31)
- experimental:
- Add importDurations: { limit, print } options - by @hi-ogawa, Claude Opus 4.5 and @sheremet-va in #9401 (7e10f)
- Add print and fail thresholds for importDurations - by @hi-ogawa and Claude Opus 4.5 in #9533 (3f7a5)
- View changes on GitHub
馃悶 Bug Fixes
browser
- Hide injected data-testid attributes - by @sheremet-va in #9503 (c8d2c)
- Throw an error if iframe was reloaded - by @sheremet-va in #9516 (73a81)
- Encode projectName in browser client URL - by @dkkim0122 in #9523 (5b164)
- Don't take failure screenshot if tests have artifacts created by toMatchScreenshot - by @macarie in #9552 (83ca0)
deps
- Update all non-major dependencies - in #9485 (c0118)
- Update all non-major dependencies - in #9567 (13c9e)
expect
- toMatchObject(Map/Set) should expect Map/Set on left hand side - by @hi-ogawa and Claude Opus 4.5 in #9532 (381da)
- Fix objectContaining with proxy - by @hi-ogawa and Claude Opus 4.5 in #9554 (7ce34)
mock
- Inject helpers after hashbang if present - by @sheremet-va in #9545 (65432)
spy
Fallback to object accessor if descriptor's value is undefined - by @sheremet-va in #9511 (6f181)
Throw correct errors when shorthand methods are used on a class - by @sheremet-va in #9513 (5d0fd)
View changes on GitHub
- Jan 22, 2026
- Date parsed from source:Jan 22, 2026
- First seen by Releasebot:Jan 23, 2026
v4.1.0-beta.2
This release unlocks matcher types, adds toTestSpecification, shows expected failures in UI, and introduces tags along with browser output filtering. It also adds Playwright persistent context, CLI tab completions, single-test runs, and project filters with assorted bug fixes. View changes on GitHub.
馃殌 Features
- Expose matcher types - by @sheremet-va in #9448 (3e4b9)
- Add toTestSpecification to reported tasks - by @sheremet-va in #9464 (1a470)
- Show a warning if vi.mock or vi.hoisted are declared outside of top level of the module - by @sheremet-va in #9387 (5db54)
- Track and display expectedly failed tests (.fails) in UI and CLI - by @Copilot, sheremet-va and @sheremet-va in #9476 (77d75)
- Support tags - by @sheremet-va in #9478 (de7c8)
browser:
- Add filterNode option to prettyDOM for filtering browser assertion error output - by @Copilot, sheremet-va and @sheremet-va in #9475 (d3220)
- Support playwright persistent context - by @hi-ogawa, Claude Opus 4.5 and @sheremet-va in #9229 (f865d)
cli:
- Add @bomb.sh/tab completions - by @AmirSa12 and @sheremet-va in #8639 (200f3)
experimental:
- Option to disable the module runner - by @sheremet-va and @AriPerkkio in #9210 (9be61)
ui:
- Allow run individual test/suites - by @userquin in #9465 (73b10)
- Add project filter/sort support - by @userquin in #8689 (0c7ea)
馃悶 Bug Fixes
- Deprecate unused types in matcher context - by @sheremet-va in #9449 (20f87)
- coverage: thresholds.autoUpdate to preserve ending whitespace - by @AriPerkkio in #9436 (7e534)
- spy: Support deep partial in vi.mocked - by @j2h30728 in #8152 and #9493 (71cb5)
- ui: Process artifact attachments when generating HTML reporter - by @macarie in #9472 (96eb9)
- View changes on GitHub
- Jan 22, 2026
- Date parsed from source:Jan 22, 2026
- First seen by Releasebot:Jan 23, 2026
v4.0.18
馃殌 Experimental Features
- experimental: Add onModuleRunner hook to worker.init - by @sheremet-va in #9286 (ea837)
馃悶 Bug Fixes
- Use meta.url in createRequire - by @sheremet-va in #9441 (e0572)
- browser: Hide injected data-testid attributes - by @sheremet-va in #9503 (f8989)
- ui: Process artifact attachments when generating HTML reporter - by @macarie in #9472 (22543)
View changes on GitHub
Original source
Curated by the Releasebot team
Releasebot is an aggregator of official product update announcements from hundreds of software vendors and thousands of sources.
Our editorial process involves the manual review and audit of release notes procured with the help of automated systems.
Similar to Vitest with recent updates:
- 1Password Browser updates48 release notes 路 Latest Apr 21, 2026
- 1Password Mac updates39 release notes 路 Latest Apr 21, 2026
- Next.js updates70 release notes 路 Latest May 7, 2026
- Neovim updates18 release notes 路 Latest Nov 3, 2025
- Berry updates5 release notes 路 Latest Apr 17, 2026
- Oxc updates127 release notes 路 Latest May 11, 2026