vitest

vitest breaking-changes badge

vitest (latest known version: 5.0.0) has 59 known breaking changes on record, each backed by a source URL.

Actively maintainedLatest known version: 5.0.0npm ↗

Security advisories

GHSA-5xrq-8626-4rwpCRITICAL>=4.0.0 <4.1.0 || <3.2.6

When Vitest UI server is listening, arbitrary file can be read and executed

source ↗

GHSA-9crc-q9x8-hgqqCRITICAL>=1.0.0 <1.6.1 || >=2.0.0 <2.1.9 || >=3.0.0 <3.0.5 || <=0.0.125

Vitest allows Remote Code Execution when accessing a malicious website while Vitest API server is listening

source ↗

Recent changes

v5.0.0-beta.7Breaking

- Separate config resolution from the server creation &nbsp;-&nbsp; by @sheremet-va in https://github.com/vitest-dev/vitest/issues/10554 [<samp>(1c0ec)</samp>](https://github.com/vitest-dev/vitest/commit/1c0ec3444)

source ↗

v5.0.0-beta.1Breaking

- Replace `loupe.inspect` with pretty-format &nbsp;-&nbsp; by @hi-ogawa, **Claude Sonnet 4.6** and **Codex** in https://github.com/vitest-dev/vitest/issues/9609 [<samp>(3f802)</samp>](https://github.com/vitest-dev/vitest/commit/3f802da4b) - Remove quotes from string values in `test.for/each` title `$` variable (take 2) &nbsp;-&nbsp; by @hi-ogawa in https://github.com/vitest-dev/vitest/issues/10170 [<samp>(04d37)</samp>](https://github.com/vitest-dev/vitest/commit/04d37e9d7) - **browser**: Iframe scale &nbsp;-&nbsp; by @macarie in https://github.com/vitest-dev/vitest/issues/9745 [<samp>(b6398)</samp>](https://github.com/vitest-dev/vitest/commit/b639852cc) - **coverage**: `include/exclude` globs too eager &nbsp;-&nbsp; by @AriPerkkio in https://github.com/vitest-dev/vitest/issues/9818 [<samp>(edacb)</samp>](https://github.com/vitest-dev/vitest/commit/edacb0fd4) - **expect**: Fix `toThrow("")` behavior by reverting #6710 &nbsp;-&nbsp; by @hi-ogawa in https://github.com/vitest-dev/vitest/issues/9643 and https://github.com/vitest-dev/vitest/issues/6710 [<samp>(6c3e4)</samp>](https://github.com/vitest-dev/vitest/commit/6c3e4bdbf)

source ↗

v5.0.0-beta.2Breaking

- Default `attachmentsDir` from `.vitest-attachements/` to `.vitest/attachments/` &nbsp;-&nbsp; by @MdSadiqMd in https://github.com/vitest-dev/vitest/issues/10186 [<samp>(1ba73)</samp>](https://github.com/vitest-dev/vitest/commit/1ba7338c3) - Remove `sequential` test/suite options in favor of `concurrent` &nbsp;-&nbsp; by @hi-ogawa and **Codex** in https://github.com/vitest-dev/vitest/issues/10198 [<samp>(9229f)</samp>](https://github.com/vitest-dev/vitest/commit/9229f2edc) - Represent locator as an object instead of a string &nbsp;-&nbsp; by @sheremet-va in https://github.com/vitest-dev/vitest/issues/10212 [<samp>(80f07)</samp>](https://github.com/vitest-dev/vitest/commit/80f07edf6) - Inline `expect` package &nbsp;-&nbsp; by @sheremet-va in https://github.com/vitest-dev/vitest/issues/10221 [<samp>(ad162)</samp>](https://github.com/vitest-dev/vitest/commit/ad16223e7) - Remove deprecated entry points &nbsp;-&nbsp; by @sheremet-va in https://github.com/vitest-dev/vitest/issues/10222 [<samp>(994c6)</samp>](https://github.com/vitest-dev/vitest/commit/994c6ddb9) - **mocker**: Deserialize automock as automock &nbsp;-&nbsp; by @nami8824 in https://github.com/vitest-dev/vitest/issues/10192 [<samp>(2f892)</samp>](https://github.com/vitest-dev/vitest/commit/2f892712d) - **reporters**: `blob` reporter and `--merge-reports` default to `.vitest/blob/` &nbsp;-&nbsp; by @AriPerkkio in https://github.com/vitest-dev/vitest/issues/10232 [<samp>(d22b0)</samp>](https://github.com/vitest-dev/vitest/commit/d22b029ae)

source ↗

v5.0.0-beta.3Breaking

