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.
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>Verbose reporter prints tests in a list, introduce tree reporter - by @sheremet-va and @AriPerkkio in https://github.com/vitest-dev/vitest/issues/8500
tree reporter - by @sheremet-va and @AriPerkkio in https://github.com/vitest-dev/vitest/issues/8500 <samp>(25fd3)</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>vite directly - by @sheremet-va in https://github.com/vitest-dev/vitest/issues/8541 <samp>(d7fca)</samp>browser: Require a provider factory instead of a string - by @sheremet-va in https://github.com/vitest-dev/vitest/issues/8445 (606cb)
relativeModuleId to TestModule - by @sheremet-va in https://github.com/vitest-dev/vitest/issues/8505 <samp>(3be09)</samp>length property to locators, toHaveLength now accepts locators - by @sheremet-va in https://github.com/vitest-dev/vitest/issues/8512 <samp>(2308c)</samp>autoUpdate to support percentage formatting - by @Battjmo and @AriPerkkio in https://github.com/vitest-dev/vitest/issues/8456 <samp>(99e01)</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>workerId from a global object - by @sheremet-va in https://github.com/vitest-dev/vitest/issues/8507 <samp>(46b13)</samp>tinypool to v2.0.0 - by @AriPerkkio in https://github.com/vitest-dev/vitest/issues/8513 <samp>(a8c7f)</samp>Remove minWorkers and set it automatically to 0 in non watch mode - by @sheremet-va in https://github.com/vitest-dev/vitest/issues/8454 (2c2d1)
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>getGlobalTestNamePattern method - by @sheremet-va in https://github.com/vitest-dev/vitest/issues/8438 <samp>(bdb70)</samp>locator.element() returns HTMLElement or SVGElement - by @sheremet-va in https://github.com/vitest-dev/vitest/issues/8440 <samp>(c1ac1)</samp>vitest:coverage-transform plugin - by @AriPerkkio in https://github.com/vitest-dev/vitest/issues/8477 <samp>(ff517)</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>Remove deprecated APIs - by @sheremet-va in https://github.com/vitest-dev/vitest/issues/8428 (a1cb9)
enableCoverage and disableCoverage methods - by @sheremet-va and @AriPerkkio in https://github.com/vitest-dev/vitest/issues/8412 <samp>(61eb7)</samp>Expose experimental_parseSpecifications - by @sheremet-va in https://github.com/vitest-dev/vitest/issues/8408 (fdeb2)
experimental_parseSpecifications - by @sheremet-va in https://github.com/vitest-dev/vitest/issues/8408 <samp>(fdeb2)</samp>trackUnhandledErrors option - by @sheremet-va in https://github.com/vitest-dev/vitest/issues/8386 <samp>(c0ec0)</samp>stacks property in Node.js context - by @sheremet-va in https://github.com/vitest-dev/vitest/issues/8392 <samp>(b825e)</samp>reporter: Remove deprecated APIs - by @AriPerkkio and @sheremet-va in https://github.com/vitest-dev/vitest/issues/8223 (149f8)
oxc instead of esbuild on rolldown-vite - by @hi-ogawa in https://github.com/vitest-dev/vitest/issues/8378 <samp>(e922e)</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>Use module-runner instead of vite-node - by @sheremet-va and @AriPerkkio in https://github.com/vitest-dev/vitest/issues/8208 (9be01)
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>Add qwik to the vitest init cli command - by @thejackshelton in https://github.com/vitest-dev/vitest/issues/8330 (1638b)
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>--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>Remove deprecated workspace option in favor of projects - by @sheremet-va in https://github.com/vitest-dev/vitest/issues/8218 (76fb7)
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>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>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>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>regexpHoistable to allow whitespace before parentheses - by @cszhjh in https://github.com/vitest-dev/vitest/issues/8231 <samp>(a0f9a)</samp>vitest --standalone - by @AriPerkkio in https://github.com/vitest-dev/vitest/issues/8248 <samp>(37cc2)</samp>Remove deprecated types - by @sheremet-va in https://github.com/vitest-dev/vitest/issues/8203 (66bee)
onUnhandledError callback - by @sheremet-va in https://github.com/vitest-dev/vitest/issues/8162 <samp>(924cb)</samp>Remove deprecated getSourceMap - by @sheremet-va in https://github.com/vitest-dev/vitest/issues/8194 (ff934)
'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>.all, reworked include/exclude by @AriPerkkio in https://github.com/vitest-dev/vitest/issues/7837 <samp>(41a111c)</samp>Your coding agent can read these notes before it upgrades. Set up the MCP server →