NewYour coding agent can read the release notes before it upgrades.Set up the MCP server →
npm · #573 most downloaded on npm
Vitest snapshot manager
Last release 5 days ago
30 Sep 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
3 years old
190 releases · first in 2023
One column per quarter.
Isolate result.status between repeats runs - by @hi-ogawa , Hiroshi Ogawa and Codex (GPT-6) in #11218 (5dbeb)
result.status between repeats runs - by @hi-ogawa, Hiroshi Ogawa and Codex (GPT-6) in #11218 (5dbeb)test.fails expectedly failed - by @hi-ogawa, Hiroshi Ogawa and Codex (GPT-6) in #11219 (b2458)listen until tests start running - by @sheremet-va in #11366 (7d8ed)toMatchScreenshot uses wrong reference on retried tests - by @macarie in #11393 (c22ab)why-is-node-running to 3.2.1 to avoid users running into ERR_PNPM_TRUST_DOWNGRADE - by @AriPerkkio in #11403 (f6c9a)Bind process in case global is overwritten - by @AriPerkkio in #11343 (0b792)
process in case global is overwritten - by @AriPerkkio in #11343 (0b792)process.stdio handles - by @AriPerkkio in #11333 (0fd6b)toMatchObject with asymmetric matchers - by @ShreeBohara, Claude Opus 5, @hi-ogawa, Hiroshi Ogawa and Codex (GPT-5) in #11100 (42523)Request with Blob body on jsdom 28+ - by @harshit-d3v in #11295 (d1c3e)agent to respect --silent - by @Raj4478 and @AriPerkkio in #11271 (5b95e)Warn when deprecated deps.optimizer.web is used - by @im10furry in #11214 (2ce29)
extends - by @sheremet-va in #11034 (23dda)deps.optimizer.web is used - by @im10furry in #11214 (2ce29)config.define - by @sheremet-va in #11198 (972e2)toMatchAriaSnapshot - by @sheremet-va in #11208 (c119b)queueMicrotask and nextTick in toNotFake - by @kingmakeruix, kingmakeruix, Hiroshi Ogawa, Codex and @hi-ogawa in #11261 (a47d7)Remove deprecated entry points - by @sheremet-va in #10222 (994c6)
Vitest 5 is officially out! This release focuses on performance and brings a lot of new features while fixing long-standing bugs. See our blog post for the official announcement.
loupe.inspect with pretty-format - by @hi-ogawa, Claude Opus 5 (1M context) and OpenAI Codex in #9609 (3f802)test.for/each title $ variable (take 2) - by @hi-ogawa in #10170 (04d37)attachmentsDir from .vitest-attachements/ to .vitest/attachments/ - by @MdSadiqMd in #10186 (1ba73)sequential test/suite options in favor of concurrent - by @hi-ogawa and OpenAI Codex in #10198 (9229f)expect package - by @sheremet-va in #10221 (ad162)expect.poll when function didn't resolve in time - by @hi-ogawa and OpenAI Codex in #10233 (4df04)toHaveTextContent is strict, add toMatchTextContent as alternative - by @sheremet-va in #10473 (18f30)@vitest/runner package, do not publish it anymore - by @sheremet-va in #10511 (6d6e4)concurrencyId/workerId on TestModule's diagnostics, make id 1-based - by @sheremet-va in #10516 (bdd98)screenshotDirectory config to browser.expect.toMatchScreenshot - by @macarie in #10592 (a60de)@sinonjs/fake-timers and support mocking Temporal - by @hi-ogawa, Hiroshi Ogawa and OpenCode (gpt-5.6-sol) in #10654 (f8b15)> as separator in -t, calculate only once - by @sheremet-va in #10686 (a0b20)locators.exact by default - by @sheremet-va in #10430 (e2032)sessionId for orchestrator html request - by @hi-ogawa, Hiroshi Ogawa and OpenAI Codex in #10522 (79b7d)attachmentsDir - by @macarie in #10917 (3b5bb)include/exclude globs too eager - by @AriPerkkio in #9818 (edacb)thresholds.perFile to accept an object - by @vladlenskiy and @AriPerkkio in #10190 (13b78)blob reporter and --merge-reports default to .vitest/blob/ - by @AriPerkkio in #10232 (d22b0).vitest by default - by @hi-ogawa, Hiroshi Ogawa, OpenCode (gpt-5.6-sol) and @AriPerkkio in #10621 (58577)createReport and .vitest report directory convention - by @AriPerkkio in #9993 (72a6d)configDefaults.reporters - by @hi-ogawa and Claude Opus 5 (1M context) in #10219 (083f6)logger.formatError - by @hi-ogawa and OpenAI Codex in #10268 (2c5f3)injectCjsGlobals option - by @sheremet-va in #10709 (82671)for/each title placeholders - by @k-yle in #10773 (15e0a)ToMatchScreenshotResolvePath - by @macarie and @sheremet-va in #10138 (16654)kind in page.mark - by @AriPerkkio in #10302 (053e8)context.mark for custom command tracing - by @AriPerkkio in #10329 (aa514)node:child_process and node:worker_threads contexts - by @AriPerkkio in #9976 (9baa5)thresholds.autoUpdate to receive previous threshold as argument - by @wouterkroes in #10495 (04f81)@vitest/istanbuljs packages - by @AriPerkkio in #11053 (5f6a5)require(esm) in vm pools - by @sheremet-va in #10829 (01298)sequence.concurrent: true with top-level test(..., { concurrent: false }) + depreacte sequential test API and options - by @hi-ogawa, OpenAI Codex and @sheremet-va in #10194 (9387f)tags options should overwrite inherited suite options + inherit suite options in task API - by @hi-ogawa and OpenAI Codex in #10216 (457db)attachmentsDir root only config - by @hi-ogawa and OpenAI Codex in #10334 (fab1b)__esModule - by @hi-ogawa in #10363 (2b135)vi.defineHelper callsite for async error stack - by @macayu17 and @hi-ogawa in #10415 (ac697)disableConsoleIntercept in browser mode - by @Copilot, Hiroshi Ogawa, @hi-ogawa and OpenAI Codex in #10391 (66110)onUserConsoleLog - by @Copilot, Hiroshi Ogawa, @hi-ogawa and @sheremet-va in #10308 (62756)importOriginal with optimizer and query import - by @davidxharris, David Harris, @hi-ogawa, Hiroshi Ogawa and OpenAI Codex in #10469 (6a3bb)Note truncated.
Parse files statically in vitest list by default - by @sheremet-va in #11088 (51e94)
oxc.target if user provides a custom array - by @sheremet-va in #11095 (848d7)Promote parseSpecifications out of experimental - by @sheremet-va in #11087 (b628c)
@vitest/istanbuljs packages - by @AriPerkkio in #11053 (5f6a5)recordArtifact location with vi.defineHelper - by @hi-ogawa, Hiroshi Ogawa and OpenCode in #11047 (c2186)ui: true in projects - by @AriPerkkio in #10994 (9f710)toMatchFileSnapshot uses same snapshot file as toMatchSnapshot - by @hi-ogawa, Hiroshi Ogawa, OpenCode and @sheremet-va in #10978 (17646)reporter : Add custom GitHub Actions summary title - by @heyJonBray and @macarie in #10891 (4363c)
process.exit disabled in workers - by @sheremet-va in #10963 (5e69a)Inline projects extend the root config by default - by @sheremet-va in #10750 (fec00)
> as separator in -t, calculate only once - by @sheremet-va in #10686 (a0b20)attachmentsDir - by @macarie in #10917 (3b5bb)require(esm) in vm pools - by @sheremet-va in #10829 (01298)vitest --typecheck from reporting a false success when the tsc process crashes - by @hitenkalda and Hiten Kalda in #10705 (a1b05)connectTimeout from the project config - by @lazerg in #10879 and #10880 (62c79)CTRL+c even when globalSetup runs blocked code - by @AriPerkkio in #10863 (d568f)error.stack throws - by @sheremet-va in #10839 (202e2)--changed on a large graph - by @jszumski in #10866 (9f23f)Node.js 20 deprecation warning for ci.yml - by @hirehamir in #10759 (2127f)
injectCjsGlobals option - by @sheremet-va in #10709 (82671)for/each title placeholders - by @k-yle in #10773 (15e0a)off - by @sheremet-va in #10741 (d758b)ci.yml - by @hirehamir in #10759 (2127f)Add screenshotDirectory config to browser.expect.toMatchScreenshot - by @macarie in #10592 (a60de)
screenshotDirectory config to browser.expect.toMatchScreenshot - by @macarie in #10592 (a60de)@sinonjs/fake-timers and support mocking Temporal - by @hi-ogawa, Hiroshi Ogawa and OpenCode (claude-opus-4-8) in #10654 (f8b15).vitest by default - by @hi-ogawa, Hiroshi Ogawa, OpenCode (claude-opus-4-8) and @AriPerkkio in #10621 (58577)setImmediate await in detect-async-leak - by @hi-ogawa and Hiroshi Ogawa in #10608 (dd62b)sequence config - by @hi-ogawa, Hiroshi Ogawa and OpenCode (claude-opus-4-8) in #10659 (40cdc)includeTaskLocation is enabled - by @sheremet-va in #10681 (bd9cc)coverage.reportsDirectory conflicts between concurrent runs - by @jgamaraalv and @AriPerkkio in #10466 (833f0)changed in configuration options - by @AriPerkkio in #10651 (0da12)Don't lookup config file from ancestor directories - by @hi-ogawa , Codex and Hiroshi Ogawa in #10428 (945d9)
@vitest/runner package, do not publish it anymore - by @sheremet-va in #10511 (6d6e4)concurrencyId/workerId on TestModule's diagnostics, make id 1-based - by @sheremet-va in #10516 (bdd98)sessionId for orchestrator html request - by @hi-ogawa, Hiroshi Ogawa and Codex in #10522 (79b7d)thresholds.perFile to accept an object - by @vladlenskiy and @AriPerkkio in #10190 (13b78)--repeats CLI option - by @todor-a in #10504 (ee48b)thresholds.autoUpdate to receive previous threshold as argument - by @wouterkroes in #10495 (04f81)onUserConsoleLog - by @Copilot, Hiroshi Ogawa, @hi-ogawa and @sheremet-va in #10308 (62756)importOriginal with optimizer and query import - by @davidhwilliams, David Harris, @hi-ogawa, Hiroshi Ogawa and Codex in #10469 (6a3bb)Throw an error if hoistable methods are outside the top level scope - by @sheremet-va in #10460 (d0b4f)
toHaveTextContent is strict, add toMatchTextContent as alternative - by @sheremet-va in #10473 (18f30)locators.exact by default - by @sheremet-va in #10430 (e2032)vi.defineHelper callsite for async error stack - by @macayu17 and @hi-ogawa in #10415 (ac697)disableConsoleIntercept in browser mode - by @Copilot, hi-ogawa, @hi-ogawa and Codex in #10391 (66110)Require Node.js 22 and Vite 6.4 - by @sheremet-va in https://github.com/vitest-dev/vitest/issues/10178 (38762)
expect.poll when function didn't resolve in time - by @hi-ogawa and Codex in https://github.com/vitest-dev/vitest/issues/10233 <samp>(4df04)</samp>kind in page.mark - by @AriPerkkio in https://github.com/vitest-dev/vitest/issues/10302 <samp>(053e8)</samp>context.mark for custom command tracing - by @AriPerkkio in https://github.com/vitest-dev/vitest/issues/10329 <samp>(aa514)</samp>attachmentsDir root only config - by @hi-ogawa and Codex in https://github.com/vitest-dev/vitest/issues/10334 <samp>(fab1b)</samp>__esModule - by @hi-ogawa in https://github.com/vitest-dev/vitest/issues/10363 <samp>(2b135)</samp>wrapDynamicImport transform on ssr environment - by @hi-ogawa in https://github.com/vitest-dev/vitest/issues/10355 <samp>(d3c96)</samp>FORCE_COLOR over agent detection - by @dokson in https://github.com/vitest-dev/vitest/issues/10272 <samp>(7e66b)</samp>exclude to not inherit negation globs from test.include - by @AriPerkkio in https://github.com/vitest-dev/vitest/issues/10299 <samp>(28685)</samp>toNotFake - by @BPScott, @hi-ogawa and Codex in https://github.com/vitest-dev/vitest/issues/10043 <samp>(bbf2f)</samp>summary to intercept logger's streams even when they are not process.std* streams - by @AriPerkkio in https://github.com/vitest-dev/vitest/issues/10340 <samp>(f79e7)</samp>testModules in onTestRunEnd when 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>Remove deprecated entry points - by @sheremet-va in https://github.com/vitest-dev/vitest/issues/10222 (994c6)
attachmentsDir from .vitest-attachements/ to .vitest/attachments/ - by @MdSadiqMd in https://github.com/vitest-dev/vitest/issues/10186 <samp>(1ba73)</samp>sequential test/suite options in favor of concurrent - by @hi-ogawa and Codex in https://github.com/vitest-dev/vitest/issues/10198 <samp>(9229f)</samp>expect package - by @sheremet-va in https://github.com/vitest-dev/vitest/issues/10221 <samp>(ad162)</samp>blob reporter and --merge-reports default to .vitest/blob/ - by @AriPerkkio in https://github.com/vitest-dev/vitest/issues/10232 <samp>(d22b0)</samp>configDefaults.reporters - by @hi-ogawa and Claude Sonnet 4.6 in https://github.com/vitest-dev/vitest/issues/10219 <samp>(083f6)</samp>logger.formatError - by @hi-ogawa and Codex in https://github.com/vitest-dev/vitest/issues/10268 <samp>(2c5f3)</samp>ToMatchScreenshotResolvePath - by @macarie and @sheremet-va in https://github.com/vitest-dev/vitest/issues/10138 <samp>(16654)</samp>node:child_process and node:worker_threads contexts - by @AriPerkkio in https://github.com/vitest-dev/vitest/issues/9976 <samp>(9baa5)</samp>sequence.concurrent: true with top-level test(..., { concurrent: false }) + depreacte sequential test API and options - by @hi-ogawa, Codex and @sheremet-va in https://github.com/vitest-dev/vitest/issues/10194 <samp>(9387f)</samp>tags options should overwrite inherited suite options + inherit suite options in task API - by @hi-ogawa and Codex in https://github.com/vitest-dev/vitest/issues/10216 <samp>(457db)</samp>Replace loupe.inspect with pretty-format - by @hi-ogawa, Claude Sonnet 4.6 and Codex in https://github.com/vitest-dev/vitest/issues/9609 (3f802)
loupe.inspect with pretty-format - by @hi-ogawa, Claude Sonnet 4.6 and Codex in https://github.com/vitest-dev/vitest/issues/9609 <samp>(3f802)</samp>test.for/each title $ variable (take 2) - by @hi-ogawa in https://github.com/vitest-dev/vitest/issues/10170 <samp>(04d37)</samp>include/exclude globs too eager - by @AriPerkkio in https://github.com/vitest-dev/vitest/issues/9818 <samp>(edacb)</samp>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>createReport and .vitest report directory convention - by @AriPerkkio in https://github.com/vitest-dev/vitest/issues/9993 <samp>(72a6d)</samp>test.fails - by @hi-ogawa in https://github.com/vitest-dev/vitest/issues/10090 <samp>(e1aa7)</samp>Revive global concurrency limit for test lifecycle [backport to v4] - by @sheremet-va and @hi-ogawa in #10992 (5146d)
browser : Check fs access in builtin commands [backport to v4] - by @hi-ogawa , Hiroshi Ogawa and OpenCode (claude-opus-4-8) in #10680 (5c18d)
Fix importOriginal with optimizer and query import [backport to v4] - by Hiroshi Ogawa , David Harris , Codex and Vladimir in #10546 (a5180)
importOriginal with optimizer and query import [backport to v4] - by Hiroshi Ogawa, David Harris, Codexand Vladimir in #10546 (a5180)Disable client cdp API when allowWrite/allowExec: false [backport to v4] - by @hi-ogawa and Codex in https://github.com/vitest-dev/vitest/issues/10450
cdp API when allowWrite/allowExec: false [backport to v4] - by @hi-ogawa and Codex in https://github.com/vitest-dev/vitest/issues/10450 <samp>(e4067)</samp>runner: Limit concurrency per task branch in addition to per leaf callbacks (backport) - by @hi-ogawa in https://github.com/vitest-dev/vitest/issues/1
browser: Provide project reference in ToMatchScreenshotResolvePath - by @macarie and @sheremet-va in https://github.com/vitest-dev/vitest/issues/10138
ToMatchScreenshotResolvePath - by @macarie and @sheremet-va in https://github.com/vitest-dev/vitest/issues/10138 <samp>(31882)</samp>sequence.concurrent: true with top-level test(..., { concurrent: false }) + depreacte sequential test API and options - by @hi-ogawa, Codex and @sheremet-va in https://github.com/vitest-dev/vitest/issues/10196 <samp>(2847d)</samp>coverage: Istanbul to support instrumenter option - by @BartWaardenburg and @AriPerkkio in https://github.com/vitest-dev/vitest/issues/10119 (0e0ff)
instrumenter option - by @BartWaardenburg and @AriPerkkio in https://github.com/vitest-dev/vitest/issues/10119 <samp>(0e0ff)</samp>vi.defineHelper called as object method - by @hi-ogawa in https://github.com/vitest-dev/vitest/issues/10163 <samp>(122c2)</samp>agent reporter to minimal - by @sheremet-va in https://github.com/vitest-dev/vitest/issues/10157 <samp>(663b9)</samp>Default to text reporter skipFull if agent detected - by @hi-ogawa in https://github.com/vitest-dev/vitest/issues/10018 (53757)
skipFull if agent detected - by @hi-ogawa in https://github.com/vitest-dev/vitest/issues/10018 <samp>(53757)</samp>assertion as a public field - by @sheremet-va in https://github.com/vitest-dev/vitest/issues/10095 <samp>(a120e)</samp>expect(..., message) consistent as error message prefix - by @hi-ogawa and Codex in https://github.com/vitest-dev/vitest/issues/10068 <samp>(a1b5f)</samp>Add experimental.preParse flag - by @sheremet-va in https://github.com/vitest-dev/vitest/issues/10070 (78273)
experimental.preParse flag - by @sheremet-va in https://github.com/vitest-dev/vitest/issues/10070 <samp>(78273)</samp>browser.locators.exact option - by @sheremet-va in https://github.com/vitest-dev/vitest/issues/10013 <samp>(48799)</samp>TestAttachment.bodyEncoding - by @hi-ogawa in https://github.com/vitest-dev/vitest/issues/9969 <samp>(89ca0)</samp>expect.poll interval - by @hi-ogawa and Claude Sonnet 4.6 in https://github.com/vitest-dev/vitest/issues/10022 <samp>(3f5bf)</samp>@vitest/coverage-v8 and @vitest/coverage-istanbul as optional dependency - by @alan-agius4 in https://github.com/vitest-dev/vitest/issues/10025 <samp>(146d4)</samp>defineHelper for webkit async stack trace + update playwright 1.59.0 - by @hi-ogawa in https://github.com/vitest-dev/vitest/issues/10036 <samp>(5a5fa)</samp>JestExtendError.context from verbose error reporting - by @hi-ogawa in https://github.com/vitest-dev/vitest/issues/9983 <samp>(66751)</samp>vitest - by @hi-ogawa and Codex in https://github.com/vitest-dev/vitest/issues/10042 <samp>(691d3)</samp>This release bumps Vitest's flatted version and removes version pinning to resolve flatted's CVE related issues (https://github.com/vitest-dev/vitest/
This release bumps Vitest's flatted version and removes version pinning to resolve flatted's CVE related issues (https://github.com/vitest-dev/vitest/issues/9975).
setupFiles from parent directory - by @hi-ogawa in https://github.com/vitest-dev/vitest/issues/9960 <samp>(7aa93)</samp>toMatchScreenshot can't capture a stable screenshot - by @macarie in https://github.com/vitest-dev/vitest/issues/9847 <samp>(faace)</samp>coverageConfigDefaults values and types - by @Arthie in https://github.com/vitest-dev/vitest/issues/9940 <samp>(b3c99)</samp>Expose matchesTags to test if the current filter matches tags - by @sheremet-va in https://github.com/vitest-dev/vitest/issues/9913 (eec53)
matchesTags to test if the current filter matches tags - by @sheremet-va in https://github.com/vitest-dev/vitest/issues/9913 <samp>(eec53)</samp>experimental.vcsProvider - by @sheremet-va in https://github.com/vitest-dev/vitest/issues/9928 <samp>(56115)</samp>TestProject.testFilesList internal properly - by @sapphi-red in https://github.com/vitest-dev/vitest/issues/9867 <samp>(54f26)</samp>use - by @oilater in https://github.com/vitest-dev/vitest/issues/9831 and https://github.com/vitest-dev/vitest/issues/9861 <samp>(633ae)</samp>vi.advanceTimers to the preview provider - by @sheremet-va in https://github.com/vitest-dev/vitest/issues/9891 <samp>(1bc3e)</samp>--standalone mode without running tests - by @sheremet-va in https://github.com/vitest-dev/vitest/issues/9911 <samp>(e78ad)</samp>body - by @sheremet-va in https://github.com/vitest-dev/vitest/issues/9912 <samp>(6fdb2)</samp>retry.condition RegExp serialization issue - by @nstepien and @hi-ogawa in https://github.com/vitest-dev/vitest/issues/9942 <samp>(7b605)</samp>test return as tests - by @sheremet-va in https://github.com/vitest-dev/vitest/issues/9871 <samp>(141e7)</samp>Deprecate several vitest/* entry points - by @sheremet-va in https://github.com/vitest-dev/vitest/issues/9347 (fd459)
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.
setTickMode to timer controls - by @atscott and @sheremet-va in https://github.com/vitest-dev/vitest/issues/8726 <samp>(4b480)</samp>toTestSpecification to reported tasks - by @sheremet-va in https://github.com/vitest-dev/vitest/issues/9464 <samp>(1a470)</samp>vi.mock or vi.hoisted are declared outside of top level of the module - by @sheremet-va in https://github.com/vitest-dev/vitest/issues/9387 <samp>(5db54)</samp>aroundEach and aroundAll hooks - by @sheremet-va in https://github.com/vitest-dev/vitest/issues/9450 <samp>(2a8cb)</samp>new or all in --update flag - by @sheremet-va in https://github.com/vitest-dev/vitest/issues/9543 <samp>(a5acf)</samp>meta in test options - by @sheremet-va in https://github.com/vitest-dev/vitest/issues/9535 <samp>(7d622)</samp>test.extend syntax - by @sheremet-va in https://github.com/vitest-dev/vitest/issues/9550 <samp>(e5385)</samp>vitest list to 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>--detect-async-leaks - by @AriPerkkio in https://github.com/vitest-dev/vitest/issues/9528 <samp>(c594d)</samp>mockThrow and mockThrowOnce - by @thor-juhasz and @sheremet-va in https://github.com/vitest-dev/vitest/issues/9512 <samp>(61917)</samp>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>launchOptions with connectOptions - by @hi-ogawa in https://github.com/vitest-dev/vitest/issues/9702 <samp>(f0ff1)</samp>page/locator.mark API to enhance playwright trace - by @hi-ogawa in https://github.com/vitest-dev/vitest/issues/9652 <samp>(d0ee5)</samp>test in experimental_parseSpecification - by @jgillick and Jeremy Gillick in https://github.com/vitest-dev/vitest/issues/9235 <samp>(2f367)</samp>createSpecification - by @sheremet-va in https://github.com/vitest-dev/vitest/issues/9336 <samp>(c8e6c)</samp>runTestFiles as alternative to runTestSpecifications - by @sheremet-va in https://github.com/vitest-dev/vitest/issues/9443 <samp>(43d76)</samp>allowWrite and allowExec options to api - by @sheremet-va in https://github.com/vitest-dev/vitest/issues/9350 <samp>(20e00)</samp>toTestSpecification - by @sheremet-va in https://github.com/vitest-dev/vitest/issues/9627 <samp>(6f17d)</samp>userEvent.wheel API - by @macarie in https://github.com/vitest-dev/vitest/issues/9188 <samp>(66080)</samp>filterNode option 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>detailsPanelPosition option and button - by @shairez in https://github.com/vitest-dev/vitest/issues/9525 <samp>(c8a31)</samp>findElement and enable strict mode in webdriverio and preview - by @sheremet-va in https://github.com/vitest-dev/vitest/issues/9677 <samp>(c3f37)</samp>ignore start/stop ignore hints - by @AriPerkkio in https://github.com/vitest-dev/vitest/issues/9204 <samp>(e59c9)</samp>coverage.changed option to report only changed files - by @kykim00 and @AriPerkkio in https://github.com/vitest-dev/vitest/issues/9521 <samp>(1d939)</samp>onModuleRunner hook to worker.init - by @sheremet-va in https://github.com/vitest-dev/vitest/issues/9286 <samp>(e977f)</samp>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>importDurations - by @hi-ogawa and Claude Opus 4.6 in https://github.com/vitest-dev/vitest/issues/9533 <samp>(3f7a5)</samp>beforeAll/afterAll - by @sheremet-va in https://github.com/vitest-dev/vitest/issues/9572 <samp>(c8339)</samp>agent reporter to reduce ai agent token usage - by @cpojer in https://github.com/vitest-dev/vitest/issues/9779 <samp>(3e9e0)</samp>retry options - by @MazenSamehR, Matan Shavit, @AriPerkkio and @sheremet-va in https://github.com/vitest-dev/vitest/issues/9370 <samp>(9e4cf)</samp>meta.url in createRequire - by @sheremet-va in https://github.com/vitest-dev/vitest/issues/9441 <samp>(e3422)</samp>external/noExternal during configEnvironment hook - by @hi-ogawa and Claude Opus 4.6 in https://github.com/vitest-dev/vitest/issues/9508 <samp>(59ea2)</samp>browser.isolate is used - by @sheremet-va in https://github.com/vitest-dev/vitest/issues/9410 <samp>(3d48e)</samp>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>.name from statically collected test - by @sheremet-va in https://github.com/vitest-dev/vitest/issues/9596 <samp>(b66ff)</samp>expect.soft - by @iumehara, @hi-ogawa and Claude Opus 4.6 in https://github.com/vitest-dev/vitest/issues/9231 <samp>(3eb2c)</samp>sequence.shuffle.tests is enabled - by @kaigritun, Kai Gritun and @sheremet-va in https://github.com/vitest-dev/vitest/issues/9576 <samp>(8182b)</samp>expect/src/utils from vitest - by @hi-ogawa in https://github.com/vitest-dev/vitest/issues/9616 <samp>(48739)</samp>--detect-async-leaks - by @AriPerkkio in https://github.com/vitest-dev/vitest/issues/9638 <samp>(9fd4c)</samp>aroundEach/All when inner aroundEach/All throws - by @hi-ogawa in https://github.com/vitest-dev/vitest/issues/9657 <samp>(4ec6c)</samp>aroundEach/All setup timed out - by @hi-ogawa in https://github.com/vitest-dev/vitest/issues/9670 <samp>(bb013)</samp>VitestRunnerConfig optional fields with SerializedConfig - by @hi-ogawa in https://github.com/vitest-dev/vitest/issues/9661 <samp>(79520)</samp>toBe* spy assertions in favor of toHaveBeen* (and toThrowError) - by @sheremet-va in https://github.com/vitest-dev/vitest/issues/9665 <samp>(4d390)</samp>aroundEach/All errors but aggregate them on runner - by @hi-ogawa in https://github.com/vitest-dev/vitest/issues/9673 <samp>(b6365)</samp>resolves/rejects chained assertion error - by @hi-ogawa in https://github.com/vitest-dev/vitest/issues/9679 <samp>(c6151)</samp>maxConcurrency - by @hi-ogawa in https://github.com/vitest-dev/vitest/issues/9653 <samp>(16d13)</samp>resolve.conditions for externals - by @hi-ogawa in https://github.com/vitest-dev/vitest/issues/9717 <samp>(1d498)</samp>mockObject change backwards compatible - by @sheremet-va in https://github.com/vitest-dev/vitest/issues/9744 <samp>(84c69)</samp>URL.name on jsdom - by @hi-ogawa in https://github.com/vitest-dev/vitest/issues/9767 <samp>(031f3)</samp>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>FixtureAccessError if suite hook accesses undefined fixture - by @sheremet-va in https://github.com/vitest-dev/vitest/issues/9786 <samp>(fc2ce)</samp>load or transform original module - by @hi-ogawa and Claude Opus 4.6 in https://github.com/vitest-dev/vitest/issues/9774 <samp>(a8216)</samp>hideSkippedTests should not hide test.todo - by @oilater in https://github.com/vitest-dev/vitest/issues/9562 and https://github.com/vitest-dev/vitest/issues/9781 <samp>(8181e)</samp>beforeEach hooks - by @hi-ogawa and Claude Opus 4.6 in https://github.com/vitest-dev/vitest/issues/9826 <samp>(99e52)</samp>performance.now to measure test timeout duration - by @hi-ogawa and Claude Opus 4.6 in https://github.com/vitest-dev/vitest/issues/9795 <samp>(f48a6)</samp>toMatchScreenshot passes - by @macarie in https://github.com/vitest-dev/vitest/issues/9289 <samp>(46aab)</samp>toMatchScreenshot - by @macarie in https://github.com/vitest-dev/vitest/issues/9552 <samp>(83ca0)</samp>--remote-debugging-address from chrome args - by @hi-ogawa and @AriPerkkio in https://github.com/vitest-dev/vitest/issues/9712 <samp>(f09bb)</samp>ensureAwaited - by @sheremet-va in https://github.com/vitest-dev/vitest/issues/9732 <samp>(97685)</samp>getCDPSession and cdp() - by @AriPerkkio in https://github.com/vitest-dev/vitest/issues/9716 <samp>(689a2)</samp>deepEqual in the config because it's not serializable - by @sheremet-va in https://github.com/vitest-dev/vitest/issues/9666 <samp>(9ee99)</samp>thresholds.autoUpdate to preserve ending whitespace - by @AriPerkkio in https://github.com/vitest-dev/vitest/issues/9436 <samp>(7e534)</samp>/config/#option hash 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>toMatchObject(Map/Set) should expect Map/Set on left hand side - by @hi-ogawa and Claude Opus 4.6 in https://github.com/vitest-dev/vitest/issues/9532 <samp>(381da)</samp>toThrow and make Error detection robust - by @hi-ogawa and Claude Opus 4.6 in https://github.com/vitest-dev/vitest/issues/9570 <samp>(de215)</samp>dot reporter leaves pending tests - by @AriPerkkio in https://github.com/vitest-dev/vitest/issues/9684 <samp>(4d793)</samp>undefined - by @sheremet-va in https://github.com/vitest-dev/vitest/issues/9511 <samp>(6f181)</samp>bench.reporters no longer gives type errors when passing file name string paths - by @Bertie690 in https://github.com/vitest-dev/vitest/issues/9695 <samp>(093c8)</samp>Add page/locator.mark API to enhance playwright trace - by @hi-ogawa in https://github.com/vitest-dev/vitest/issues/9652 (d0ee5)
page/locator.mark API to enhance playwright trace - by @hi-ogawa in https://github.com/vitest-dev/vitest/issues/9652 <samp>(d0ee5)</samp>URL.name on jsdom - by @hi-ogawa in https://github.com/vitest-dev/vitest/issues/9767 <samp>(031f3)</samp>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>FixtureAccessError if suite hook accesses undefined fixture - by @sheremet-va in https://github.com/vitest-dev/vitest/issues/9786 <samp>(fc2ce)</samp>load or transform original module - by @hi-ogawa and Claude Opus 4.6 in https://github.com/vitest-dev/vitest/issues/9774 <samp>(a8216)</samp>hideSkippedTests should not hide test.todo - by @oilater in https://github.com/vitest-dev/vitest/issues/9562 and https://github.com/vitest-dev/vitest/issues/9781 <samp>(8181e)</samp>getCDPSession and cdp() - by @AriPerkkio in https://github.com/vitest-dev/vitest/issues/9716 <samp>(689a2)</samp>Implement mockThrow and mockThrowOnce - by @thor-juhasz and @sheremet-va in https://github.com/vitest-dev/vitest/issues/9512 (61917)
mockThrow and mockThrowOnce - by @thor-juhasz and @sheremet-va in https://github.com/vitest-dev/vitest/issues/9512 <samp>(61917)</samp>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>launchOptions with connectOptions - by @hi-ogawa in https://github.com/vitest-dev/vitest/issues/9702 <samp>(f0ff1)</samp>findElement and enable strict mode in webdriverio and preview - by @sheremet-va in https://github.com/vitest-dev/vitest/issues/9677 <samp>(c3f37)</samp>coverage.changed option to report only changed files - by @kykim00 and @AriPerkkio in https://github.com/vitest-dev/vitest/issues/9521 <samp>(1d939)</samp>aroundEach/All errors but aggregate them on runner - by @hi-ogawa in https://github.com/vitest-dev/vitest/issues/9673 <samp>(b6365)</samp>resolves/rejects chained assertion error - by @hi-ogawa in https://github.com/vitest-dev/vitest/issues/9679 <samp>(c6151)</samp>maxConcurrency - by @hi-ogawa in https://github.com/vitest-dev/vitest/issues/9653 <samp>(16d13)</samp>resolve.conditions for externals - by @hi-ogawa in https://github.com/vitest-dev/vitest/issues/9717 <samp>(1d498)</samp>mockObject change backwards compatible - by @sheremet-va in https://github.com/vitest-dev/vitest/issues/9744 <samp>(84c69)</samp>--remote-debugging-address from chrome args - by @hi-ogawa and @AriPerkkio in https://github.com/vitest-dev/vitest/issues/9712 <samp>(f09bb)</samp>ensureAwaited - by @sheremet-va in https://github.com/vitest-dev/vitest/issues/9732 <samp>(97685)</samp>dot reporter leaves pending tests - by @AriPerkkio in https://github.com/vitest-dev/vitest/issues/9684 <samp>(4d793)</samp>bench.reporters no longer gives type errors when passing file name string paths - by @Bertie690 in https://github.com/vitest-dev/vitest/issues/9695 <samp>(093c8)</samp>Deprecate toBe* spy assertions in favor of toHaveBeen* (and toThrowError) - by @sheremet-va in https://github.com/vitest-dev/vitest/issues/9665 (4d390…
test.extend syntax - by @sheremet-va in https://github.com/vitest-dev/vitest/issues/9550 <samp>(e5385)</samp>vitest list to 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>--detect-async-leaks - by @AriPerkkio in https://github.com/vitest-dev/vitest/issues/9528 <samp>(c594d)</samp>toTestSpecification - by @sheremet-va in https://github.com/vitest-dev/vitest/issues/9627 <samp>(6f17d)</samp>beforeAll/afterAll - by @sheremet-va in https://github.com/vitest-dev/vitest/issues/9572 <samp>(c8339)</samp>.name from statically collected test - by @sheremet-va in https://github.com/vitest-dev/vitest/issues/9596 <samp>(b66ff)</samp>expect.soft - by @iumehara, @hi-ogawa and Claude Sonnet 4.5 in https://github.com/vitest-dev/vitest/issues/9231 <samp>(3eb2c)</samp>sequence.shuffle.tests is enabled - by @kaigritun, Kai Gritun and @sheremet-va in https://github.com/vitest-dev/vitest/issues/9576 <samp>(8182b)</samp>expect/src/utils from vitest - by @hi-ogawa in https://github.com/vitest-dev/vitest/issues/9616 <samp>(48739)</samp>--detect-async-leaks - by @AriPerkkio in https://github.com/vitest-dev/vitest/issues/9638 <samp>(9fd4c)</samp>aroundEach/All when inner aroundEach/All throws - by @hi-ogawa in https://github.com/vitest-dev/vitest/issues/9657 <samp>(4ec6c)</samp>aroundEach/All setup timed out - by @hi-ogawa in https://github.com/vitest-dev/vitest/issues/9670 <samp>(bb013)</samp>VitestRunnerConfig optional fields with SerializedConfig - by @hi-ogawa in https://github.com/vitest-dev/vitest/issues/9661 <samp>(79520)</samp>toBe* spy assertions in favor of toHaveBeen* (and toThrowError) - by @sheremet-va in https://github.com/vitest-dev/vitest/issues/9665 <samp>(4d390)</samp>deepEqual in the config because it's not serializable - by @sheremet-va in https://github.com/vitest-dev/vitest/issues/9666 <samp>(9ee99)</samp>/config/#option hash 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>toThrow and make Error detection robust - by @hi-ogawa and Claude Sonnet 4.5 in https://github.com/vitest-dev/vitest/issues/9570 <samp>(de215)</samp>Implement aroundEach and aroundAll hooks - by @sheremet-va in https://github.com/vitest-dev/vitest/issues/9450 (2a8cb)
aroundEach and aroundAll hooks - by @sheremet-va in https://github.com/vitest-dev/vitest/issues/9450 <samp>(2a8cb)</samp>new or all in --update flag - by @sheremet-va in https://github.com/vitest-dev/vitest/issues/9543 <samp>(a5acf)</samp>meta in test options - by @sheremet-va in https://github.com/vitest-dev/vitest/issues/9535 <samp>(7d622)</samp>allowWrite and allowExec options to api - by @sheremet-va in https://github.com/vitest-dev/vitest/issues/9350 <samp>(20e00)</samp>detailsPanelPosition option and button - by @shairez in https://github.com/vitest-dev/vitest/issues/9525 <samp>(c8a31)</samp>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>importDurations - by @hi-ogawa and Claude Opus 4.5 in https://github.com/vitest-dev/vitest/issues/9533 <samp>(3f7a5)</samp>external/noExternal during configEnvironment hook - by @hi-ogawa and Claude Opus 4.5 in https://github.com/vitest-dev/vitest/issues/9508 <samp>(59ea2)</samp>browser.isolate is used - by @sheremet-va in https://github.com/vitest-dev/vitest/issues/9410 <samp>(3d48e)</samp>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>toMatchScreenshot - by @macarie in https://github.com/vitest-dev/vitest/issues/9552 <samp>(83ca0)</samp>toMatchObject(Map/Set) should expect Map/Set on left hand side - by @hi-ogawa and Claude Opus 4.5 in https://github.com/vitest-dev/vitest/issues/9532 <samp>(381da)</samp>undefined - by @sheremet-va in https://github.com/vitest-dev/vitest/issues/9511 <samp>(6f181)</samp>Deprecate unused types in matcher context - by @sheremet-va in https://github.com/vitest-dev/vitest/issues/9449 (20f87)
toTestSpecification to reported tasks - by @sheremet-va in https://github.com/vitest-dev/vitest/issues/9464 <samp>(1a470)</samp>vi.mock or vi.hoisted are declared outside of top level of the module - by @sheremet-va in https://github.com/vitest-dev/vitest/issues/9387 <samp>(5db54)</samp>filterNode option 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>thresholds.autoUpdate to preserve ending whitespace - by @AriPerkkio in https://github.com/vitest-dev/vitest/issues/9436 <samp>(7e534)</samp>Deprecate several vitest/* entry points - by @sheremet-va in https://github.com/vitest-dev/vitest/issues/9347 (fd459)
setTickMode to timer controls - by @atscott and @sheremet-va in https://github.com/vitest-dev/vitest/issues/8726 <samp>(4b480)</samp>test in experimental_parseSpecification - by @jgillick and Jeremy Gillick in https://github.com/vitest-dev/vitest/issues/9235 <samp>(2f367)</samp>createSpecification - by @sheremet-va in https://github.com/vitest-dev/vitest/issues/9336 <samp>(c8e6c)</samp>runTestFiles as alternative to runTestSpecifications - by @sheremet-va in https://github.com/vitest-dev/vitest/issues/9443 <samp>(43d76)</samp>userEvent.wheel API - by @macarie in https://github.com/vitest-dev/vitest/issues/9188 <samp>(66080)</samp>ignore start/stop ignore hints - by @AriPerkkio in https://github.com/vitest-dev/vitest/issues/9204 <samp>(e59c9)</samp>onModuleRunner hook to worker.init - by @sheremet-va in https://github.com/vitest-dev/vitest/issues/9286 <samp>(e977f)</samp>retry options - by @MazenSamehR, Matan Shavit, @AriPerkkio and @sheremet-va in https://github.com/vitest-dev/vitest/issues/9370 <samp>(9e4cf)</samp>meta.url in createRequire - by @sheremet-va in https://github.com/vitest-dev/vitest/issues/9441 <samp>(e3422)</samp>toMatchScreenshot passes - by @macarie in https://github.com/vitest-dev/vitest/issues/9289 <samp>(46aab)</samp>experimental: Add onModuleRunner hook to worker.init - by @sheremet-va in https://github.com/vitest-dev/vitest/issues/9286 (ea837)
onModuleRunner hook to worker.init - by @sheremet-va in https://github.com/vitest-dev/vitest/issues/9286 <samp>(ea837)</samp>meta.url in createRequire - by @sheremet-va in https://github.com/vitest-dev/vitest/issues/9441 <samp>(e0572)</samp>Support openTelemetry for browser mode - by @hi-ogawa in https://github.com/vitest-dev/vitest/issues/9180 (1ec3a)
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>process.env and import.meta.env defines in inline project - by @hi-ogawa in https://github.com/vitest-dev/vitest/issues/9239 <samp>(b70c9)</samp>ErrorEvent.message when unhandled ErrorEvent.error is null - by @hi-ogawa in https://github.com/vitest-dev/vitest/issues/9322 <samp>(5d84e)</samp>fileParallelism on an instance - by @sheremet-va in https://github.com/vitest-dev/vitest/issues/9328 <samp>(15006)</samp>istanbul-lib-source-maps usage - by @AriPerkkio in https://github.com/vitest-dev/vitest/issues/9344 <samp>(b0940)</samp>Log deprecated test.poolOptions if it's set - by @sheremet-va in https://github.com/vitest-dev/vitest/issues/9226 (f7f6a)
process.versions stub - by @AriPerkkio in https://github.com/vitest-dev/vitest/issues/9174 <samp>(78cfb)</samp>test.poolOptions if it's set - by @sheremet-va in https://github.com/vitest-dev/vitest/issues/9226 <samp>(f7f6a)</samp>recordArtifact from the vitest package - by @macarie in https://github.com/vitest-dev/vitest/issues/9186 <samp>(01c56)</samp>import.meta.env define - by @hi-ogawa in https://github.com/vitest-dev/vitest/issues/9205 <samp>(01a9a)</samp>setupEnvironment for custom pools - by @AriPerkkio in https://github.com/vitest-dev/vitest/issues/9187 <samp>(5d26b)</samp>cache: Add opt-out on a plugin level, fix internal root cache - by @sheremet-va in https://github.com/vitest-dev/vitest/issues/9154 (a68f7)
optimizeDeps.rolldownOptions to fix depreated warning + fix ssr.external: true - by @hi-ogawa in https://github.com/vitest-dev/vitest/issues/9121 <samp>(fd8bd)</samp>deps.optimizer - by @hi-ogawa in https://github.com/vitest-dev/vitest/issues/9125 <samp>(4c754)</samp>toMatchScreenshot only once when used with expect.element - by @macarie in https://github.com/vitest-dev/vitest/issues/9132 <samp>(0d2e7)</samp>--browser.provider from docs - by @sheremet-va in https://github.com/vitest-dev/vitest/issues/9115 <samp>(120b3)</samp>currentTestName in extended matchers - by @macarie in https://github.com/vitest-dev/vitest/issues/9106 <samp>(e4345)</samp>CTRL+c forceful exits - by @AriPerkkio in https://github.com/vitest-dev/vitest/issues/9140 <samp>(d57d8)</samp>browser: Expose utils.configurePrettyDOM - by @sheremet-va in https://github.com/vitest-dev/vitest/issues/9103 (2cc34)
utils.configurePrettyDOM - by @sheremet-va in https://github.com/vitest-dev/vitest/issues/9103 <samp>(2cc34)</samp>toMatchScreenshot with comparison slider - by @macarie in https://github.com/vitest-dev/vitest/issues/8813 <samp>(c37c2)</samp>collect to import, remove prepare - by @sheremet-va in https://github.com/vitest-dev/vitest/issues/9091 <samp>(1256b)</samp>onCancel on rpc destroy - by @AriPerkkio in https://github.com/vitest-dev/vitest/issues/9088 <samp>(f5b72)</samp>VITEST_POOL_ID + VITEST_WORKER_ID before environment setup - by @AriPerkkio in https://github.com/vitest-dev/vitest/issues/9085 <samp>(37918)</samp>postMessage to send ports to workers - by @whitphx and @AriPerkkio in https://github.com/vitest-dev/vitest/issues/9078 <samp>(9d176)</samp>debug with obug - by @sxzz and @AriPerkkio in https://github.com/vitest-dev/vitest/issues/9057 <samp>(acc51)</samp>Don't use type from Vite 7.1 - by @sheremet-va in https://github.com/vitest-dev/vitest/issues/9071 (6356b)
fsCacheModule is enabled, read from the memory when possible - by @sheremet-va in https://github.com/vitest-dev/vitest/issues/9076 <samp>(6b9a1)</samp>Inherit fsModuleCachePath by default - by @sheremet-va in https://github.com/vitest-dev/vitest/issues/9063 (9a8bc)
fsModuleCachePath by default - by @sheremet-va in https://github.com/vitest-dev/vitest/issues/9063 <samp>(9a8bc)</samp>@opentelemetry/api in public types - by @sheremet-va in https://github.com/vitest-dev/vitest/issues/9066 <samp>(e944a)</samp>api: Add extensible test artifact API - by @macarie in https://github.com/vitest-dev/vitest/issues/8987 (77292)
task in MatchState - by @macarie in https://github.com/vitest-dev/vitest/issues/9022 <samp>(afd1f)</samp>Remove onCancel when worker is terminated - by @sheremet-va in https://github.com/vitest-dev/vitest/issues/9033 (6d7f0)
onCancel when worker is terminated - by @sheremet-va in https://github.com/vitest-dev/vitest/issues/9033 <samp>(6d7f0)</samp>onFinished) - by @userquin in https://github.com/vitest-dev/vitest/issues/8975 <samp>(f56dc)</samp>expect: Add Set support to toBeOneOf - by @tim-we and @sheremet-va in https://github.com/vitest-dev/vitest/issues/8906 (a415d)
Request - by @sheremet-va in https://github.com/vitest-dev/vitest/issues/8985 <samp>(506a9)</samp>Workaround noExternal merging bug on Vite 6 - by @hi-ogawa in https://github.com/vitest-dev/vitest/issues/8950 (bcb13)
noExternal merging bug on Vite 6 - by @hi-ogawa in https://github.com/vitest-dev/vitest/issues/8950 <samp>(bcb13)</samp>expect.element() - by @StyleShit in https://github.com/vitest-dev/vitest/issues/8954 <samp>(9638d)</samp>vi.fn(), fix types for vi.spyOn(obj, class) - by @sheremet-va in https://github.com/vitest-dev/vitest/issues/8956 <samp>(75e7f)</samp>browser: Inherit isolate option, deprecate browser.isolate/browser.fileParallelism - by @sheremet-va in https://github.com/vitest-dev/vitest/issues/88…
process in case global is overwritten - by @AriPerkkio in https://github.com/vitest-dev/vitest/issues/8916 <samp>(6240d)</samp>isolate: false - by @sheremet-va in https://github.com/vitest-dev/vitest/issues/8915 <samp>(c9078)</samp>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>isolate option, deprecate browser.isolate/browser.fileParallelism - by @sheremet-va in https://github.com/vitest-dev/vitest/issues/8890 <samp>(9d2b4)</samp>--execArgv as array - by @AriPerkkio in https://github.com/vitest-dev/vitest/issues/8924 <samp>(751c3)</samp>URL.createObjectURL, FormData.set(prop, blob) - by @sheremet-va in https://github.com/vitest-dev/vitest/issues/8935 <samp>(a1b73)</samp>--require argument when running in deno - by @pi0 in https://github.com/vitest-dev/vitest/issues/8897 <samp>(d41fa)</samp>tsc - by @AriPerkkio in https://github.com/vitest-dev/vitest/issues/8920 <samp>(fdb2e)</samp>Array.from call - by @Connormiha in https://github.com/vitest-dev/vitest/issues/8907 <samp>(b6014)</samp>Don't merge errors with different diffs for reporting - by @hi-ogawa in https://github.com/vitest-dev/vitest/issues/8871 (3e19f)
isolate and fileParallelism are false - by @sheremet-va in https://github.com/vitest-dev/vitest/issues/8889 <samp>(31706)</samp>FormData to Request - by @sheremet-va in https://github.com/vitest-dev/vitest/issues/8880 <samp>(197ca)</samp>Respect ssr.noExternal when externalizing dependencies, fix Svelte and Astro - by @sheremet-va in https://github.com/vitest-dev/vitest/issues/8862 (a4
ssr.noExternal when externalizing dependencies, fix Svelte and Astro - by @sheremet-va in https://github.com/vitest-dev/vitest/issues/8862 <samp>(a4f86)</samp>Locator type in selectOptions element parameter - by @rzzf and @sheremet-va in https://github.com/vitest-dev/vitest/issues/8848 <samp>(7ee28)</samp>getBuiltins unconditionally - by @sapphi-red in https://github.com/vitest-dev/vitest/issues/8863 <samp>(0e858)</samp>groupId to groupOrder in error message - by @Yohannfra in https://github.com/vitest-dev/vitest/issues/8856 <samp>(b9aab)</samp>--no-isolate --maxWorkers=1 - by @AriPerkkio in https://github.com/vitest-dev/vitest/issues/8835 <samp>(584aa)</samp>Correct typo - by @benmccann in https://github.com/vitest-dev/vitest/issues/8796 (ede1f)
node: prefix - by @sheremet-va in https://github.com/vitest-dev/vitest/issues/8829 <samp>(06208)</samp>MaxListenersExceededWarning - by @AriPerkkio in https://github.com/vitest-dev/vitest/issues/8820 <samp>(d1bff)</samp>stdio to logger - by @AriPerkkio in https://github.com/vitest-dev/vitest/issues/8809 <samp>(fb95f)</samp>vi.mocked utility - by @sheremet-va in https://github.com/vitest-dev/vitest/issues/8839 <samp>(f8756)</samp>isolate: false - by @AriPerkkio in https://github.com/vitest-dev/vitest/issues/8821 <samp>(573dc)</samp>Preserve reporter options from config when CLI reporters override them - by @Copilot and sheremet-va in https://github.com/vitest-dev/vitest/issues/87
Don't print the deprecation notice in node_modules - by @sheremet-va in https://github.com/vitest-dev/vitest/issues/8779 (588f7)
length - by @sheremet-va in https://github.com/vitest-dev/vitest/issues/8778 <samp>(d4c2b)</samp>restoreMocks and mockReset are set in the config - by @sheremet-va in https://github.com/vitest-dev/vitest/issues/8781 <samp>(2eedb)</samp>Move the getBuiltins check - by @sheremet-va in https://github.com/vitest-dev/vitest/issues/8765 (81000)
getBuiltins check - by @sheremet-va in https://github.com/vitest-dev/vitest/issues/8765 <samp>(81000)</samp>Remove deprecated getSourceMap - by @sheremet-va in https://github.com/vitest-dev/vitest/issues/8194 (ff934)
Vitest 4.0 is out!
To stay updated, read our blog post and check the migration guide.
'basic' reporter - by @AriPerkkio in https://github.com/vitest-dev/vitest/issues/7884 <samp>(82fcf)</samp>vitest/node exports - by @sheremet-va in https://github.com/vitest-dev/vitest/issues/8197 <samp>(dc848)</samp>vitest/node instead - by @sheremet-va in https://github.com/vitest-dev/vitest/issues/8200 <samp>(1e60c)</samp>workspace option in favor of projects - by @sheremet-va in https://github.com/vitest-dev/vitest/issues/8218 <samp>(76fb7)</samp>--standalone when CLI filename filter is used - by @AriPerkkio in https://github.com/vitest-dev/vitest/issues/8262 <samp>(013bf)</samp>minWorkers and set it automatically to 0 in non watch mode - by @sheremet-va in https://github.com/vitest-dev/vitest/issues/8454 <samp>(2c2d1)</samp>tree reporter - by @sheremet-va and @AriPerkkio in https://github.com/vitest-dev/vitest/issues/8500 <samp>(25fd3)</samp>tinypool - by @AriPerkkio and @sheremet-va in https://github.com/vitest-dev/vitest/issues/8705 <samp>(4822d)</samp>todo if no function is passed down to test or describe - by @sheremet-va in https://github.com/vitest-dev/vitest/issues/8346 <samp>(1a81c)</samp>onUnhandledError callback - by @sheremet-va in https://github.com/vitest-dev/vitest/issues/8162 <samp>(924cb)</samp>expect.assert for type narrowing - by @sheremet-va in https://github.com/vitest-dev/vitest/issues/8695 <samp>(fe589)</samp>displayAnnotations option to github-options - by @sheremet-va in https://github.com/vitest-dev/vitest/issues/8706 <samp>(4a66d)</samp>experimental_parseSpecifications - by @sheremet-va in https://github.com/vitest-dev/vitest/issues/8408 <samp>(fdeb2)</samp>enableCoverage and disableCoverage methods - by @sheremet-va and @AriPerkkio in https://github.com/vitest-dev/vitest/issues/8412 <samp>(61eb7)</samp>getGlobalTestNamePattern method - by @sheremet-va in https://github.com/vitest-dev/vitest/issues/8438 <samp>(bdb70)</samp>relativeModuleId to TestModule - by @sheremet-va in https://github.com/vitest-dev/vitest/issues/8505 <samp>(3be09)</samp>getSeed method - by @sheremet-va in https://github.com/vitest-dev/vitest/issues/8592 <samp>(438c4)</samp>toBeInViewport utility method to assert element is in viewport or not - by @Shinyaigeek in https://github.com/vitest-dev/vitest/issues/8234 <samp>(ceed5)</samp>vitest init cli command - by @thejackshelton in https://github.com/vitest-dev/vitest/issues/8330 <samp>(1638b)</samp>toMatchScreenshot for Visual Regression Testing - by @macarie in https://github.com/vitest-dev/vitest/issues/8041 <samp>(d45f9)</samp>trackUnhandledErrors option - by @sheremet-va in https://github.com/vitest-dev/vitest/issues/8386 <samp>(c0ec0)</samp>length property to locators, toHaveLength now accepts locators - by @sheremet-va in https://github.com/vitest-dev/vitest/issues/8512 <samp>(2308c)</samp>options on BrowserProviderOption - by @sheremet-va in https://github.com/vitest-dev/vitest/issues/8609 <samp>(0d0e5)</samp>--inspect option in webdriverio - by @sheremet-va in https://github.com/vitest-dev/vitest/issues/8613 <samp>(38adc)</samp>autoUpdate to support percentage formatting - by @Battjmo and @AriPerkkio in https://github.com/vitest-dev/vitest/issues/8456 <samp>(99e01)</samp>toBeNullable expect function to check provided value is nullish - by @Shinyaigeek and @sheremet-va in https://github.com/vitest-dev/vitest/issues/8294 <samp>(eeec5)</samp>automocker entry - by @sheremet-va in https://github.com/vitest-dev/vitest/issues/8301 <samp>(e9c92)</samp>test.extend - by @AriPerkkio in https://github.com/vitest-dev/vitest/issues/8278 <samp>(43977)</samp>--changed flag support to vitest list command - by @haakonjackfloat in https://github.com/vitest-dev/vitest/issues/8270 and https://github.com/vitest-dev/vitest/issues/8272 <samp>(e71a5)</samp>browser - by @sheremet-va in https://github.com/vitest-dev/vitest/issues/8334 <samp>(0417a)</samp>oxc instead of esbuild on rolldown-vite - by @hi-ogawa in https://github.com/vitest-dev/vitest/issues/8378 <samp>(e922e)</samp>stacks property in Node.js context - by @sheremet-va in https://github.com/vitest-dev/vitest/issues/8392 <samp>(b825e)</samp>import.meta.resolve on Vite 7 - by @hi-ogawa in https://github.com/vitest-dev/vitest/issues/8493 <samp>(549d3)</samp>expect.poll assertion fails - by @sheremet-va in https://github.com/vitest-dev/vitest/issues/8483 <samp>(fb450)</samp>useFakeTimers is called multiple times - by @sheremet-va in https://github.com/vitest-dev/vitest/issues/8504 <samp>(ed7e3)</samp>expect.extend matchers - by @lzl0304 in https://github.com/vitest-dev/vitest/issues/8520 <samp>(96945)</samp>globalSetup files - by @sheremet-va in https://github.com/vitest-dev/vitest/issues/8534 <samp>(8978a)</samp>$ and % formatting to test.for/each title - by @hi-ogawa in https://github.com/vitest-dev/vitest/issues/8557 <samp>(ea6d7)</samp>"./*" with specific files in vitest package - by @hi-ogawa in https://github.com/vitest-dev/vitest/issues/8560 <samp>(ce746)</samp>optimizeDeps.include for browser mode - by @jake-danton in https://github.com/vitest-dev/vitest/issues/8570 <samp>(cdcf7)</samp>engines field to drop Node 18 support - by @sheremet-va in https://github.com/vitest-dev/vitest/issues/8608 <samp>(9a0bf)</samp>base option doesn't crash vitest - by @sheremet-va in https://github.com/vitest-dev/vitest/issues/8760 <samp>(9f0ec)</samp>locator.element() returns HTMLElement or SVGElement - by @sheremet-va in https://github.com/vitest-dev/vitest/issues/8440 <samp>(c1ac1)</samp>vite directly - by @sheremet-va in https://github.com/vitest-dev/vitest/issues/8541 <samp>(d7fca)</samp>not.toBeInTheDocument() - by @sheremet-va in https://github.com/vitest-dev/vitest/issues/8751 <samp>(f5d06)</samp>objectContaining expect utility to have more compatibility to jest's one - by @Shinyaigeek in https://github.com/vitest-dev/vitest/issues/8241 <samp>(480be)</samp>--project filter - by @gtbuchanan in https://github.com/vitest-dev/vitest/issues/7885 <samp>(761be)</samp>vitest:coverage-transform plugin - by @AriPerkkio in https://github.com/vitest-dev/vitest/issues/8477 <samp>(ff517)</samp>coverage.exclude - by @sheremet-va in https://github.com/vitest-dev/vitest/issues/8731 <samp>(c9c30)</samp>regexpHoistable to allow whitespace before parentheses - by @cszhjh in https://github.com/vitest-dev/vitest/issues/8231 <samp>(a0f9a)</samp>resolvedSources correctly - by @sheremet-va in https://github.com/vitest-dev/vitest/issues/8736 <samp>(8fc52)</samp>vitest --standalone - by @AriPerkkio in https://github.com/vitest-dev/vitest/issues/8248 <samp>(37cc2)</samp>config.include option with config.browser.instances[].include option if it is specified - by @Shinyaigeek in https://github.com/vitest-dev/vitest/issues/8260 <samp>(010fc)</samp>process.title - by @sheremet-va in https://github.com/vitest-dev/vitest/issues/8453 <samp>(0a766)</samp>@vitest/expect - by @sheremet-va in https://github.com/vitest-dev/vitest/issues/8461 <samp>(cc98c)</samp>workerId from a global object - by @sheremet-va in https://github.com/vitest-dev/vitest/issues/8507 <samp>(46b13)</samp>meta.resolve flag instead of a custom loader - by @sheremet-va in https://github.com/vitest-dev/vitest/issues/8567 <samp>(2e063)</samp>Rewrite pools without tinypool - by @AriPerkkio and @sheremet-va in https://github.com/vitest-dev/vitest/issues/8705 (4822d)
tinypool - by @AriPerkkio and @sheremet-va in https://github.com/vitest-dev/vitest/issues/8705 <samp>(4822d)</samp>not.toBeInTheDocument() - by @sheremet-va in https://github.com/vitest-dev/vitest/issues/8751 <samp>(f5d06)</samp>coverage.exclude - by @sheremet-va in https://github.com/vitest-dev/vitest/issues/8731 <samp>(c9c30)</samp>resolvedSources correctly - by @sheremet-va in https://github.com/vitest-dev/vitest/issues/8736 <samp>(8fc52)</samp>Support expect.assert for type narrowing - by @sheremet-va in https://github.com/vitest-dev/vitest/issues/8695 (fe589)
expect.assert for type narrowing - by @sheremet-va in https://github.com/vitest-dev/vitest/issues/8695 <samp>(fe589)</samp>displayAnnotations option to github-options - by @sheremet-va in https://github.com/vitest-dev/vitest/issues/8706 <samp>(4a66d)</samp>browser: Allow importing BrowserCommand if no browser package is installed - by @sheremet-va in https://github.com/vitest-dev/vitest/issues/8666 (95c3
browser: Exclude deprecated context import from optimization - by @sheremet-va in https://github.com/vitest-dev/vitest/issues/8658 (a96ea)
*No significant changes* ##### View changes on GitHub
No significant changes
Introduce separate packages for browser mode providers - by @sheremet-va in https://github.com/vitest-dev/vitest/issues/8629 (0dc93)
Expose options on BrowserProviderOption - by @sheremet-va in https://github.com/vitest-dev/vitest/issues/8609 (0d0e5)
options on BrowserProviderOption - by @sheremet-va in https://github.com/vitest-dev/vitest/issues/8609 <samp>(0d0e5)</samp>--inspect option in webdriverio - by @sheremet-va in https://github.com/vitest-dev/vitest/issues/8613 <samp>(38adc)</samp>Remove deprecated order from test() API - by @sheremet-va in https://github.com/vitest-dev/vitest/issues/8594 (4d419)
getSeed method - by @sheremet-va in https://github.com/vitest-dev/vitest/issues/8592 <samp>(438c4)</samp>optimizeDeps.include for browser mode - by @jake-danton in https://github.com/vitest-dev/vitest/issues/8570 <samp>(cdcf7)</samp>engines field to drop Node 18 support - by @sheremet-va in https://github.com/vitest-dev/vitest/issues/8608 <samp>(9a0bf)</samp>meta.resolve flag instead of a custom loader - by @sheremet-va in https://github.com/vitest-dev/vitest/issues/8567 <samp>(2e063)</samp>Your coding agent can read these notes before it upgrades. Set up the MCP server →