- Require Node.js 22 and Vite 6.4 &nbsp;-&nbsp; by @sheremet-va in https://github.com/vitest-dev/vitest/issues/10178 [<samp>(38762)</samp>](https://github.com/vitest-dev/vitest/commit/3876283e8) - Fail `expect.poll` when function didn't resolve in time &nbsp;-&nbsp; by @hi-ogawa and **Codex** in https://github.com/vitest-dev/vitest/issues/10233 [<samp>(4df04)</samp>](https://github.com/vitest-dev/vitest/commit/4df048c11)

source ↗

v5.0.0-beta.4Breaking

- Throw an error if hoistable methods are outside the top level scope &nbsp;-&nbsp; by @sheremet-va in https://github.com/vitest-dev/vitest/issues/10460 [<samp>(d0b4f)</samp>](https://github.com/vitest-dev/vitest/commit/d0b4fddcb) - `toHaveTextContent` is strict, add `toMatchTextContent` as alternative &nbsp;-&nbsp; by @sheremet-va in https://github.com/vitest-dev/vitest/issues/10473 [<samp>(18f30)</samp>](https://github.com/vitest-dev/vitest/commit/18f303079) - **benchmark**: Rewrite the public API &nbsp;-&nbsp; by @sheremet-va in https://github.com/vitest-dev/vitest/issues/10113 [<samp>(19f6e)</samp>](https://github.com/vitest-dev/vitest/commit/19f6e8947) - **browser**: Enable `locators.exact` by default &nbsp;-&nbsp; by @sheremet-va in https://github.com/vitest-dev/vitest/issues/10430 [<samp>(e2032)</samp>](https://github.com/vitest-dev/vitest/commit/e203202f9)

source ↗

v5.0.0-beta.5Breaking

- Don't lookup config file from ancestor directories &nbsp;-&nbsp; by @hi-ogawa, **Codex** and **Hiroshi Ogawa** in https://github.com/vitest-dev/vitest/issues/10428 [<samp>(945d9)</samp>](https://github.com/vitest-dev/vitest/commit/945d9090e) - Inline `@vitest/runner` package, do not publish it anymore &nbsp;-&nbsp; by @sheremet-va in https://github.com/vitest-dev/vitest/issues/10511 [<samp>(6d6e4)</samp>](https://github.com/vitest-dev/vitest/commit/6d6e46b1e) - Allow mutating happy-dom/jsdom window object &nbsp;-&nbsp; by @hi-ogawa, **Hiroshi Ogawa** and **Codex** in https://github.com/vitest-dev/vitest/issues/10373 [<samp>(206e8)</samp>](https://github.com/vitest-dev/vitest/commit/206e8cff8) - Expose `concurrencyId`/`workerId` on TestModule's diagnostics, make id 1-based &nbsp;-&nbsp; by @sheremet-va in https://github.com/vitest-dev/vitest/issues/10516 [<samp>(bdd98)</samp>](https://github.com/vitest-dev/vitest/commit/bdd985433) - **browser**: Require `sessionId` for orchestrator html request &nbsp;-&nbsp; by @hi-ogawa, **Hiroshi Ogawa** and **Codex** in https://github.com/vitest-dev/vitest/issues/10522 [<samp>(79b7d)</samp>](https://github.com/vitest-dev/vitest/commit/79b7d8fcc) - **coverage**: Allow `thresholds.perFile` to accept an object &nbsp;-&nbsp; by @vladlenskiy and @AriPerkkio in https://github.com/vitest-dev/vitest/issues/10190 [<samp>(13b78)</samp>](https://github.com/vitest-dev/vitest/commit/13b78d98b)

source ↗

v5.0.0-beta.6Breaking

