NewYour coding agent can read the release notes before it upgrades.Set up the MCP server →
npm · #616 most downloaded on npm
Vitest test runner
Last release 1 months ago
18 Aug 2026
Ships fairly regularly
a new release about every 2 weeks
Nearly every release is documented
notes for 60 of the last 60 stable releases
Nothing withdrawn
no release was ever pulled
4 years old
194 releases · first in 2023
One column per quarter.
Update vulnerable test-exclude to v7 - by @AriPerkkio in https://github.com/vitest-dev/vitest/issues/5867 (0a715)
page.screenshot method - by @sheremet-va in https://github.com/vitest-dev/vitest/issues/5853 <samp>(81c42)</samp>test.for - by @hi-ogawa and @sheremet-va in https://github.com/vitest-dev/vitest/issues/5861 <samp>(c2380)</samp>test-exclude to v7 - by @AriPerkkio in https://github.com/vitest-dev/vitest/issues/5867 <samp>(0a715)</samp>poolOptions.<name>.isolate from forks options - by @AriPerkkio in https://github.com/vitest-dev/vitest/issues/5840 <samp>(a60a1)</samp>browser: Don't optimize Vitest dependencies - by @sheremet-va in https://github.com/vitest-dev/vitest/issues/5843 (f15b4)
Rename indexScripts to orchestratorScripts - by @sheremet-va in https://github.com/vitest-dev/vitest/issues/5842 (49f34)
preview provider when running in StackBlitz - by @userquin in https://github.com/vitest-dev/vitest/issues/5836 <samp>(76e13)</samp>Add meta to json output - by @sheremet-va in https://github.com/vitest-dev/vitest/issues/5802 (dd754)
click event - by @sheremet-va in https://github.com/vitest-dev/vitest/issues/5777 <samp>(839c3)</samp>thresholds.autoUpdate to support mergeConfig - by @AriPerkkio in https://github.com/vitest-dev/vitest/issues/5818 <samp>(7afb3)</samp>Restore the original viewport when unselecting the preset viewport - by @sheremet-va in https://github.com/vitest-dev/vitest/issues/5821 (5ebb3)
--merge-reports to support coverage - by @AriPerkkio in https://github.com/vitest-dev/vitest/issues/5736 (b7438)
--merge-reports to support coverage - by @AriPerkkio in https://github.com/vitest-dev/vitest/issues/5736 <samp>(b7438)</samp>--output-json - by @Joristdh in https://github.com/vitest-dev/vitest/issues/5745 <samp>(0766b)</samp>--exclude option - by @fregante in https://github.com/vitest-dev/vitest/issues/5782 <samp>(d6700)</samp>Nothing published for this version
Remove deprecated options - by @sheremet-va in https://github.com/vitest-dev/vitest/issues/5696 (5c308)
Change default pool to 'forks' - by @AriPerkkio in https://github.com/vitest-dev/vitest/issues/5047 (7f8f9)
pool to 'forks' - by @AriPerkkio in https://github.com/vitest-dev/vitest/issues/5047 <samp>(7f8f9)</samp>Remove the empty suite from the runner - by @sheremet-va in https://github.com/vitest-dev/vitest/issues/5435 (dbbbe)
coverage.ignoreEmptyLines by default - by @AriPerkkio in https://github.com/vitest-dev/vitest/issues/5543 <samp>(31994)</samp>Remote Code Execution when accessing a malicious website while Vitest API server is listening | CVE-2025-24964
This release includes security patches for:
Support standalone mode - by @sheremet-va in https://github.com/vitest-dev/vitest/issues/5565 (bdce0)
includeConsoleOutput and addFileAttribute in junit - by @hi-ogawa in https://github.com/vitest-dev/vitest/issues/5659 <samp>(2f913)</samp>resolveId('vitest') after buildStart - by @hi-ogawa in https://github.com/vitest-dev/vitest/issues/5646 <samp>(f5faf)</samp>toJSON for error serialization - by @hi-ogawa in https://github.com/vitest-dev/vitest/issues/5526 <samp>(19a21)</samp>*.test-d.* by default - by @MindfulPol in https://github.com/vitest-dev/vitest/issues/5634 <samp>(bfe8a)</samp>vite-node's wrapper only to executed files - by @AriPerkkio in https://github.com/vitest-dev/vitest/issues/5642 <samp>(c9883)</samp>Use package.json name for a workspace project if not provided - by @sheremet-va in https://github.com/vitest-dev/vitest/issues/5608 (48fba)
Check for null before storing in weakmap - by @sheremet-va (ce368)
api: startVitest() to accept stdout and stdin - by @AriPerkkio in https://github.com/vitest-dev/vitest/issues/5493 (780b1)
startVitest() to accept stdout and stdin - by @AriPerkkio in https://github.com/vitest-dev/vitest/issues/5493 <samp>(780b1)</samp>
startVitest API is experimental and doesn't follow semver.import.meta.env.PROD: false - by @hi-ogawa in https://github.com/vitest-dev/vitest/issues/5561 <samp>(9c649)</samp>onTestFinished in reverse order - by @sheremet-va in https://github.com/vitest-dev/vitest/issues/5598 <samp>(23f29)</samp>fileParallelism by default on browser pool - by @hi-ogawa in https://github.com/vitest-dev/vitest/issues/5528 <samp>(5c69f)</samp>v8-to-istanbul - by @AriPerkkio in https://github.com/vitest-dev/vitest/issues/5549 <samp>(df6a4)</samp>cleanOnRerun is disabled - by @AriPerkkio in https://github.com/vitest-dev/vitest/issues/5540 <samp>(ea3c1)</samp>thresholds to compare files relative to root - by @AriPerkkio in https://github.com/vitest-dev/vitest/issues/5574 <samp>(80265)</samp>toEqual and toMatchObject with circular references - by @hi-ogawa in https://github.com/vitest-dev/vitest/issues/5535 <samp>(9e641)</samp>Add configuration for diff truncation - by @willieho in https://github.com/vitest-dev/vitest/issues/5073 and https://github.com/vitest-dev/vitest/issu
describe calls not taking generic type parameters - by @aryaemami59 in https://github.com/vitest-dev/vitest/issues/5415 <samp>(16bac)</samp>process is mocked - by @AriPerkkio in https://github.com/vitest-dev/vitest/issues/5430 <samp>(0ec4d)</samp>toHaveBeenNthCalledWith error message when not called - by @hi-ogawa in https://github.com/vitest-dev/vitest/issues/5420 <samp>(e5253)</samp>isValidNodeImport to check "type": "module" first - by @hi-ogawa in https://github.com/vitest-dev/vitest/issues/5416 <samp>(6fb15)</samp>Deprecate cache.dir option - by @fenghan34 in https://github.com/vitest-dev/vitest/issues/5229 (d7e8b)
not - by @fenghan34 in https://github.com/vitest-dev/vitest/issues/5294 <samp>(b9d37)</samp>--project option - by @fenghan34 in https://github.com/vitest-dev/vitest/issues/5295 <samp>(201bd)</samp>shuffle.files and shuffle.tests options - by @fenghan34 in https://github.com/vitest-dev/vitest/issues/5281 <samp>(356db)</samp>cache.dir option - by @fenghan34 in https://github.com/vitest-dev/vitest/issues/5229 <samp>(d7e8b)</samp>--changed option - by @AriPerkkio in https://github.com/vitest-dev/vitest/issues/5314 <samp>(600b4)</samp>clearScreen cli flag - by @hi-ogawa in https://github.com/vitest-dev/vitest/issues/5241 <samp>(e1735)</samp>--project option - by @fenghan34 in https://github.com/vitest-dev/vitest/issues/5265 <samp>(d1a06)</samp>--inspect-brk to pause before execution - by @AriPerkkio in https://github.com/vitest-dev/vitest/issues/5355 <samp>(e77c5)</samp>magic-string to optimizeDeps.include - by @hi-ogawa in https://github.com/vitest-dev/vitest/issues/5278 <samp>(8f04e)</samp>reportsDirectory from removing user's project - by @AriPerkkio in https://github.com/vitest-dev/vitest/issues/5376 <samp>(07ec3)</samp>toContain/toMatch assertion error - by @hi-ogawa in https://github.com/vitest-dev/vitest/issues/5267 <samp>(8ee59)</samp>defines to support undefined values - by @AriPerkkio in https://github.com/vitest-dev/vitest/issues/5284 <samp>(5b58b)</samp>onConsoleLog return type - by @hi-ogawa in https://github.com/vitest-dev/vitest/issues/5337 <samp>(6d1b1)</samp>beforeAll and afterAll - by @fenghan34 in https://github.com/vitest-dev/vitest/issues/5288 <samp>(ce5ca)</samp>@vitest/coverage-v8 are used - by @AriPerkkio in https://github.com/vitest-dev/vitest/issues/5250 <samp>(29f98)</samp>vitest: Expose parseCLI method - by @sheremet-va in https://github.com/vitest-dev/vitest/issues/5248 (c793a)
Deprecate watchExclude - by @patak-dev in https://github.com/vitest-dev/vitest/issues/5171 (82885)
snapshotSerializers option - by @fenghan34 in https://github.com/vitest-dev/vitest/issues/5092 <samp>(5b102)</samp>poolOptions - by @penalosa in https://github.com/vitest-dev/vitest/issues/5221 <samp>(bc5b2)</samp>coverage.reportsDirectory with multiple directories - by @AriPerkkio in https://github.com/vitest-dev/vitest/issues/5056 <samp>(ae73f)</samp>--browser=<name> correctly - by @AriPerkkio in https://github.com/vitest-dev/vitest/issues/5179 <samp>(656e2)</samp>.tmp directory conflicts with --shard option - by @AriPerkkio in https://github.com/vitest-dev/vitest/issues/5184 <samp>(5749d)</samp>defineWorkspace - by @hi-ogawa in https://github.com/vitest-dev/vitest/issues/5089 <samp>(0bf52)</samp>jsdom variable - by @sheremet-va in https://github.com/vitest-dev/vitest/issues/5164 <samp>(0f898)</samp>optimizeDeps.disabled warnings on Vite 5.1 - by @hi-ogawa in https://github.com/vitest-dev/vitest/issues/5215 <samp>(1aecd)</samp>disableConsoleIntercept config - by @hi-ogawa in https://github.com/vitest-dev/vitest/issues/5074 <samp>(a55ad)</samp>Remove coverage/.tmp files after run - by @AriPerkkio in https://github.com/vitest-dev/vitest/issues/5008 (d53b8)
coverage/.tmp files after run - by @AriPerkkio in https://github.com/vitest-dev/vitest/issues/5008 <samp>(d53b8)</samp>toThrow(asymmetricMatcher) failure message - by @hi-ogawa in https://github.com/vitest-dev/vitest/issues/5000 <samp>(a199a)</samp>VITEST_POOL_ID - by @AriPerkkio in https://github.com/vitest-dev/vitest/issues/5002 <samp>(7d0a4)</samp>ignoreSourceErrors in run mode - by @hi-ogawa in https://github.com/vitest-dev/vitest/issues/5044 <samp>(6dae3)</samp>useFakeTimers to fake requestIdleCallback on non browser - by @hi-ogawa in https://github.com/vitest-dev/vitest/issues/5028 <samp>(a9a48)</samp>import.meta.resolve - by @AriPerkkio in https://github.com/vitest-dev/vitest/issues/5045 <samp>(cf564)</samp>Apply inlined workspace config to browser mode vite server - by @hi-ogawa in https://github.com/vitest-dev/vitest/issues/4947 (db01f)
thresholds.autoUpdate to work with arrow function configuration files - by @AriPerkkio in https://github.com/vitest-dev/vitest/issues/4959 <samp>(4b411)</samp>AsymmetricMatcher - by @hi-ogawa and @sheremet-va in https://github.com/vitest-dev/vitest/issues/4942 <samp>(06bae)</samp>await vi.hoisted - by @hi-ogawa in https://github.com/vitest-dev/vitest/issues/4962 <samp>(dcf2e)</samp>Support case-insensitive path matching in cli - by @tigranmk in https://github.com/vitest-dev/vitest/issues/3567 and https://github.com/vitest-dev/vit
--disable-console-intercept option to allow opting-out from automatic console log interception - by @hi-ogawa in https://github.com/vitest-dev/vitest/issues/4786 <samp>(43fa6)</samp>server.headers - by @hi-ogawa in https://github.com/vitest-dev/vitest/issues/4890 <samp>(55f53)</samp>testNamePattern config - by @hi-ogawa in https://github.com/vitest-dev/vitest/issues/4909 <samp>(4add9)</samp>objDisplay default truncate option for test.each title - by @hi-ogawa in https://github.com/vitest-dev/vitest/issues/4917 <samp>(9ae9d)</samp>process.exit is called inside the test - by @sheremet-va in https://github.com/vitest-dev/vitest/issues/4903 <samp>(8e6c1)</samp>pool and poolOptions on project level - by @AriPerkkio in https://github.com/vitest-dev/vitest/issues/4765 <samp>(e9fe4)</samp>Vi.mock breaks tests when using imported variables inside the factory - by @sheremet-va and Dunqing in https://github.com/vitest-dev/vitest/issues/487
slowTestThreshold to all reporters - by @hi-ogawa in https://github.com/vitest-dev/vitest/issues/4876 <samp>(1769c)</samp>Remove internal flag from UI option in the config - by @sheremet-va (7b4a2)
expect(...).toMatchFileSnapshot() matcher. - by @zmullett, Zac Mullett and @sheremet-va in https://github.com/vitest-dev/vitest/issues/4839 <samp>(b8140)</samp>Promise in mockImplementation if it's not in the function signature - by @sheremet-va in https://github.com/vitest-dev/vitest/issues/4859 <samp>(072e0)</samp>vi.mock is called - by @sheremet-va in https://github.com/vitest-dev/vitest/issues/4862 <samp>(e12a5)</samp>memoryLimit - by @inottn and @AriPerkkio in https://github.com/vitest-dev/vitest/issues/4802 <samp>(70e8a)</samp>Don't crash when using happy-dom or jsdom environment on Yarn PnP workspaces - by @wojtekmaj and @sheremet-va in https://github.com/vitest-dev/vitest/
inline: true is set - by @sheremet-va in https://github.com/vitest-dev/vitest/issues/4815 <samp>(8f622)</samp>--no-parallelism - by @bonyuta0204 in https://github.com/vitest-dev/vitest/issues/4831 <samp>(5053a)</samp>skip - by @hi-ogawa in https://github.com/vitest-dev/vitest/issues/4814 <samp>(19faf)</samp>beforeAll/afterAll errors in junit reporter - by @hi-ogawa in https://github.com/vitest-dev/vitest/issues/4819 <samp>(2baea)</samp>Add es-main compatibility to vite-node - by @zookatron in https://github.com/vitest-dev/vitest/issues/4751 (486a3)
--workspace option, fix root resolution in workspaces - by @sheremet-va and @AriPerkkio in https://github.com/vitest-dev/vitest/issues/4773 <samp>(67d93)</samp>--no-file-parallelism, --maxWorkers, --minWorkers flags - by @sheremet-va and @AriPerkkio in https://github.com/vitest-dev/vitest/issues/4705 <samp>(fd5d7)</samp>--no-isolate flag to improve performance, add documentation about performance - by @sheremet-va, @AriPerkkio and Pascal Jufer in https://github.com/vitest-dev/vitest/issues/4777 <samp>(4d55a)</samp>--exclude CLI flag - by @Namchee and @sheremet-va in https://github.com/vitest-dev/vitest/issues/4279 <samp>(f859e)</samp>toHaveProperty assertion error diff - by @hi-ogawa in https://github.com/vitest-dev/vitest/issues/4734 <samp>(f8f70)</samp>defineWorkspace fix intellisense and report type errors - by @AriPerkkio in https://github.com/vitest-dev/vitest/issues/4743 <samp>(9cc36)</samp>The previous release was built incorrectly and didn't include the performance fix. This release fixes that.
The previous release was built incorrectly and didn't include the performance fix. This release fixes that.
--coverage.all=false resolved incorrectly - by @AriPerkkio in https://github.com/vitest-dev/vitest/issues/4697 <samp>(a7931)</samp>log-update to v5 - by @AriPerkkio in https://github.com/vitest-dev/vitest/issues/4711 <samp>(13ff9)</samp>Correct package exports - by @userquin in https://github.com/vitest-dev/vitest/issues/4707 (37388)
log-update to v5 - by @AriPerkkio in https://github.com/vitest-dev/vitest/issues/4711 <samp>(13ff9)</samp>Don't check if vite is installed - by @wojtekmaj in https://github.com/vitest-dev/vitest/issues/4659 (775e2)
stripSnapshotIndentation for thrown snapshot - by @hi-ogawa in https://github.com/vitest-dev/vitest/issues/4663 <samp>(74820)</samp>URL equality check only when URL is available - by @hi-ogawa in https://github.com/vitest-dev/vitest/issues/4670 <samp>(43783)</samp>Bump vitest packages peerDependencies versions - by @AriPerkkio in https://github.com/vitest-dev/vitest/issues/4654 (42070)
peerDependencies versions - by @AriPerkkio in https://github.com/vitest-dev/vitest/issues/4654 <samp>(42070)</samp>Remove deprecated node loader - by @sheremet-va in https://github.com/vitest-dev/vitest/issues/4371 (29299)
Vitest 1.0 is here! This release page lists all changes made to the project during the beta. For the migration guide, please refer to the documentation.
pool and poolOptions, remove old flags - by @AriPerkkio in https://github.com/vitest-dev/vitest/issues/4172 <samp>(114a9)</samp>child_process - by @AriPerkkio in https://github.com/vitest-dev/vitest/issues/3925 <samp>(8b4a4)</samp>vitest peer dependency range for sub packages - by @AriPerkkio in https://github.com/vitest-dev/vitest/issues/4299 <samp>(cd03c)</samp>expect().toContain() can handle classList, Node.contains, and any array-like structure. This means you cannot use it to check if one object is a subset of another - use expect().toMatchObject() in that case - by @sheremet-va in https://github.com/vitest-dev/vitest/issues/4239 <samp>(ce84f)</samp>transformMode and workspace project based source maps - by @AriPerkkio in https://github.com/vitest-dev/vitest/issues/4309 <samp>(28109cc)</samp>coverage.all by default - by @AriPerkkio in https://github.com/vitest-dev/vitest/issues/4265 <samp>(5a741)</samp>/* v8 ignore... ignore hints - by @AriPerkkio in https://github.com/vitest-dev/vitest/issues/4573 <samp>(f9e4a)</samp>expect.closeTo api - by @Dunqing and golebiowskib in https://github.com/vitest-dev/vitest/issues/4260 <samp>(7f91c)</samp>nextTick mocking error message to mention correct config option - by @AriPerkkio in https://github.com/vitest-dev/vitest/issues/4215 <samp>(98fe3)</samp>expect - by @hi-ogawa in https://github.com/vitest-dev/vitest/issues/4405 <samp>(9fe38)</samp>Error instance for thrown snapshot - by @hi-ogawa and @sheremet-va in https://github.com/vitest-dev/vitest/issues/4396 <samp>(ac309)</samp>retry and bail from test config file - by @hi-ogawa in https://github.com/vitest-dev/vitest/issues/4530 <samp>(94f9a)</samp>pretty-format as a sibling dependency - by @nicojs in https://github.com/vitest-dev/vitest/issues/4590 <samp>(ed50a)</samp>stdin when in run mode - by @AriPerkkio in https://github.com/vitest-dev/vitest/issues/4310 <samp>(fc51a)</samp>pool and poolMatchGlobs in defineConfig - by @InfiniteXyy in https://github.com/vitest-dev/vitest/issues/4282 <samp>(9112c)</samp>thresholdAutoUpdate to detect zero limits - by @AriPerkkio in https://github.com/vitest-dev/vitest/issues/4287 <samp>(a29fe)</samp>Object.freeze breaks toEqual - by @Dunqing in https://github.com/vitest-dev/vitest/issues/4303 <samp>(a4501)</samp>error option from TaskResult - by @Dunqing in https://github.com/vitest-dev/vitest/issues/4313 <samp>(4cee6)</samp>vi.hoisted if assigned - by @sheremet-va in https://github.com/vitest-dev/vitest/issues/4285 <samp>(ff93a)</samp>log-update v9 - by @AriPerkkio in https://github.com/vitest-dev/vitest/issues/4390 <samp>(ba1df)</samp>all: true instruments already instrumented files - by @AriPerkkio in https://github.com/vitest-dev/vitest/issues/4552 <samp>(d1e1b)</samp>Add --project option to limit what projects are running - by @sheremet-va, Anjorin Damilare and @AriPerkkio in https://github.com/vitest-dev/vitest/is
/* v8 ignore... ignore hints - by @AriPerkkio in https://github.com/vitest-dev/vitest/issues/4573 <samp>(f9e4a)</samp>pretty-format as a sibling dependency - by @nicojs in https://github.com/vitest-dev/vitest/issues/4590 <samp>(ed50a)</samp>all: true instruments already instrumented files - by @AriPerkkio in https://github.com/vitest-dev/vitest/issues/4552 <samp>(d1e1b)</samp>See https://github.com/vitest-dev/vitest/pull/4442 for detailed list of breaking changes
coverage.thresholds. See https://github.com/vitest-dev/vitest/pull/4442 for detailed list of breaking changesretry and bail from test config file - by @hi-ogawa in https://github.com/vitest-dev/vitest/issues/4530 <samp>(94f9a)</samp>Remove EnhancedSpy type, deprecate SpyInstance, improve mocks and vi documentation - by @sheremet-va and @dammy001 in https://github.com/vitest-dev/vi…
expect - by @hi-ogawa in https://github.com/vitest-dev/vitest/issues/4405 <samp>(9fe38)</samp>Error instance for thrown snapshot - by @hi-ogawa and @sheremet-va in https://github.com/vitest-dev/vitest/issues/4396 <samp>(ac309)</samp>log-update v9 - by @AriPerkkio in https://github.com/vitest-dev/vitest/issues/4390 <samp>(ba1df)</samp>Remove deprecated node loader - by @sheremet-va in https://github.com/vitest-dev/vitest/issues/4371 (29299)
vitest peer dependency range for sub packages - by @AriPerkkio in https://github.com/vitest-dev/vitest/issues/4299 <samp>(cd03c)</samp>transformMode and workspace project based source maps - by @AriPerkkio in https://github.com/vitest-dev/vitest/issues/4309 <samp>(28109cc)</samp>vitest typecheck is removed, use --typecheck) - by @sheremet-va in https://github.com/vitest-dev/vitest/issues/4324 <samp>(a1aad)</samp>stdin when in run mode - by @AriPerkkio in https://github.com/vitest-dev/vitest/issues/4310 <samp>(fc51a)</samp>pool and poolMatchGlobs in defineConfig - by @InfiniteXyy in https://github.com/vitest-dev/vitest/issues/4282 <samp>(9112c)</samp>thresholdAutoUpdate to detect zero limits - by @AriPerkkio in https://github.com/vitest-dev/vitest/issues/4287 <samp>(a29fe)</samp>Object.freeze breaks toEqual - by @Dunqing in https://github.com/vitest-dev/vitest/issues/4303 <samp>(a4501)</samp>error option from TaskResult - by @Dunqing in https://github.com/vitest-dev/vitest/issues/4313 <samp>(4cee6)</samp>Enable coverage.all by default - by @AriPerkkio in https://github.com/vitest-dev/vitest/issues/4265 (5a741)
coverage.all by default - by @AriPerkkio in https://github.com/vitest-dev/vitest/issues/4265 <samp>(5a741)</samp>expect.closeTo api - by @Dunqing and golebiowskib in https://github.com/vitest-dev/vitest/issues/4260 <samp>(7f91c)</samp>vi.hoisted if assigned to a variable - by @sheremet-va in https://github.com/vitest-dev/vitest/issues/4285 <samp>(ff93a)</samp>Publish types file - by @sheremet-va (5996c)
This is a beta release for upcoming 1.0.0 version. Use beta dist-tag when installing Vitest: npm install --save-dev vitest@beta.
This is a beta release for upcoming 1.0.0 version. Use beta dist-tag when installing Vitest: npm install --save-dev vitest@beta.
child_process - by @AriPerkkio in https://github.com/vitest-dev/vitest/issues/3925 <samp>(8b4a4)</samp>
canvas package, for example), this should improve your speed tremendously.useFakeTimers() no longer automatically mocks process.nextTick. Users can still mock it by explicitly specifying useFakeTimers({ toFake: ['nextTick'] })pool and poolOptions, remove old flags - by @AriPerkkio in https://github.com/vitest-dev/vitest/issues/4172 <samp>(114a9)</samp>
--threads or other related flags.
--threads is now --pool=threads--no-threads is now --pool=forks--single-thread is now --poolOptions.threads.singleThread--experimental-vm-threads is now --pool=vmThreads--experimental-vm-worker-memory-limit is now --poolOptions.vmThreads.memoryLimit--isolate is now --poolOptions.<pool-name>.isolate and browser.isolatetest.maxThreads is now test.poolOptions.<pool-name>.maxThreadstest.minThreads is now test.poolOptions.<pool-name>.minThreadstest.useAtomics is now test.poolOptions.<pool-name>.useAtomicstest.poolMatchGlobs.child_process is now test.poolMatchGlobs.forkstest.poolMatchGlobs.experimentalVmThreads is now test.poolMatchGlobs.vmThreadscreateTaskCollector utility. This is primarily an advanced API for library authors.@vitest/snapshot separately, you will also need to update its usage. You no longer need to extend SnapshotClient to override equalityCheck method - just pass it down as an isEqual option. Also some of the public API methods were renamed for clarity.nextTick mocking error message to mention correct config option - by @AriPerkkio in https://github.com/vitest-dev/vitest/issues/4215 <samp>(98fe3)</samp>test.extend should be init once time in all test - by @Dunqing in https://github.com/vitest-dev/vitest/issues/4168 <samp>(a5979)</samp>Nothing published for this version
Overwrite global URL with environment's - by @sheremet-va in https://github.com/vitest-dev/vitest/issues/4164 (cbe13)
test.extend should be init once time in all test - by @Dunqing in https://github.com/vitest-dev/vitest/issues/4168 <samp>(730b2)</samp>Add diff option - by @fenghan34 and @sheremet-va in https://github.com/vitest-dev/vitest/issues/4063 (b50cf)
diff option - by @fenghan34 and @sheremet-va in https://github.com/vitest-dev/vitest/issues/4063 <samp>(b50cf)</samp>coverage['100'] to istanbul provider - by @marcelobotega in https://github.com/vitest-dev/vitest/issues/4109 <samp>(a7e09)</samp>vi.waitFor method - by @Dunqing and @sheremet-va in https://github.com/vitest-dev/vitest/issues/4113 <samp>(d79cb)</samp>vi.waitUntil method - by @Dunqing and @sheremet-va in https://github.com/vitest-dev/vitest/issues/4129 <samp>(e0ac9)</samp>toThrow - by @Dunqing in https://github.com/vitest-dev/vitest/issues/3979 <samp>(725a0)</samp>testNamePattern - by @segrey in https://github.com/vitest-dev/vitest/issues/4103 and https://github.com/vitest-dev/vitest/issues/4104 <samp>(3c305)</samp>test.extend doesn't work in hooks without test - by @Dunqing in https://github.com/vitest-dev/vitest/issues/4065 <samp>(175c7)</samp>SourceMapInput to fix CYCLIC_CROSS_CHUNK_REEXPORT - by @Dunqing in https://github.com/vitest-dev/vitest/issues/4128 <samp>(ca70a)</samp>Resolving dep optimizer issues with workspace - by @thebanjomatic in https://github.com/vitest-dev/vitest/issues/4036 (0c13c)
coverage: Add allowExternal option - by @vojvodics and @AriPerkkio in https://github.com/vitest-dev/vitest/issues/3894 (c03fa)
allowExternal option - by @vojvodics and @AriPerkkio in https://github.com/vitest-dev/vitest/issues/3894 <samp>(c03fa)</samp>vitest/reporters - by @Dunqing and @sheremet-va in https://github.com/vitest-dev/vitest/issues/3980 <samp>(5704b)</samp>Allow importing CSS and assets inside external dependencies when using --experimental-vm-threads - by @sheremet-va in https://github.com/vitest-dev/vi
--experimental-vm-threads - by @sheremet-va in https://github.com/vitest-dev/vitest/issues/3880 <samp>(f4e6e)</samp>ctx.skip() inside the running test - by @sheremet-va in https://github.com/vitest-dev/vitest/issues/3966 <samp>(5c88d)</samp>execute.d.ts - by @btea in https://github.com/vitest-dev/vitest/issues/3970 <samp>(0f8e6)</samp>?inline query is specified - by @thebanjomatic and Adam Hines in https://github.com/vitest-dev/vitest/issues/3952 <samp>(3891d)</samp>Pass --experimental-vm-worker-memory-limit to tinypool - by @AriPerkkio in https://github.com/vitest-dev/vitest/issues/3856 (3c67a)
--experimental-vm-worker-memory-limit to tinypool - by @AriPerkkio in https://github.com/vitest-dev/vitest/issues/3856 <samp>(3c67a)</samp>Update istanbul-lib-instrument to v6 to fix vulnerable dependency - by @AriPerkkio in https://github.com/vitest-dev/vitest/issues/3814 (f3bd9)
transformMode is now moved to server.transformMode. This option is highly discouraged to use. If you need to change the transform mode, use the new option testTransformMode instead to control the mode based on the running test, not the current file path. By default, tests with jsdom or happy-dom use web transform mode, and tests using node or edge environment use ssr mode. If you have a custom environment, it should provide transformMode property.coverage.reportOnFailure by default - by @AriPerkkio in https://github.com/vitest-dev/vitest/issues/3615 <samp>(0c6f6)</samp>@vitest/coverage-c8 package - by @AriPerkkio in https://github.com/vitest-dev/vitest/issues/3614 <samp>(a90d6)</samp>
@vitest/coverage-c8 is no longer supported. Please, use @vitest/coverage-v8 instead.experimentalVmThreads pool to run your tests using VM Sandboxes environment. Make sure you understand all pitfalls of this pool before opening an issue.server option - by @fenghan34 and @sheremet-va in https://github.com/vitest-dev/vitest/issues/3725 <samp>(dc4fa)</samp>
deps. options are now moved to server.deps with a deprecation warning. Please, consider using deps.optimizer instead of deps.inline/deps.external. Ideally, we would like to move away from using server.deps.inline altogether.vite-node index.ts --watch, you now have to do vite-node --watch index.ts.deps.optimizer is now enabled by default. This means that Vitest will bundle specified dependencies before running your tests. This field inherits options from optimizeDeps and ssr.optimizeDeps which are populated by other plugins (like, Svelte).describe.sequential - by @fenghan34 and @dammy001 in https://github.com/vitest-dev/vitest/issues/3771 <samp>(86934)</samp>--related --watch reruns non-affected tests if they were changed during a run - by @sheremet-va in https://github.com/vitest-dev/vitest/issues/3844 <samp>(c9aea)</samp>defineConfig type from vite - by @sodatea in https://github.com/vitest-dev/vitest/issues/3804 <samp>(9c8e3)</samp>toStrictEqual - by @Dunqing <samp>(52aef)</samp>istanbul-lib-instrument to v6 to fix vulnerable dependency - by @AriPerkkio in https://github.com/vitest-dev/vitest/issues/3814 <samp>(f3bd9)</samp>deps.optimizer.web instead. If you test Node.js applications, consider adding external packages to server.deps.inline.Revert default include patterns - by @so1ve #3729
0.32.0 changed the default include globs to be compatible with Jest. After a discussion with the community, we are reverting this change because it turned out to be non-intuitive.browser: Correctly optimize CJS dependencies - by @sheremet-va (3d090)
Add concurrent option to sequence config - by @fenghan34 and @sheremet-va in https://github.com/vitest-dev/vitest/issues/3604 (f427f)
concurrent option to sequence config - by @fenghan34 and @sheremet-va in https://github.com/vitest-dev/vitest/issues/3604 <samp>(f427f)</samp>bench name - by @fenghan34 in https://github.com/vitest-dev/vitest/issues/3711 <samp>(a749a)</samp>test.extend - by @fenghan34 in https://github.com/vitest-dev/vitest/issues/3554 <samp>(2db1a)</samp>CTRL+C to terminate run - by @AriPerkkio in https://github.com/vitest-dev/vitest/issues/3642 <samp>(fa663)</samp>toBeCalledTimes - by @antfu in https://github.com/vitest-dev/vitest/issues/3696 <samp>(d3640)</samp>v8 to prevent crash on dynamic CJS files - by @AriPerkkio in https://github.com/vitest-dev/vitest/issues/3657 <samp>(40f18)</samp>retry and repeats 0 - by @Dunqing in https://github.com/vitest-dev/vitest/issues/3638 <samp>(6d146)</samp>h key - by @AriPerkkio in https://github.com/vitest-dev/vitest/issues/3618 <samp>(60c36)</samp>browser: Don't fail on importing diff-sequences - by @sheremet-va (00b0e)
Export registerConsoleShortcuts from vitest/node - by @deot in https://github.com/vitest-dev/vitest/issues/3563 (bc49b)
registerConsoleShortcuts from vitest/node - by @deot in https://github.com/vitest-dev/vitest/issues/3563 <samp>(bc49b)</samp>expect.unreachable - by @fenghan34 and @sheremet-va in https://github.com/vitest-dev/vitest/issues/3556 <samp>(8e385)</samp>describe/test name support anonymous function - by @btea in https://github.com/vitest-dev/vitest/issues/3562 <samp>(3d436)</samp>performance from perf_hooks - by @Max10240 and wangbaolong.wbl in https://github.com/vitest-dev/vitest/issues/3578 and https://github.com/vitest-dev/vitest/issues/3579 <samp>(24ec8)</samp>vitest - by @userquin in https://github.com/vitest-dev/vitest/issues/3580 <samp>(b4ac8)</samp>Vitest now uses v8 code coverage directly for better performance. @vitest/coverage-c8 is deprecated as Vitest no longer uses c8 package for coverage o…
test.js to be a test file. Also any file in __tests__ is now considered to be a test, not just files with test or spec suffix.@vitest/coverage-v8 package - by @AriPerkkio in https://github.com/vitest-dev/vitest/issues/3339 <samp>(82112)</samp>
@vitest/coverage-c8 is deprecated as Vitest no longer uses c8 package for coverage output. It will not be updated anymore, and Vitest will fail in the next version if the user has c8 as their coverage provider. Please, install the new @vitest/coverage-v8 package if you previously used @vitest/coverage-c8.spy.mockRestore on auto-mocked named exports will no longer restore their implementation to the actual function. This behavior better matches what Jest does.expect.soft - by @Dunqing in https://github.com/vitest-dev/vitest/issues/3507 <samp>(7c687)</samp>describe/test name - by @fenghan34 in https://github.com/vitest-dev/vitest/issues/3497 <samp>(15253)</samp>Enable experimentalOptimizer - by @sheremet-va in https://github.com/vitest-dev/vitest/issues/3413 (5a894)
Support VITE_NODE_DEPS_MODULE_DIRECTORIES from .npmrc - by @AriPerkkio in https://github.com/vitest-dev/vitest/issues/3471 (393bf)
VITE_NODE_DEPS_MODULE_DIRECTORIES from .npmrc - by @AriPerkkio in https://github.com/vitest-dev/vitest/issues/3471 <samp>(393bf)</samp>Throw error if using inline snapshot inside of test.each or describe.each - by @fenghan34 and @sheremet-va in https://github.com/vitest-dev/vitest/iss
test.each or describe.each - by @fenghan34 and @sheremet-va in https://github.com/vitest-dev/vitest/issues/3360 <samp>(7c2f7)</samp>reportOnFailure option - by @AriPerkkio and @sheremet-va in https://github.com/vitest-dev/vitest/issues/3453 <samp>(1988f)</samp>SIGINT is received - by @AriPerkkio in https://github.com/vitest-dev/vitest/issues/3407 <samp>(a2cc2)</samp>rejects & resolves breaks with thenable objects - by @fenghan34 in https://github.com/vitest-dev/vitest/issues/3456 <samp>(4e996)</samp>birpc timeouts when Math.random mock is not restored - by @AriPerkkio in https://github.com/vitest-dev/vitest/issues/3460 <samp>(cd5d5)</samp>less extension - by @rluvaton in https://github.com/vitest-dev/vitest/issues/3465 <samp>(4d045)</samp>PartialMock with async TReturns - by @ghry5 in https://github.com/vitest-dev/vitest/issues/3462 <samp>(b664d)</samp>watch: Press r should rerun current pattern tests - by @Dunqing and @AriPerkkio in https://github.com/vitest-dev/vitest/issues/3305 (69d27)
r should rerun current pattern tests - by @Dunqing and @AriPerkkio in https://github.com/vitest-dev/vitest/issues/3305 <samp>(69d27)</samp>cwd from test name filter - by @AriPerkkio in https://github.com/vitest-dev/vitest/issues/3353 <samp>(324a9)</samp>toMatchInlineSnapshot fails when file path includes parentheses - by @pacexy in https://github.com/vitest-dev/vitest/issues/3370 and https://github.com/vitest-dev/vitest/issues/3371 <samp>(dcf13)</samp>Remove browser from allowed pools inside poolMatchGlob config option. Please, use Vitest workspaces for running tests in the browser.
Remove browser from allowed pools inside poolMatchGlob config option. Please, use Vitest workspaces for running tests in the browser.
Move assertion declarations to expect package - by @sheremet-va in https://github.com/vitest-dev/vitest/issues/3294 <samp>(cf3af)</samp>
- declare namespace Vi {
+ declare module 'vitest' {
interface Assertion<T = any> extends CustomMatchers<T> {}
interface AsymmetricMatchersContaining extends CustomMatchers {}
}
vi.hoisted to run code before imports are executed:vi.hoisted(() => vi.setSystemTime(new Date(2022, 1, 1)))
You can also use it to pass variables to vi.mock:const { mockedMethod } = vi.hoisted(() => {
return { mockedMethod: vi.fn() }
})
vi.mock('./path/to/module.js', () => {
return { originalMethod: mockedMethod }
})
--bail option for cancelling test run - by @AriPerkkio in https://github.com/vitest-dev/vitest/issues/3163 <samp>(8d460)</samp>thresholdAutoUpdate to work with perFile - by @AriPerkkio in https://github.com/vitest-dev/vitest/issues/3182 <samp>(29eeb)</samp>import.meta.hot.send mock - by @antfu <samp>(b1624)</samp>Do not rely on global performance and AggregateError - by @sheremet-va in https://github.com/vitest-dev/vitest/issues/3171 (cce45)
performance and AggregateError - by @sheremet-va in https://github.com/vitest-dev/vitest/issues/3171 <samp>(cce45)</samp>test.each respects chaiConfig - by @sheremet-va <samp>(4f6c1)</samp>toMatchFileSnapshot ensure dir exists - by @antfu in https://github.com/vitest-dev/vitest/issues/3155 <samp>(31168)</samp>skipWriting check - by @antfu <samp>(5436c)</samp>toMatchFileSnapshot - by @antfu in https://github.com/vitest-dev/vitest/issues/3164 <samp>(df3f2)</samp>Remove tinyspy internal properties on Vitest spies - by @sheremet-va in https://github.com/vitest-dev/vitest/issues/3069 (2f1dc)
toMatchFileSnapshot and auto queuing expect promise - by @antfu in https://github.com/vitest-dev/vitest/issues/3116 <samp>(bdc06)</samp>Allow accessing "vi" methods without context, don't fail when mocker is not available - by @sheremet-va in https://github.com/vitest-dev/vitest/issues
istanbul coverage support for browser testing - by @sheremet-va and @AriPerkkio in https://github.com/vitest-dev/vitest/issues/3040 <samp>(0f44d)</samp>Your coding agent can read these notes before it upgrades. Set up the MCP server →