- Add `screenshotDirectory` config to `browser.expect.toMatchScreenshot` &nbsp;-&nbsp; by @macarie in https://github.com/vitest-dev/vitest/issues/10592 [<samp>(a60de)</samp>](https://github.com/vitest-dev/vitest/commit/a60ded0fb) - Update `@sinonjs/fake-timers` and support mocking `Temporal` &nbsp;-&nbsp; by @hi-ogawa, **Hiroshi Ogawa** and **OpenCode (claude-opus-4-8)** in https://github.com/vitest-dev/vitest/issues/10654 [<samp>(f8b15)</samp>](https://github.com/vitest-dev/vitest/commit/f8b1532fe) - Remove webdriverio package &nbsp;-&nbsp; by @sheremet-va in https://github.com/vitest-dev/vitest/issues/10675 [<samp>(5fed6)</samp>](https://github.com/vitest-dev/vitest/commit/5fed68f72) - Clear mocks by default before each test &nbsp;-&nbsp; by @sheremet-va in https://github.com/vitest-dev/vitest/issues/10613 [<samp>(0f646)</samp>](https://github.com/vitest-dev/vitest/commit/0f6463bf2) - Don't emit localStorage warnings on Node 26, fail gracefully when worker fails to start &nbsp;-&nbsp; by @sheremet-va in https://github.com/vitest-dev/vitest/issues/10293 [<samp>(334ed)</samp>](https://github.com/vitest-dev/vitest/commit/334edef92) - **reporters**: - Write json and junit reporter output files to `.vitest` by default &nbsp;-&nbsp; by @hi-ogawa, **Hiroshi Ogawa**, **OpenCode (claude-opus-4-8)** and @AriPerkkio in https://github.com/vitest-dev/vitest/issues/10621 [<samp>(58577)</samp>](https://github.com/vitest-dev/vitest/commit/58577290a) - **ui**: - Harden UI API access &nbsp;-&nbsp; by @hi-ogawa, **Hiroshi Ogawa** and **Codex** in https://github.com/vitest-dev/vitest/issues/10583 [<samp>(4c26d)</samp>](https://github.com/vitest-dev/vitest/commit/4c26d7675) - Change html reporter default output to `.vitest` &nbsp;-&nbsp; by @hi-ogawa and **Hiroshi Ogawa** in https://github.com/vitest-dev/vitest/issues/10620 [<samp>(29c36)</samp>](https://github.com/vitest-dev/vitest/commit/29c364d50)

source ↗

v4.0.0-beta.1Breaking

- Remove `'basic'` reporter &nbsp;-&nbsp; by @AriPerkkio in https://github.com/vitest-dev/vitest/issues/7884 [<samp>(82fcf)</samp>](https://github.com/vitest-dev/vitest/commit/82fcf5d53) - Simplify default exclude pattern &nbsp;-&nbsp; by @sheremet-va in https://github.com/vitest-dev/vitest/issues/6287 [<samp>(14c50)</samp>](https://github.com/vitest-dev/vitest/commit/14c507200) - Remove deprecated getSourceMap &nbsp;-&nbsp; by @sheremet-va in https://github.com/vitest-dev/vitest/issues/8194 [<samp>(ff934)</samp>](https://github.com/vitest-dev/vitest/commit/ff93444f8) - Replace deprecated ErrorWithDiff with TestError &nbsp;-&nbsp; by @sheremet-va in https://github.com/vitest-dev/vitest/issues/8195 [<samp>(da59e)</samp>](https://github.com/vitest-dev/vitest/commit/da59eb887) - Remove UserConfig type in favor of ViteUserConfig &nbsp;-&nbsp; by @sheremet-va in https://github.com/vitest-dev/vitest/issues/8196 [<samp>(22f7f)</samp>](https://github.com/vitest-dev/vitest/commit/22f7f2db5) - Remove deprecated coverage options in favor of `vitest/node` exports &nbsp;-&nbsp; by @sheremet-va in https://github.com/vitest-dev/vitest/issues/8197 [<samp>(dc848)</samp>](https://github.com/vitest-dev/vitest/commit/dc8486d22) - Remove deprecated internal helpers and environment exports &nbsp;-&nbsp; by @sheremet-va in https://github.com/vitest-dev/vitest/issues/8198 [<samp>(4703c)</samp>](https://github.com/vitest-dev/vitest/commit/4703cf850) - Remove deprecated typecheck and runner types &nbsp;-&nbsp; by @sheremet-va in https://github.com/vitest-dev/vitest/issues/8199 [<samp>(89a1c)</samp>](https://github.com/vitest-dev/vitest/commit/89a1cb626) - Remove Node types from the main entry point, use `vitest/node` instead &nbsp;-&nbsp; by @sheremet-va in https://github.com/vitest-dev/vitest/issues/8200 [<samp>(1e60c)</samp>](https://github.com/vitest-dev/vitest/commit/1e60c4f44) - **coverage**: - V8 to support only AST based remapping by @AriPerkkio in https://github.com/vitest-dev/vitest/issues/8064 [<samp>(176133e)</samp>](https://github.com/vitest-dev/vitest/commit/176133e) - Remove `.all`, reworked `include/exclude` by @AriPerkkio in https://github.com/vitest-dev/vitest/issues/7837 [<samp>(41a111c)</samp>](https://github.com/vitest-dev/vitest/commit/41a111c)

source ↗

v4.0.0-beta.2Breaking

- Remove support for Vite 5 &nbsp;-&nbsp; by @sheremet-va in https://github.com/vitest-dev/vitest/issues/8202 [<samp>(cb8b0)</samp>](https://github.com/vitest-dev/vitest/commit/cb8b03bac) - Remove deprecated types &nbsp;-&nbsp; by @sheremet-va in https://github.com/vitest-dev/vitest/issues/8203 [<samp>(66bee)</samp>](https://github.com/vitest-dev/vitest/commit/66bee836f) - Remove deprecated environmentMatchGlobs and poolMatchGlobs &nbsp;-&nbsp; by @sheremet-va in https://github.com/vitest-dev/vitest/issues/8205 [<samp>(be11d)</samp>](https://github.com/vitest-dev/vitest/commit/be11d374c) - **snapshot**: Fail test with obsolete snapshot on CI &nbsp;-&nbsp; by @hi-ogawa in https://github.com/vitest-dev/vitest/issues/7963 [<samp>(4d84f)</samp>](https://github.com/vitest-dev/vitest/commit/4d84f0ac6) - **spy**: Support spying on classes &nbsp;-&nbsp; by @sheremet-va in https://github.com/vitest-dev/vitest/issues/6160 [<samp>(abc0d)</samp>](https://github.com/vitest-dev/vitest/commit/abc0d8273)

source ↗

v4.0.0-beta.3Breaking

- Remove deprecated `workspace` option in favor of `projects` &nbsp;-&nbsp; by @sheremet-va in https://github.com/vitest-dev/vitest/issues/8218 [<samp>(76fb7)</samp>](https://github.com/vitest-dev/vitest/commit/76fb75d42) - Ignore `--standalone` when CLI filename filter is used &nbsp;-&nbsp; by @AriPerkkio in https://github.com/vitest-dev/vitest/issues/8262 [<samp>(013bf)</samp>](https://github.com/vitest-dev/vitest/commit/013bf2cb2)

source ↗

v4.0.0-beta.5Breaking

- Use module-runner instead of vite-node &nbsp;-&nbsp; by @sheremet-va and @AriPerkkio in https://github.com/vitest-dev/vitest/issues/8208 [<samp>(9be01)</samp>](https://github.com/vitest-dev/vitest/commit/9be01ba59) - **runner**: Set mode to `todo` if no function is passed down to `test` or `describe` &nbsp;-&nbsp; by @sheremet-va in https://github.com/vitest-dev/vitest/issues/8346 [<samp>(1a81c)</samp>](https://github.com/vitest-dev/vitest/commit/1a81c21d2)

source ↗

v4.0.0-beta.6Breaking

- Rewrite spying implementation to make mocking more intuitive &nbsp;-&nbsp; by @sheremet-va in https://github.com/vitest-dev/vitest/issues/8363 [<samp>(9e412)</samp>](https://github.com/vitest-dev/vitest/commit/9e412de35) - **reporter**: Remove deprecated APIs &nbsp;-&nbsp; by @AriPerkkio and @sheremet-va in https://github.com/vitest-dev/vitest/issues/8223 [<samp>(149f8)</samp>](https://github.com/vitest-dev/vitest/commit/149f8e509)

source ↗

v4.0.0-beta.8Breaking

- Remove deprecated APIs &nbsp;-&nbsp; by @sheremet-va in https://github.com/vitest-dev/vitest/issues/8428 [<samp>(a1cb9)</samp>](https://github.com/vitest-dev/vitest/commit/a1cb9719a)

source ↗

v4.0.0-beta.9Breaking

- Remove `minWorkers` and set it automatically to 0 in non watch mode &nbsp;-&nbsp; by @sheremet-va in https://github.com/vitest-dev/vitest/issues/8454 [<samp>(2c2d1)</samp>](https://github.com/vitest-dev/vitest/commit/2c2d1d4ce)

source ↗

v4.0.0-beta.10Breaking

- **browser**: Require a provider factory instead of a string &nbsp;-&nbsp; by @sheremet-va in https://github.com/vitest-dev/vitest/issues/8445 [<samp>(606cb)</samp>](https://github.com/vitest-dev/vitest/commit/606cb9e3e)

source ↗

v4.0.0-beta.11Breaking

- Verbose reporter prints tests in a list, introduce `tree` reporter &nbsp;-&nbsp; by @sheremet-va and @AriPerkkio in https://github.com/vitest-dev/vitest/issues/8500 [<samp>(25fd3)</samp>](https://github.com/vitest-dev/vitest/commit/25fd32bf0) - Include shadow root contents in pretty-format output &nbsp;-&nbsp; by @wkillerud in https://github.com/vitest-dev/vitest/issues/8545 [<samp>(9e722)</samp>](https://github.com/vitest-dev/vitest/commit/9e722834a) - **expect**: Pass current equality testers to asymmetric matcher &nbsp;-&nbsp; by @hi-ogawa in https://github.com/vitest-dev/vitest/issues/6825 [<samp>(965ce)</samp>](https://github.com/vitest-dev/vitest/commit/965cefc19) - **projects**: Allow only files that have "vitest.config" or "vite.config" in the name &nbsp;-&nbsp; by @sheremet-va in https://github.com/vitest-dev/vitest/issues/8542 [<samp>(304bc)</samp>](https://github.com/vitest-dev/vitest/commit/304bc20f0)

source ↗

v4.0.0-beta.12Breaking

- Remove deprecated order from test() API &nbsp;-&nbsp; by @sheremet-va in https://github.com/vitest-dev/vitest/issues/8594 [<samp>(4d419)</samp>](https://github.com/vitest-dev/vitest/commit/4d41928c6)

source ↗

v4.0.0-beta.14Breaking

- Introduce separate packages for browser mode providers &nbsp;-&nbsp; by @sheremet-va in https://github.com/vitest-dev/vitest/issues/8629 [<samp>(0dc93)</samp>](https://github.com/vitest-dev/vitest/commit/0dc93ea98)

source ↗

v4.0.0-beta.19Breaking

- Rewrite pools without `tinypool` &nbsp;-&nbsp; by @AriPerkkio and @sheremet-va in https://github.com/vitest-dev/vitest/issues/8705 [<samp>(4822d)</samp>](https://github.com/vitest-dev/vitest/commit/4822d047a)

source ↗

v4.0.0Breaking

- Remove `'basic'` reporter &nbsp;-&nbsp; by @AriPerkkio in https://github.com/vitest-dev/vitest/issues/7884 [<samp>(82fcf)</samp>](https://github.com/vitest-dev/vitest/commit/82fcf5d53) - Simplify default exclude pattern &nbsp;-&nbsp; by @sheremet-va in https://github.com/vitest-dev/vitest/issues/6287 [<samp>(14c50)</samp>](https://github.com/vitest-dev/vitest/commit/14c507200) - Remove deprecated getSourceMap &nbsp;-&nbsp; by @sheremet-va in https://github.com/vitest-dev/vitest/issues/8194 [<samp>(ff934)</samp>](https://github.com/vitest-dev/vitest/commit/ff93444f8) - Replace deprecated ErrorWithDiff with TestError &nbsp;-&nbsp; by @sheremet-va in https://github.com/vitest-dev/vitest/issues/8195 [<samp>(da59e)</samp>](https://github.com/vitest-dev/vitest/commit/da59eb887) - Remove UserConfig type in favor of ViteUserConfig &nbsp;-&nbsp; by @sheremet-va in https://github.com/vitest-dev/vitest/issues/8196 [<samp>(22f7f)</samp>](https://github.com/vitest-dev/vitest/commit/22f7f2db5) - Remove deprecated coverage options in favor of `vitest/node` exports &nbsp;-&nbsp; by @sheremet-va in https://github.com/vitest-dev/vitest/issues/8197 [<samp>(dc848)</samp>](https://github.com/vitest-dev/vitest/commit/dc8486d22) - Remove deprecated internal helpers and environment exports &nbsp;-&nbsp; by @sheremet-va in https://github.com/vitest-dev/vitest/issues/8198 [<samp>(4703c)</samp>](https://github.com/vitest-dev/vitest/commit/4703cf850) - Remove deprecated typecheck and runner types &nbsp;-&nbsp; by @sheremet-va in https://github.com/vitest-dev/vitest/issues/8199 [<samp>(89a1c)</samp>](https://github.com/vitest-dev/vitest/commit/89a1cb626) - Remove Node types from the main entry point, use `vitest/node` instead &nbsp;-&nbsp; by @sheremet-va in https://github.com/vitest-dev/vitest/issues/8200 [<samp>(1e60c)</samp>](https://github.com/vitest-dev/vitest/commit/1e60c4f44) - Remove support for Vite 5 &nbsp;-&nbsp; by @sheremet-va in https://github.com/vitest-dev/vitest/issues/8202 [<samp>(cb8b0)</samp>](https://github.com/vitest-dev/vitest/commit/cb8b03bac) - Remove deprecated types &nbsp;-&nbsp; by @sheremet-va in https://github.com/vitest-dev/vitest/issues/8203 [<samp>(66bee)</samp>](https://github.com/vitest-dev/vitest/commit/66bee836f) - Remove deprecated environmentMatchGlobs and poolMatchGlobs &nbsp;-&nbsp; by @sheremet-va in https://github.com/vitest-dev/vitest/issues/8205 [<samp>(be11d)</samp>](https://github.com/vitest-dev/vitest/commit/be11d374c) - Remove deprecated `workspace` option in favor of `projects` &nbsp;-&nbsp; by @sheremet-va in https://github.com/vitest-dev/vitest/issues/8218 [<samp>(76fb7)</samp>](https://github.com/vitest-dev/vitest/commit/76fb75d42) - Ignore `--standalone` when CLI filename filter is used &nbsp;-&nbsp; by @AriPerkkio in https://github.com/vitest-dev/vitest/issues/8262 [<samp>(013bf)</samp>](https://github.com/vitest-dev/vitest/commit/013bf2cb2) - Use module-runner instead of vite-node &nbsp;-&nbsp; by @sheremet-va and @AriPerkkio in https://github.com/vitest-dev/vitest/issues/8208 [<samp>(9be01)</samp>](https://github.com/vitest-dev/vitest/commit/9be01ba59) - Rewrite spying implementation to make module mocking more intuitive &nbsp;-&nbsp; by @sheremet-va in https://github.com/vitest-dev/vitest/issues/8363 [<samp>(9e412)</samp>](https://github.com/vitest-dev/vitest/commit/9e412de35) - Remove deprecated APIs &nbsp;-&nbsp; by @sheremet-va in https://github.com/vitest-dev/vitest/issues/8428 [<samp>(a1cb9)</samp>](https://github.com/vitest-dev/vitest/commit/a1cb9719a) - Remove `minWorkers` and set it automatically to 0 in non watch mode &nbsp;-&nbsp; by @sheremet-va in https://github.com/vitest-dev/vitest/issues/8454 [<samp>(2c2d1)</samp>](https://github.com/vitest-dev/vitest/commit/2c2d1d4ce) - Verbose reporter prints tests in a list, introduce `tree` reporter &nbsp;-&nbsp; by @sheremet-va and @AriPerkkio in https://github.com/vitest-dev/vitest/issues/8500 [<samp>(25fd3)</samp>](https://github.com/vitest-dev/vitest/commit/25fd32bf0) - Include shadow root contents in pretty-format output &nbsp;-&nbsp; by @wkillerud in https://github.com/vitest-dev/vitest/issues/8545 [<samp>(9e722)</samp>](https://github.com/vitest-dev/vitest/commit/9e722834a) - Remove deprecated order from test() API &nbsp;-&nbsp; by @sheremet-va in https://github.com/vitest-dev/vitest/issues/8594 [<samp>(4d419)</samp>](https://github.com/vitest-dev/vitest/commit/4d41928c6) - Rewrite pools without `tinypool` &nbsp;-&nbsp; by @AriPerkkio and @sheremet-va in https://github.com/vitest-dev/vitest/issues/8705 [<samp>(4822d)</samp>](https://github.com/vitest-dev/vitest/commit/4822d047a) - **browser**: Require a provider factory instead of a string &nbsp;-&nbsp; by @sheremet-va in https://github.com/vitest-dev/vitest/issues/8445 [<samp>(606cb)</samp>](https://github.com/vitest-dev/vitest/commit/606cb9e3e) - **expect**: Pass current equality testers to asymmetric matcher &nbsp;-&nbsp; by @hi-ogawa in https://github.com/vitest-dev/vitest/issues/6825 [<samp>(965ce)</samp>](https://github.com/vitest-dev/vitest/commit/965cefc19) - **projects**: Allow only files that have "vitest.config" or "vite.config" in the name &nbsp;-&nbsp; by @sheremet-va in https://github.com/vitest-dev/vitest/issues/8542 [<samp>(304bc)</samp>](https://github.com/vitest-dev/vitest/commit/304bc20f0) - **reporter**: Remove deprecated APIs &nbsp;-&nbsp; by @AriPerkkio and @sheremet-va in https://github.com/vitest-dev/vitest/issues/8223 [<samp>(149f8)</samp>](https://github.com/vitest-dev/vitest/commit/149f8e509) - **runner**: Set mode to `todo` if no function is passed down to `test` or `describe` &nbsp;-&nbsp; by @sheremet-va in https://github.com/vitest-dev/vitest/issues/8346 [<samp>(1a81c)</samp>](https://github.com/vitest-dev/vitest/commit/1a81c21d2) - **snapshot**: Fail test with obsolete snapshot on CI &nbsp;-&nbsp; by @hi-ogawa in https://github.com/vitest-dev/vitest/issues/7963 [<samp>(4d84f)</samp>](https://github.com/vitest-dev/vitest/commit/4d84f0ac6) - **spy**: Support spying on classes &nbsp;-&nbsp; by @sheremet-va in https://github.com/vitest-dev/vitest/issues/6160 [<samp>(abc0d)</samp>](https://github.com/vitest-dev/vitest/commit/abc0d8273)

source ↗

v3.0.0-beta.1Breaking

- `spy.mockReset` changes &nbsp;-&nbsp; by @Lordfirespeed in https://github.com/vitest-dev/vitest/issues/6426 [<samp>(db7a8)</samp>](https://github.com/vitest-dev/vitest/commit/db7a8888) - Pass down context to test hooks &nbsp;-&nbsp; by @sheremet-va in https://github.com/vitest-dev/vitest/issues/7034 [<samp>(82c2e)</samp>](https://github.com/vitest-dev/vitest/commit/82c2e244) - Support Vite 6 &nbsp;-&nbsp; by @sheremet-va in https://github.com/vitest-dev/vitest/issues/7026 [<samp>(7abe8)</samp>](https://github.com/vitest-dev/vitest/commit/7abe854c) - **runner**: Support `describe(..., { shuffle: boolean })` and inherit from parent suite &nbsp;-&nbsp; by @hi-ogawa in https://github.com/vitest-dev/vitest/issues/6670 [<samp>(aa1da)</samp>](https://github.com/vitest-dev/vitest/commit/aa1dac3d) - **snapshot**: Reset snapshot state for `retry` and `repeats` &nbsp;-&nbsp; by @hi-ogawa in https://github.com/vitest-dev/vitest/issues/6817 [<samp>(e8ce9)</samp>](https://github.com/vitest-dev/vitest/commit/e8ce94cf) - **vitest**: Don't expose default toFake config &nbsp;-&nbsp; by @sheremet-va in https://github.com/vitest-dev/vitest/issues/6288 [<samp>(e3144)</samp>](https://github.com/vitest-dev/vitest/commit/e3144fd8)

source ↗

v3.0.0-beta.2Breaking

- **expect**: Check more properties for error equality &nbsp;-&nbsp; by @hi-ogawa and @sheremet-va in https://github.com/vitest-dev/vitest/issues/5876 [<samp>(10023)</samp>](https://github.com/vitest-dev/vitest/commit/100230e9) - **spy**: SpyOn reuses mock if method is already spyed on &nbsp;-&nbsp; by @sheremet-va and @hi-ogawa in https://github.com/vitest-dev/vitest/issues/6464 [<samp>(b3e43)</samp>](https://github.com/vitest-dev/vitest/commit/b3e43d04)

source ↗

v3.0.0-beta.4Breaking

- **deps**: Update fake-timers to v14.0.0 &nbsp;-&nbsp; by @xxzefgh and @hi-ogawa in https://github.com/vitest-dev/vitest/issues/7097 [<samp>(c98b4)</samp>](https://github.com/vitest-dev/vitest/commit/c98b4b1c)

source ↗

v3.0.0Breaking

- `spy.mockReset` changes &nbsp;-&nbsp; by @Lordfirespeed in https://github.com/vitest-dev/vitest/issues/6426 [<samp>(db7a8)</samp>](https://github.com/vitest-dev/vitest/commit/db7a8888) - Pass down context to test hooks &nbsp;-&nbsp; by @sheremet-va in https://github.com/vitest-dev/vitest/issues/7034 [<samp>(82c2e)</samp>](https://github.com/vitest-dev/vitest/commit/82c2e244) - Support Vite 6 &nbsp;-&nbsp; by @sheremet-va in https://github.com/vitest-dev/vitest/issues/7026 [<samp>(7abe8)</samp>](https://github.com/vitest-dev/vitest/commit/7abe854c) - **coverage**: Always exclude test files &nbsp;-&nbsp; by @AriPerkkio in https://github.com/vitest-dev/vitest/issues/7254 [<samp>(b5268)</samp>](https://github.com/vitest-dev/vitest/commit/b5268965) - **deps**: Update fake-timers to v14.0.0 &nbsp;-&nbsp; by @xxzefgh and @hi-ogawa in https://github.com/vitest-dev/vitest/issues/7097 [<samp>(c98b4)</samp>](https://github.com/vitest-dev/vitest/commit/c98b4b1c) - **expect**: Check more properties for error equality &nbsp;-&nbsp; by @hi-ogawa and @sheremet-va in https://github.com/vitest-dev/vitest/issues/5876 [<samp>(10023)</samp>](https://github.com/vitest-dev/vitest/commit/100230e9) - **runner**: Support `describe(..., { shuffle: boolean })` and inherit from parent suite &nbsp;-&nbsp; by @hi-ogawa in https://github.com/vitest-dev/vitest/issues/6670 [<samp>(aa1da)</samp>](https://github.com/vitest-dev/vitest/commit/aa1dac3d) - **snapshot**: Reset snapshot state for `retry` and `repeats` &nbsp;-&nbsp; by @hi-ogawa in https://github.com/vitest-dev/vitest/issues/6817 [<samp>(e8ce9)</samp>](https://github.com/vitest-dev/vitest/commit/e8ce94cf) - **spy**: SpyOn reuses mock if method is already spyed on &nbsp;-&nbsp; by @sheremet-va and @hi-ogawa in https://github.com/vitest-dev/vitest/issues/6464 [<samp>(b3e43)</samp>](https://github.com/vitest-dev/vitest/commit/b3e43d04) - **vitest**: Don't expose default toFake config &nbsp;-&nbsp; by @sheremet-va in https://github.com/vitest-dev/vitest/issues/6288 [<samp>(e3144)</samp>](https://github.com/vitest-dev/vitest/commit/e3144fd8)

source ↗

v2.1.0Breaking

- **workspace**: - Correctly resolve workspace globs and file paths &nbsp;-&nbsp; by @sheremet-va in https://github.com/vitest-dev/vitest/issues/6316 [<samp>(afdcb)</samp>](https://github.com/vitest-dev/vitest/commit/afdcb8f2) - This changes how the custom glob pattern in the workspace config is treated. _Any_ file matching the glob is considered a Vitest config file. Any folder matching the glob pattern is treated as a workspace project and is subject to the regular config resolution (single `vitest.config.ts` or `vite.config.ts` inside the folder) - For example, `projects/*` will match anything inside the `projects` folder. If it's a folder, we try to find the config inside that folder (if there is none, it is still treated as a project with the default config). If it's a file, it will be treated as a Vitest config. `projects/**/*` previously would assume that you only wanted to have folders as projects, but now it will match _every single file_ inside`projects`. - This change doesn't affect non-glob usage.

source ↗

v2.0.0-beta.1Breaking

- Remove the empty suite from the runner &nbsp;-&nbsp; by @sheremet-va in https://github.com/vitest-dev/vitest/issues/5435 [<samp>(dbbbe)</samp>](https://github.com/vitest-dev/vitest/commit/dbbbe430) - Remove --segfault-retry &nbsp;-&nbsp; by @sheremet-va in https://github.com/vitest-dev/vitest/issues/5514 [<samp>(ed60e)</samp>](https://github.com/vitest-dev/vitest/commit/ed60e405) - Run suite hooks in a stack &nbsp;-&nbsp; by @sheremet-va in https://github.com/vitest-dev/vitest/issues/5609 [<samp>(1277d)</samp>](https://github.com/vitest-dev/vitest/commit/1277dc1e) - Enable `coverage.ignoreEmptyLines` by default &nbsp;-&nbsp; by @AriPerkkio in https://github.com/vitest-dev/vitest/issues/5543 [<samp>(31994)</samp>](https://github.com/vitest-dev/vitest/commit/31994942) - Add correct location and snapshot fields in json reporter &nbsp;-&nbsp; by @sheremet-va in https://github.com/vitest-dev/vitest/issues/5434 [<samp>(bcccc)</samp>](https://github.com/vitest-dev/vitest/commit/bcccce6d) - Update dependency chai to v5 &nbsp;-&nbsp; by @renovate[bot] and @sheremet-va in https://github.com/vitest-dev/vitest/issues/5135 [<samp>(73646)</samp>](https://github.com/vitest-dev/vitest/commit/73646b63) - Remove watchExclude &nbsp;-&nbsp; by @patak-dev in https://github.com/vitest-dev/vitest/issues/5177 [<samp>(d7371)</samp>](https://github.com/vitest-dev/vitest/commit/d7371eae)

source ↗

v2.0.0-beta.2Breaking

- Change default `pool` to `'forks'` &nbsp;-&nbsp; by @AriPerkkio in https://github.com/vitest-dev/vitest/issues/5047 [<samp>(7f8f9)</samp>](https://github.com/vitest-dev/vitest/commit/7f8f9c0c)

source ↗

v2.0.0-beta.3Breaking

- Don't exit process if config failed &nbsp;-&nbsp; by @sheremet-va in https://github.com/vitest-dev/vitest/issues/5715 [<samp>(f232f)</samp>](https://github.com/vitest-dev/vitest/commit/f232fdd6)

source ↗

v2.0.0-beta.5Breaking

- `--merge-reports` to support coverage &nbsp;-&nbsp; by @AriPerkkio in https://github.com/vitest-dev/vitest/issues/5736 [<samp>(b7438)</samp>](https://github.com/vitest-dev/vitest/commit/b7438b9be) - Add promise-based return assertions, do not auto-resolve returned promises &nbsp;-&nbsp; by @sheremet-va in https://github.com/vitest-dev/vitest/issues/5749 [<samp>(5f710)</samp>](https://github.com/vitest-dev/vitest/commit/5f710182e) - Do not exit process if global setup has failed &nbsp;-&nbsp; by @sheremet-va in https://github.com/vitest-dev/vitest/issues/5726 [<samp>(ddb09)</samp>](https://github.com/vitest-dev/vitest/commit/ddb09eb12)

source ↗

v2.0.0-beta.7Breaking

- Add meta to json output &nbsp;-&nbsp; by @sheremet-va in https://github.com/vitest-dev/vitest/issues/5802 [<samp>(dd754)</samp>](https://github.com/vitest-dev/vitest/commit/dd754c10)

source ↗

Check what changed for vitest since your installed version, live.

Open the playground →