5Replace loupe.inspect with pretty-format - by @hi-ogawa, **Claude Opus 5 (1M context)** and **OpenAI Codex** in https://github.com/vitest-dev/vitest/issues/9609 <samp>(3f802)</samp>
|^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
=help: Check any code or snapshots that depend on the previous loupe.inspect output format.
breaking[2]:Quotes are removed from string values in the $ variable of test.for/each titles.
6Remove quotes from string values in test.for/each title $ variable (take 2) - by @hi-ogawa in https://github.com/vitest-dev/vitest/issues/10170 <samp>(04d37)</samp>
7Default attachmentsDir from .vitest-attachements/ to .vitest/attachments/ - by @MdSadiqMd in https://github.com/vitest-dev/vitest/issues/10186 <samp>(1ba73)</samp>
8Remove sequential test/suite options in favor of concurrent - by @hi-ogawa and **OpenAI Codex** in https://github.com/vitest-dev/vitest/issues/10198 <samp>(9229f)</samp>
9Represent locator as an object instead of a string - by @sheremet-va in https://github.com/vitest-dev/vitest/issues/10212 <samp>(80f07)</samp>
13Fail expect.poll when function didn't resolve in time - by @hi-ogawa and **OpenAI Codex** in https://github.com/vitest-dev/vitest/issues/10233 <samp>(4df04)</samp>
15toHaveTextContent is strict, add toMatchTextContent as alternative - by @sheremet-va in https://github.com/vitest-dev/vitest/issues/10473 <samp>(18f30)</samp>
16Don't lookup config file from ancestor directories - by @hi-ogawa, **OpenAI Codex** and **Hiroshi Ogawa** in https://github.com/vitest-dev/vitest/issues/10428 <samp>(945d9)</samp>
29Use > as separator in -t, calculate only once - by @sheremet-va in https://github.com/vitest-dev/vitest/issues/10686 <samp>(a0b20)</samp>
|^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
=help: Update any -t filters that used the previous separator.
breaking[14]:Asynchronous assertions that are not awaited now fail the test.
30Fail the test when an asynchronous assertion is not awaited - by @sheremet-va in https://github.com/vitest-dev/vitest/issues/10868 <samp>(86d4a)</samp>
32Parse files statically in vitest list by default - by @sheremet-va in https://github.com/vitest-dev/vitest/issues/11088 <samp>(51e94)</samp>
|^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
=help: Check whether vitest list output changes for your tests, especially dynamically generated tests.
breaking[17]:The blob reporter and --merge-reports default to .vitest/blob/.
48blob reporter and --merge-reports default to .vitest/blob/ - by @AriPerkkio in https://github.com/vitest-dev/vitest/issues/10232 <samp>(d22b0)</samp>
49Write json and junit reporter output files to .vitest by default - by @hi-ogawa, **Hiroshi Ogawa**, **OpenCode (gpt-5.6-sol)** and @AriPerkkio in https://github.com/vitest-dev/vitest/issues/10621 <samp>(58577)</samp>
Vitest 5 is officially out! This release focuses on performance and brings a lot of new features while fixing long-standing bugs. See our [blog post](https://vitest.dev/blog/vitest-5.html) for the official announcement.
### ๐จ Breaking Changes
- Replace `loupe.inspect` with pretty-format - by @hi-ogawa, **Claude Opus 5 (1M context)** and **OpenAI 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) - by @hi-ogawa in https://github.com/vitest-dev/vitest/issues/10170 [<samp>(04d37)</samp>](https://github.com/vitest-dev/vitest/commit/04d37e9d7)
- Default `attachmentsDir` from `.vitest-attachements/` to `.vitest/attachments/` - 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` - by @hi-ogawa and **OpenAI 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 - 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 - 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 - by @sheremet-va in https://github.com/vitest-dev/vitest/issues/10222 [<samp>(994c6)</samp>](https://github.com/vitest-dev/vitest/commit/994c6ddb9)
- Require Node.js 22 and Vite 6.4 - 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 - by @hi-ogawa and **OpenAI Codex** in https://github.com/vitest-dev/vitest/issues/10233 [<samp>(4df04)</samp>](https://github.com/vitest-dev/vitest/commit/4df048c11)
- Throw an error if hoistable methods are outside the top level scope - 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 - by @sheremet-va in https://github.com/vitest-dev/vitest/issues/10473 [<samp>(18f30)</samp>](https://github.com/vitest-dev/vitest/commit/18f303079)
- Don't lookup config file from ancestor directories - by @hi-ogawa, **OpenAI 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 - 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 - by @hi-ogawa, **Hiroshi Ogawa** and **OpenAI 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 - by @sheremet-va in https://github.com/vitest-dev/vitest/issues/10516 [<samp>(bdd98)</samp>](https://github.com/vitest-dev/vitest/commit/bdd985433)
- Add `screenshotDirectory` config to `browser.expect.toMatchScreenshot` - 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` - by @hi-ogawa, **Hiroshi Ogawa** and **OpenCode (gpt-5.6-sol)** in https://github.com/vitest-dev/vitest/issues/10654 [<samp>(f8b15)</samp>](https://github.com/vitest-dev/vitest/commit/f8b1532fe)
- Remove webdriverio package - 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 - 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 - by @sheremet-va in https://github.com/vitest-dev/vitest/issues/10293 [<samp>(334ed)</samp>](https://github.com/vitest-dev/vitest/commit/334edef92)
- Separate config resolution from the server creation - by @sheremet-va in https://github.com/vitest-dev/vitest/issues/10554 [<samp>(1c0ec)</samp>](https://github.com/vitest-dev/vitest/commit/1c0ec3444)
- Inline projects extend the root config by default - by @sheremet-va in https://github.com/vitest-dev/vitest/issues/10750 [<samp>(fec00)</samp>](https://github.com/vitest-dev/vitest/commit/fec001ad3)
- Enable mocking Temporal without fake timers - by @fabon-f, **Hiroshi Ogawa** and **OpenCode (gpt-5.6-sol)** in https://github.com/vitest-dev/vitest/issues/10757 [<samp>(ac2d4)</samp>](https://github.com/vitest-dev/vitest/commit/ac2d46b42)
- Support nested projects - by @sheremet-va in https://github.com/vitest-dev/vitest/issues/10846 [<samp>(ec367)</samp>](https://github.com/vitest-dev/vitest/commit/ec367cf2a)
- Use `>` as separator in `-t`, calculate `only` once - by @sheremet-va in https://github.com/vitest-dev/vitest/issues/10686 [<samp>(a0b20)</samp>](https://github.com/vitest-dev/vitest/commit/a0b20bc86)
- Fail the test when an asynchronous assertion is not awaited - by @sheremet-va in https://github.com/vitest-dev/vitest/issues/10868 [<samp>(86d4a)</samp>](https://github.com/vitest-dev/vitest/commit/86d4a9da9)
- Share the Vite server between inline projects - by @sheremet-va in https://github.com/vitest-dev/vitest/issues/10848 [<samp>(d87c9)</samp>](https://github.com/vitest-dev/vitest/commit/d87c96ee4)
- Parse files statically in vitest list by default - by @sheremet-va in https://github.com/vitest-dev/vitest/issues/11088 [<samp>(51e94)</samp>](https://github.com/vitest-dev/vitest/commit/51e949416)
- **benchmark**:
- Rewrite the public API - by @sheremet-va in https://github.com/vitest-dev/vitest/issues/10113 [<samp>(19f6e)</samp>](https://github.com/vitest-dev/vitest/commit/19f6e8947)
- **browser**:
- Iframe scale - by @macarie in https://github.com/vitest-dev/vitest/issues/9745 [<samp>(b6398)</samp>](https://github.com/vitest-dev/vitest/commit/b639852cc)
- Enable `locators.exact` by default - by @sheremet-va in https://github.com/vitest-dev/vitest/issues/10430 [<samp>(e2032)</samp>](https://github.com/vitest-dev/vitest/commit/e203202f9)
- Require `sessionId` for orchestrator html request - by @hi-ogawa, **Hiroshi Ogawa** and **OpenAI Codex** in https://github.com/vitest-dev/vitest/issues/10522 [<samp>(79b7d)</samp>](https://github.com/vitest-dev/vitest/commit/79b7d8fcc)
- Save failure screenshots in `attachmentsDir` - by @macarie in https://github.com/vitest-dev/vitest/issues/10917 [<samp>(3b5bb)</samp>](https://github.com/vitest-dev/vitest/commit/3b5bbd8b4)
- **coverage**:
- `include/exclude` globs too eager - by @AriPerkkio in https://github.com/vitest-dev/vitest/issues/9818 [<samp>(edacb)</samp>](https://github.com/vitest-dev/vitest/commit/edacb0fd4)
- Allow `thresholds.perFile` to accept an object - by @vladlenskiy and @AriPerkkio in https://github.com/vitest-dev/vitest/issues/10190 [<samp>(13b78)</samp>](https://github.com/vitest-dev/vitest/commit/13b78d98b)
- **expect**:
- Fix `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>](https://github.com/vitest-dev/vitest/commit/6c3e4bdbf)
- **mocker**:
- Deserialize automock as automock - 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/` - by @AriPerkkio in https://github.com/vitest-dev/vitest/issues/10232 [<samp>(d22b0)</samp>](https://github.com/vitest-dev/vitest/commit/d22b029ae)
- Write json and junit reporter output files to `.vitest` by default - by @hi-ogawa, **Hiroshi Ogawa**, **OpenCode (gpt-5.6-sol)** and @AriPerkkio in https://github.com/vitest-dev/vitest/issues/10621 [<samp>(58577)</samp>](https://github.com/vitest-dev/vitest/commit/58577290a)
- **spy**:
- Preserve class mock prototype methods on instances - by @sheremet-va in https://github.com/vitest-dev/vitest/issues/10910 [<samp>(6093d)</samp>](https://github.com/vitest-dev/vitest/commit/6093d764a)
- **types**:
- Add better promise support in expects and matchers - by @samchungy and @sheremet-va in https://github.com/vitest-dev/vitest/issues/8266 [<samp>(41f55)</samp>](https://github.com/vitest-dev/vitest/commit/41f551bce)
- **ui**:
- Harden UI API access - by @hi-ogawa, **Hiroshi Ogawa** and **OpenAI 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` - 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)
### ๐ Features
- Add `createReport` and `.vitest` report directory convention - by @AriPerkkio in https://github.com/vitest-dev/vitest/issues/9993 [<samp>(72a6d)</samp>](https://github.com/vitest-dev/vitest/commit/72a6dc257)
- Expose default reporters through `configDefaults.reporters` - by @hi-ogawa and **Claude Opus 5 (1M context)** in https://github.com/vitest-dev/vitest/issues/10219 [<samp>(083f6)</samp>](https://github.com/vitest-dev/vitest/commit/083f6bdd6)
- Support merge reports for non-sharded multi-environment runs (take 2) - by @hi-ogawa, **Claude Opus 5 (1M context)**, **OpenAI Codex** and @AriPerkkio in https://github.com/vitest-dev/vitest/issues/10031 [<samp>(e60b2)</samp>](https://github.com/vitest-dev/vitest/commit/e60b2f49e)
- Add `logger.formatError` - by @hi-ogawa and **OpenAI Codex** in https://github.com/vitest-dev/vitest/issues/10268 [<samp>(2c5f3)</samp>](https://github.com/vitest-dev/vitest/commit/2c5f3ee2f)
- Support typescript build mode - by @lishaduck in https://github.com/vitest-dev/vitest/issues/9870 [<samp>(106da)</samp>](https://github.com/vitest-dev/vitest/commit/106da5896)
- Add toggable `injectCjsGlobals` option - by @sheremet-va in https://github.com/vitest-dev/vitest/issues/10709 [<samp>(82671)</samp>](https://github.com/vitest-dev/vitest/commit/826714ece)
- Promote fsModuleCache to a top-level option - by @sheremet-va in https://github.com/vitest-dev/vitest/issues/10734 [<samp>(78ed7)</samp>](https://github.com/vitest-dev/vitest/commit/78ed73afd)
- Support non-ascii characters in `for/each` title placeholders - by @k-yle in https://github.com/vitest-dev/vitest/issues/10773 [<samp>(15e0a)</samp>](https://github.com/vitest-dev/vitest/commit/15e0af953)
- Report the duration breakdown as percentages - by @sheremet-va and @AriPerkkio in https://github.com/vitest-dev/vitest/issues/10820 [<samp>(c67d2)</samp>](https://github.com/vitest-dev/vitest/commit/c67d296f4)
- Promote parseSpecifications out of experimental - by @sheremet-va in https://github.com/vitest-dev/vitest/issues/11087 [<samp>(b628c)</samp>](https://github.com/vitest-dev/vitest/commit/b628cb680)
- Promote clearCache out of experimental - by @sheremet-va in https://github.com/vitest-dev/vitest/issues/11086 [<samp>(d4fe1)</samp>](https://github.com/vitest-dev/vitest/commit/d4fe1986f)
- **api**:
- Expose logs recorded during the test - by @sheremet-va in https://github.com/vitest-dev/vitest/issues/10277 [<samp>(cba20)</samp>](https://github.com/vitest-dev/vitest/commit/cba2036a1)
- **benchmark**:
- Add pluggable benchmark provider API - by @GuillaumeLagrange and @sheremet-va in https://github.com/vitest-dev/vitest/issues/10799 [<samp>(86c70)</samp>](https://github.com/vitest-dev/vitest/commit/86c700ed8)
- **browser**:
- Export aria tree utils - by @hi-ogawa in https://github.com/vitest-dev/vitest/issues/10171 [<samp>(c3423)</samp>](https://github.com/vitest-dev/vitest/commit/c3423014c)
- Support dom snapshot trace view - by @hi-ogawa, **Claude Opus 5 (1M context)** and **OpenAI Codex** in https://github.com/vitest-dev/vitest/issues/10102 [<samp>(7eddd)</samp>](https://github.com/vitest-dev/vitest/commit/7eddd273d)
- Provide project reference in `ToMatchScreenshotResolvePath` - by @macarie and @sheremet-va in https://github.com/vitest-dev/vitest/issues/10138 [<samp>(16654)</samp>](https://github.com/vitest-dev/vitest/commit/166544e39)
- Show aria tree on locator element error - by @hi-ogawa and **OpenAI Codex** in https://github.com/vitest-dev/vitest/issues/10257 [<samp>(04f04)</samp>](https://github.com/vitest-dev/vitest/commit/04f04cdd1)
- Support custom `kind` in `page.mark` - by @AriPerkkio in https://github.com/vitest-dev/vitest/issues/10302 [<samp>(053e8)</samp>](https://github.com/vitest-dev/vitest/commit/053e8b0d1)
- Live update trace view on watch UI - by @hi-ogawa and **OpenAI Codex** in https://github.com/vitest-dev/vitest/issues/10296 [<samp>(78c11)</samp>](https://github.com/vitest-dev/vitest/commit/78c1169cf)
- Add `context.mark` for custom command tracing - by @AriPerkkio in https://github.com/vitest-dev/vitest/issues/10329 [<samp>(aa514)</samp>](https://github.com/vitest-dev/vitest/commit/aa5140e76)
- Show trace view steps in editor panel - by @hi-ogawa and **OpenAI Codex** in https://github.com/vitest-dev/vitest/issues/10404 [<samp>(8c4b6)</samp>](https://github.com/vitest-dev/vitest/commit/8c4b6da02)
- Display nested mark trace in UI - by @hi-ogawa, **Hiroshi Ogawa** and **OpenAI Codex** in https://github.com/vitest-dev/vitest/issues/10437 [<samp>(86ffc)</samp>](https://github.com/vitest-dev/vitest/commit/86ffc8ac6)
- **cli**:
- Add `--repeats` CLI option - by @todor-a in https://github.com/vitest-dev/vitest/issues/10504 [<samp>(ee48b)</samp>](https://github.com/vitest-dev/vitest/commit/ee48b959e)
- Support -p shorthand for --project - by @sheremet-va in https://github.com/vitest-dev/vitest/issues/10826 [<samp>(1addd)</samp>](https://github.com/vitest-dev/vitest/commit/1adddde12)
- **coverage**:
- V8 to track `node:child_process` and `node:worker_threads` contexts - by @AriPerkkio in https://github.com/vitest-dev/vitest/issues/9976 [<samp>(9baa5)</samp>](https://github.com/vitest-dev/vitest/commit/9baa5faba)
- `thresholds.autoUpdate` to receive previous threshold as argument - by @wouterkroes in https://github.com/vitest-dev/vitest/issues/10495 [<samp>(04f81)</samp>](https://github.com/vitest-dev/vitest/commit/04f81854f)
- Switch to `@vitest/istanbuljs` packages - by @AriPerkkio in https://github.com/vitest-dev/vitest/issues/11053 [<samp>(5f6a5)</samp>](https://github.com/vitest-dev/vitest/commit/5f6a5e84a)
- **junit-reporter**:
- Add jest-junit-compatible naming options - by @neumaennl, **neumaennl**, **Martin Neumann** and **Copilot** in https://github.com/vitest-dev/vitest/issues/10189 [<samp>(27393)</samp>](https://github.com/vitest-dev/vitest/commit/273933440)
- **reporter**:
- Support html reporter single file output - by @hi-ogawa, **OpenAI Codex** and **Claude Opus 5 (1M context)** in https://github.com/vitest-dev/vitest/issues/10235 [<samp>(f757e)</samp>](https://github.com/vitest-dev/vitest/commit/f757ec5e6)
- Add custom GitHub Actions summary title - by @heyJonBray and @macarie in https://github.com/vitest-dev/vitest/issues/10891 [<samp>(4363c)</samp>](https://github.com/vitest-dev/vitest/commit/4363cdb49)
- **ui**:
- Highlight editor source locations - by @sheremet-va, **Hiroshi Ogawa** and **OpenCode (gpt-5.6-sol)** in https://github.com/vitest-dev/vitest/issues/11004 [<samp>(bce2d)</samp>](https://github.com/vitest-dev/vitest/commit/bce2d3c2f)
- Navigate trace steps with keyboard and remove indirect editor focus - by @sheremet-va, **Hiroshi Ogawa** and **OpenCode (gpt-5.6-sol)** in https://github.com/vitest-dev/vitest/issues/11005 [<samp>(6816f)</samp>](https://github.com/vitest-dev/vitest/commit/6816f3b17)
- Persist trace view selection in URL - by @hi-ogawa, **Hiroshi Ogawa** and **OpenCode (gpt-5.6-sol)** in https://github.com/vitest-dev/vitest/issues/10981 [<samp>(3069e)</samp>](https://github.com/vitest-dev/vitest/commit/3069e5927)
- Toggle trace target highlight - by @hi-ogawa, **Hiroshi Ogawa** and **OpenCode (gpt-5.6-sol)** in https://github.com/vitest-dev/vitest/issues/11049 [<samp>(cd63e)</samp>](https://github.com/vitest-dev/vitest/commit/cd63e9e43)
- Add link to open playwright trace - by @hi-ogawa, **Hiroshi Ogawa** and **OpenCode (gpt-5.6-sol)** in https://github.com/vitest-dev/vitest/issues/11059 [<samp>(58f02)</samp>](https://github.com/vitest-dev/vitest/commit/58f02ae36)
- **vitest**:
- Create `vi.when()` - by @macarie in https://github.com/vitest-dev/vitest/issues/10174 [<samp>(3900e)</samp>](https://github.com/vitest-dev/vitest/commit/3900e6349)
- **vm**:
- Support `require(esm)` in vm pools - by @sheremet-va in https://github.com/vitest-dev/vitest/issues/10829 [<samp>(01298)</samp>](https://github.com/vitest-dev/vitest/commit/01298e5b3)
### ๐ Bug Fixes
- Global `sequence.concurrent: true` with top-level `test(..., { concurrent: false })` + depreacte `sequential` test API and options - by @hi-ogawa, **OpenAI Codex** and @sheremet-va in https://github.com/vitest-dev/vitest/issues/10194 [<samp>(9387f)</samp>](https://github.com/vitest-dev/vitest/commit/9387f57cf)
- Test `tags` options should overwrite inherited suite options + inherit suite options in `task` API - by @hi-ogawa and **OpenAI Codex** in https://github.com/vitest-dev/vitest/issues/10216 [<samp>(457db)</samp>](https://github.com/vitest-dev/vitest/commit/457db297b)
- Udpate optimize deps config - by @sheremet-va in https://github.com/vitest-dev/vitest/issues/10223 [<samp>(95dc6)</samp>](https://github.com/vitest-dev/vitest/commit/95dc6e3f1)
- Shell injection safety via github.ref_name in publish workflow - by @lloyd-c137 and **lloyd-c137** in https://github.com/vitest-dev/vitest/issues/10327 [<samp>(dd020)</samp>](https://github.com/vitest-dev/vitest/commit/dd0207f4d)
- Make `attachmentsDir` root only config - by @hi-ogawa and **OpenAI Codex** in https://github.com/vitest-dev/vitest/issues/10334 [<samp>(fab1b)</samp>](https://github.com/vitest-dev/vitest/commit/fab1b6020)
- Apply cjs interop for truthy `__esModule` - by @hi-ogawa in https://github.com/vitest-dev/vitest/issues/10363 [<samp>(2b135)</samp>](https://github.com/vitest-dev/vitest/commit/2b13547a5)
- Preserve `vi.defineHelper` callsite for async error stack - by @macayu17 and @hi-ogawa in https://github.com/vitest-dev/vitest/issues/10415 [<samp>(ac697)</samp>](https://github.com/vitest-dev/vitest/commit/ac6971ca2)
- Respect `disableConsoleIntercept` in browser mode - by @Copilot, **Hiroshi Ogawa**, @hi-ogawa and **OpenAI Codex** in https://github.com/vitest-dev/vitest/issues/10391 [<samp>(66110)</samp>](https://github.com/vitest-dev/vitest/commit/66110d271)
- ForceRerunTriggers uses directory globs against files - by @Patrick-Clausen and **Patrick Clausen** in https://github.com/vitest-dev/vitest/issues/10421 and https://github.com/vitest-dev/vitest/issues/10420 [<samp>(4fee2)</samp>](https://github.com/vitest-dev/vitest/commit/4fee2e303)
- Unify typechecking and ast collection - by @sheremet-va in https://github.com/vitest-dev/vitest/issues/10449 [<samp>(af993)</samp>](https://github.com/vitest-dev/vitest/commit/af993b66b)
- Don't print typecheck warning more than once - by @sheremet-va in https://github.com/vitest-dev/vitest/issues/10461 [<samp>(15275)</samp>](https://github.com/vitest-dev/vitest/commit/152750ec0)
- Correct collumn when parsing tests - by @sheremet-va in https://github.com/vitest-dev/vitest/issues/10467 [<samp>(7c2fc)</samp>](https://github.com/vitest-dev/vitest/commit/7c2fc133e)
- Fix mixed stdout/stderr log timestamps in `onUserConsoleLog` - by @Copilot, **Hiroshi Ogawa**, @hi-ogawa and @sheremet-va in https://github.com/vitest-dev/vitest/issues/10308 [<samp>(62756)</samp>](https://github.com/vitest-dev/vitest/commit/627565475)
- Fix `importOriginal` with optimizer and query import - by @davidxharris, **David Harris**, @hi-ogawa, **Hiroshi Ogawa** and **OpenAI Codex** in https://github.com/vitest-dev/vitest/issues/10469 [<samp>(6a3bb)</samp>](https://github.com/vitest-dev/vitest/commit/6a3bb02e0)
- Correct transform time calculation in merged report - by @potatomatoooo and @hi-ogawa in https://github.com/vitest-dev/vitest/issues/10570 and https://github.com/vitest-dev/vitest/issues/10578 [<samp>(b7897)</samp>](https://github.com/vitest-dev/vitest/commit/b78972892)
- Fix `setImmediate` await in detect-async-leak - by @hi-ogawa and **Hiroshi Ogawa** in https://github.com/vitest-dev/vitest/issues/10608 [<samp>(dd62b)</samp>](https://github.com/vitest-dev/vitest/commit/dd62b84e0)
- Fix per-project `sequence` config - by @hi-ogawa, **Hiroshi Ogawa** and **OpenCode (gpt-5.6-sol)** in https://github.com/vitest-dev/vitest/issues/10659 [<samp>(40cdc)</samp>](https://github.com/vitest-dev/vitest/commit/40cdc7fd6)
- Add handshake timeout to iframe communication - by @sheremet-va in https://github.com/vitest-dev/vitest/issues/10656 [<samp>(3545f)</samp>](https://github.com/vitest-dev/vitest/commit/3545fe78f)
- Don't print column in test names when `includeTaskLocation` is enabled - by @sheremet-va in https://github.com/vitest-dev/vitest/issues/10681 [<samp>(bd9cc)</samp>](https://github.com/vitest-dev/vitest/commit/bd9cc9d8d)
- Disable server HMR before plugins read it in their config hook - by @sheremet-va in https://github.com/vitest-dev/vitest/issues/10731 [<samp>(e060b)</samp>](https://github.com/vitest-dev/vitest/commit/e060b8fa9)
- Close the pool before the Vite servers - by @sheremet-va in https://github.com/vitest-dev/vitest/issues/10725 [<samp>(96fa6)</samp>](https://github.com/vitest-dev/vitest/commit/96fa6d73d)
- Remove listeners in the typecheck worker's `off` - by @sheremet-va in https://github.com/vitest-dev/vitest/issues/10741 [<samp>(d758b)</samp>](https://github.com/vitest-dev/vitest/commit/d758b4755)
- Keep per-file isolation in vm pools when maxWorkers is 1 - by @sheremet-va in https://github.com/vitest-dev/vitest/issues/10743 [<samp>(83ab9)</samp>](https://github.com/vitest-dev/vitest/commit/83ab9a44f)
- Node.js 20 deprecation warning for `ci.yml` - by @hirehamir in https://github.com/vitest-dev/vitest/issues/10759 [<samp>(2127f)</samp>](https://github.com/vitest-dev/vitest/commit/2127fa6ce)
- Prevent node builtins double prefix - by @malobre in https://github.com/vitest-dev/vitest/issues/10630 and https://github.com/vitest-dev/vitest/issues/10767 [<samp>(22d35)</samp>](https://github.com/vitest-dev/vitest/commit/22d353a80)
- Set non-zero exit code when teardown throws during close - by @zakcutner and @AriPerkkio in https://github.com/vitest-dev/vitest/issues/10794 [<samp>(22116)</samp>](https://github.com/vitest-dev/vitest/commit/22116feb7)
- Don't race the typechecker spawn grace period on windows - by @xevrion in https://github.com/vitest-dev/vitest/issues/10814 [<samp>(b19e5)</samp>](https://github.com/vitest-dev/vitest/commit/b19e5ece9)
- Coalesce concurrent watch-mode restarts, deflake the pool stderr fixture - by @sheremet-va in https://github.com/vitest-dev/vitest/issues/10822 [<samp>(a31f8)</samp>](https://github.com/vitest-dev/vitest/commit/a31f86af7)
- Prevent `vitest --typecheck` from reporting a false success when the `tsc` process crashes - by @hitenkalda and **Hiten Kalda** in https://github.com/vitest-dev/vitest/issues/10705 [<samp>(a1b05)</samp>](https://github.com/vitest-dev/vitest/commit/a1b0565c9)
- Collect in-source tests when the module is cached - by @koutaro-masaki in https://github.com/vitest-dev/vitest/issues/10577 and https://github.com/vitest-dev/vitest/issues/10589 [<samp>(a7bf2)</samp>](https://github.com/vitest-dev/vitest/commit/a7bf2b2c8)
- Swap replace() arguments so timeout error stack shows the real message - by @lazerg in https://github.com/vitest-dev/vitest/issues/10875 [<samp>(aba0f)</samp>](https://github.com/vitest-dev/vitest/commit/aba0f9b7b)
- Stale mock metadata breaks automocking with isolate:false - by @kade-robertson in https://github.com/vitest-dev/vitest/issues/10145 and https://github.com/vitest-dev/vitest/issues/10541 [<samp>(8e210)</samp>](https://github.com/vitest-dev/vitest/commit/8e2108dda)
- Don't lose worker output on teardown, deflake timing-sensitive tests - by @sheremet-va in https://github.com/vitest-dev/vitest/issues/10842 [<samp>(1216b)</samp>](https://github.com/vitest-dev/vitest/commit/1216b5af9)
- Revive global concurrency limit for test lifecycle - by @hi-ogawa, **Hiroshi Ogawa**, **OpenCode (gpt-5.6-sol)** and @sheremet-va in https://github.com/vitest-dev/vitest/issues/10928 [<samp>(cf917)</samp>](https://github.com/vitest-dev/vitest/commit/cf9176bfc)
- Own the post-restart rerun, keep `process.exit` disabled in workers - by @sheremet-va in https://github.com/vitest-dev/vitest/issues/10963 [<samp>(5e69a)</samp>](https://github.com/vitest-dev/vitest/commit/5e69aba65)
- Preserve correct root during resolve config - by @AriPerkkio and @sheremet-va in https://github.com/vitest-dev/vitest/issues/10909 [<samp>(210ba)</samp>](https://github.com/vitest-dev/vitest/commit/210ba00cb)
- Combine multiple --project filters correctly - by @sheremet-va in https://github.com/vitest-dev/vitest/issues/10988 [<samp>(66c1c)</samp>](https://github.com/vitest-dev/vitest/commit/66c1cbb53)
- Fix `recordArtifact` location with `vi.defineHelper` - by @hi-ogawa, **Hiroshi Ogawa** and **OpenCode (gpt-5.6-sol)** in https://github.com/vitest-dev/vitest/issues/11047 [<samp>(c2186)</samp>](https://github.com/vitest-dev/vitest/commit/c21865dfd)
- Invalidate resolved setup files - by @sheremet-va in https://github.com/vitest-dev/vitest/issues/11073 and https://github.com/vitest-dev/vitest/issues/11081 [<samp>(488c0)</samp>](https://github.com/vitest-dev/vitest/commit/488c04680)
- Accept awaited value in vi.when thenResolve - by @sheremet-va in https://github.com/vitest-dev/vitest/issues/11084 [<samp>(c10a1)</samp>](https://github.com/vitest-dev/vitest/commit/c10a12900)
- Ignore computed member calls in static collection - by @sheremet-va in https://github.com/vitest-dev/vitest/issues/11085 [<samp>(130f7)</samp>](https://github.com/vitest-dev/vitest/commit/130f79b8b)
- Don't duplicte `oxc.target` if user provides a custom array - by @sheremet-va in https://github.com/vitest-dev/vitest/issues/11095 [<samp>(848d7)</samp>](https://github.com/vitest-dev/vitest/commit/848d7243e)
- Propagate --maxWorkers to projects - by @Gaurav1112 in https://github.com/vitest-dev/vitest/issues/11102 [<samp>(2122f)</samp>](https://github.com/vitest-dev/vitest/commit/2122ffdfb)
- Apply queued mocks from doMock() in queue order - by @juliandescottes and **Claude Opus 5 (1M context)** in https://github.com/vitest-dev/vitest/issues/10706 and https://github.com/vitest-dev/vitest/issues/11127 [<samp>(f08ce)</samp>](https://github.com/vitest-dev/vitest/commit/f08ce4b71)
- Add a warning if inline project has duplicate plugins due to unexpected `extends: true` - by @sheremet-va in https://github.com/vitest-dev/vitest/issues/11120 [<samp>(584cf)</samp>](https://github.com/vitest-dev/vitest/commit/584cf3084)
- Treat test.describe as a suite during static collection - by @sheremet-va in https://github.com/vitest-dev/vitest/issues/11128 [<samp>(d46a7)</samp>](https://github.com/vitest-dev/vitest/commit/d46a74722)
- **browser**:
- Fix trace highlight of shadow dom on webdriverio - by @hi-ogawa in https://github.com/vitest-dev/vitest/issues/10227 [<samp>(b01af)</samp>](https://github.com/vitest-dev/vitest/commit/b01afd26c)
- Simplify orchestrator otel carrier - by @hi-ogawa in https://github.com/vitest-dev/vitest/issues/10283 [<samp>(3514f)</samp>](https://github.com/vitest-dev/vitest/commit/3514f9fa1)
- Remove orphaned Playwright route when same module is mocked via multiple ids - by @Zelys-DFKH in https://github.com/vitest-dev/vitest/issues/9957 and https://github.com/vitest-dev/vitest/issues/10267 [<samp>(41db6)</samp>](https://github.com/vitest-dev/vitest/commit/41db6ce28)
- Skip `wrapDynamicImport` transform on ssr environment - by @hi-ogawa in https://github.com/vitest-dev/vitest/issues/10355 [<samp>(d3c96)</samp>](https://github.com/vitest-dev/vitest/commit/d3c964bfc)
- Fix stale source map on watch mode - by @hi-ogawa in https://github.com/vitest-dev/vitest/issues/10389 [<samp>(6d772)</samp>](https://github.com/vitest-dev/vitest/commit/6d772c800)
- Escape inline orchestrator scripts - by @hi-ogawa and **OpenAI Codex** in https://github.com/vitest-dev/vitest/issues/10412 [<samp>(c22cf)</samp>](https://github.com/vitest-dev/vitest/commit/c22cfb656)
- Disable client `cdp` API when `allowWrite/allowExec: false` - by @hi-ogawa and **OpenAI Codex** in https://github.com/vitest-dev/vitest/issues/10444 [<samp>(63e3b)</samp>](https://github.com/vitest-dev/vitest/commit/63e3b2eee)
- Wait for orchestrator readiness before resolving browser sessions - by @soconnor-seeq in https://github.com/vitest-dev/vitest/issues/10397 [<samp>(fe5ed)</samp>](https://github.com/vitest-dev/vitest/commit/fe5ed6bc7)
- Wait for iframe tester readiness before preparing - by @soconnor-seeq in https://github.com/vitest-dev/vitest/issues/10497 [<samp>(f2655)</samp>](https://github.com/vitest-dev/vitest/commit/f26552c63)
- Encode iframeId in tester iframe URL - by @Pduhard, **Pduhard** and **Claude Opus 5 (1M context)** in https://github.com/vitest-dev/vitest/issues/10520 and https://github.com/vitest-dev/vitest/issues/10521 [<samp>(c8bf1)</samp>](https://github.com/vitest-dev/vitest/commit/c8bf19f66)
- Always derive a positive locator action timeout - by @sheremet-va in https://github.com/vitest-dev/vitest/issues/10626 [<samp>(5b864)</samp>](https://github.com/vitest-dev/vitest/commit/5b8642120)
- Resize the browser ui only if it's not headless - by @sheremet-va in https://github.com/vitest-dev/vitest/issues/10662 [<samp>(b5c61)</samp>](https://github.com/vitest-dev/vitest/commit/b5c613051)
- Check fs access in builtin commands - by @hi-ogawa, **Hiroshi Ogawa** and **OpenCode (gpt-5.6-sol)** in https://github.com/vitest-dev/vitest/issues/10674 [<samp>(33f96)</samp>](https://github.com/vitest-dev/vitest/commit/33f96a145)
- Preserve pre-transform request defaults - by @sheremet-va in https://github.com/vitest-dev/vitest/issues/10748 [<samp>(b6060)</samp>](https://github.com/vitest-dev/vitest/commit/b60605ca7)
- Fix error stacktrace location off-by-one - by @hi-ogawa, **Hiroshi Ogawa** and **OpenCode (gpt-5.6-sol)** in https://github.com/vitest-dev/vitest/issues/10724 [<samp>(62b8d)</samp>](https://github.com/vitest-dev/vitest/commit/62b8d3b36)
- Inlined awaited import should not trigger syntax error after transform - by @smeng9, **Shaoyu Meng** and **Claude Opus 5 (1M context)** in https://github.com/vitest-dev/vitest/issues/10784 [<samp>(51acd)</samp>](https://github.com/vitest-dev/vitest/commit/51acd5778)
- Mock window.print to avoid hanging - by @aaravjaichand in https://github.com/vitest-dev/vitest/issues/7375 and https://github.com/vitest-dev/vitest/issues/10798 [<samp>(66d95)</samp>](https://github.com/vitest-dev/vitest/commit/66d95af84)
- Ignore channel events in a tester opened as a top-level window - by @simshanith in https://github.com/vitest-dev/vitest/issues/9379 and https://github.com/vitest-dev/vitest/issues/9381 [<samp>(46a3c)</samp>](https://github.com/vitest-dev/vitest/commit/46a3cf750)
- Resolve `connectTimeout` from the project config - by @lazerg in https://github.com/vitest-dev/vitest/issues/10879 and https://github.com/vitest-dev/vitest/issues/10880 [<samp>(62c79)</samp>](https://github.com/vitest-dev/vitest/commit/62c795d63)
- Prebundle vite module runner with vitest - by @lebovvskii and @sheremet-va in https://github.com/vitest-dev/vitest/issues/10836 and https://github.com/vitest-dev/vitest/issues/10856 [<samp>(37c24)</samp>](https://github.com/vitest-dev/vitest/commit/37c240158)
- Restore dependency reload warning - by @hi-ogawa, **Hiroshi Ogawa** and **OpenCode (gpt-5.6-sol)** in https://github.com/vitest-dev/vitest/issues/10913 [<samp>(90d69)</samp>](https://github.com/vitest-dev/vitest/commit/90d696d44)
- Configure internal optimizer dependencies - by @hi-ogawa, **Hiroshi Ogawa** and **OpenCode (gpt-5.6-sol)** in https://github.com/vitest-dev/vitest/issues/10915 [<samp>(a72f4)</samp>](https://github.com/vitest-dev/vitest/commit/a72f46eac)
- Trigger playwright/chromium gc on lower disk availability - by @hi-ogawa, **Hiroshi Ogawa** and **OpenCode (gpt-5.6-sol)** in https://github.com/vitest-dev/vitest/issues/10912 [<samp>(032d3)</samp>](https://github.com/vitest-dev/vitest/commit/032d31892)
- Disallow filter-only options in getBy* locators - by **Arjun** in https://github.com/vitest-dev/vitest/issues/10295 and https://github.com/vitest-dev/vitest/issues/10933 [<samp>(9b4df)</samp>](https://github.com/vitest-dev/vitest/commit/9b4df4b05)
- Fail instead of hanging when the browser stops responding - by @sheremet-va in https://github.com/vitest-dev/vitest/issues/10956 [<samp>(c496c)</samp>](https://github.com/vitest-dev/vitest/commit/c496c2e33)
- Exit gracefully when the browser disconnects during cancellation - by @sheremet-va in https://github.com/vitest-dev/vitest/issues/10962 [<samp>(67e84)</samp>](https://github.com/vitest-dev/vitest/commit/67e848564)
- Don't redirect vitest in client environment - by @sheremet-va in https://github.com/vitest-dev/vitest/issues/10975 [<samp>(aeb67)</samp>](https://github.com/vitest-dev/vitest/commit/aeb672095)
- Don't hang when `ui: true` in projects - by @AriPerkkio in https://github.com/vitest-dev/vitest/issues/10994 [<samp>(9f710)</samp>](https://github.com/vitest-dev/vitest/commit/9f710d304)
- Preserve trace popover state - by @liuluochen6-af, **Hiroshi Ogawa**, **OpenCode (gpt-5.6-sol)** and @hi-ogawa in https://github.com/vitest-dev/vitest/issues/10906 and https://github.com/vitest-dev/vitest/issues/11021 [<samp>(1bbc2)</samp>](https://github.com/vitest-dev/vitest/commit/1bbc278c2)
- Report the action error when a task times out - by @sheremet-va in https://github.com/vitest-dev/vitest/issues/11101 [<samp>(dc10f)</samp>](https://github.com/vitest-dev/vitest/commit/dc10f5f8f)
- **cache**:
- Improve `fsModuleCache` resiliency during external modifications - by @jszumski in https://github.com/vitest-dev/vitest/issues/10869 [<samp>(5eb35)</samp>](https://github.com/vitest-dev/vitest/commit/5eb3570e8)
- **cli**:
- Respect `FORCE_COLOR` over agent detection - by @dokson in https://github.com/vitest-dev/vitest/issues/10272 [<samp>(7e66b)</samp>](https://github.com/vitest-dev/vitest/commit/7e66bc726)
- Exit on `CTRL+c` even when `globalSetup` runs blocked code - by @AriPerkkio in https://github.com/vitest-dev/vitest/issues/10863 [<samp>(d568f)</samp>](https://github.com/vitest-dev/vitest/commit/d568f8ce3)
- **coverage**:
- `exclude` to not inherit negation globs from `test.include` - by @AriPerkkio in https://github.com/vitest-dev/vitest/issues/10299 [<samp>(28685)</samp>](https://github.com/vitest-dev/vitest/commit/286851ea2)
- Avoid matching sibling project roots - by @innoprej, **Shin JaeHee** and @AriPerkkio in https://github.com/vitest-dev/vitest/issues/10311 [<samp>(e30dd)</samp>](https://github.com/vitest-dev/vitest/commit/e30dd9cf6)
- Non-awaited module imports cause wrong offsets - by @AriPerkkio in https://github.com/vitest-dev/vitest/issues/10643 [<samp>(c4090)</samp>](https://github.com/vitest-dev/vitest/commit/c40901479)
- Fail fast when `coverage.reportsDirectory` conflicts between concurrent runs - by @jgamaraalv and @AriPerkkio in https://github.com/vitest-dev/vitest/issues/10466 [<samp>(833f0)</samp>](https://github.com/vitest-dev/vitest/commit/833f0936c)
- V8 to ignore Vite SSR's generated import bindings - by @AriPerkkio in https://github.com/vitest-dev/vitest/issues/11023 [<samp>(c6174)</samp>](https://github.com/vitest-dev/vitest/commit/c6174a6cf)
- Prevent crash on `/@fs/` prepended virtual files - by @AriPerkkio in https://github.com/vitest-dev/vitest/issues/11119 [<samp>(c4473)</samp>](https://github.com/vitest-dev/vitest/commit/c4473e48e)
- **deps**:
- Update ivya to fix empty aria tree snapshot - by @hi-ogawa in https://github.com/vitest-dev/vitest/issues/10218 [<samp>(f7822)</samp>](https://github.com/vitest-dev/vitest/commit/f7822ebf6)
- Update fake-timers to 15.3.2. support `toNotFake` - by @BPScott, @hi-ogawa and **OpenAI Codex** in https://github.com/vitest-dev/vitest/issues/10043 [<samp>(bbf2f)</samp>](https://github.com/vitest-dev/vitest/commit/bbf2f0df3)
- Update all non-major dependencies - by @sheremet-va in https://github.com/vitest-dev/vitest/issues/9958 [<samp>(7faa7)</samp>](https://github.com/vitest-dev/vitest/commit/7faa7b04a)
- Update all non-major dependencies - by @sheremet-va in https://github.com/vitest-dev/vitest/issues/10861 [<samp>(0188c)</samp>](https://github.com/vitest-dev/vitest/commit/0188c8135)
- Update all non-major dependencies - by @sheremet-va in https://github.com/vitest-dev/vitest/issues/10898 [<samp>(61c4b)</samp>](https://github.com/vitest-dev/vitest/commit/61c4b8024)
- Update all non-major dependencies - in https://github.com/vitest-dev/vitest/issues/10966 [<samp>(65263)</samp>](https://github.com/vitest-dev/vitest/commit/65263d74e)
- Update all non-major dependencies - in https://github.com/vitest-dev/vitest/issues/11043 [<samp>(732df)</samp>](https://github.com/vitest-dev/vitest/commit/732df2c2b)
- **expect**:
- Allow readonly arrays and sets in toBeOneOf - by @YBJ0000 in https://github.com/vitest-dev/vitest/issues/10264 and https://github.com/vitest-dev/vitest/issues/10374 [<samp>(fed11)</samp>](https://github.com/vitest-dev/vitest/commit/fed1125b0)
- Handle nullish toHaveProperty values - by @liyimil in https://github.com/vitest-dev/vitest/issues/10735 and https://github.com/vitest-dev/vitest/issues/10811 [<samp>(99e59)</samp>](https://github.com/vitest-dev/vitest/commit/99e596d33)
- **junit**:
- Include unhandled errors in JUnit XML report - by @gbleu and **Claude Opus 5 (1M context)** in https://github.com/vitest-dev/vitest/issues/10244 [<samp>(6f74e)</samp>](https://github.com/vitest-dev/vitest/commit/6f74e5e9d)
- **mocker**:
- Skip hoist transform without ast mock calls - by @hi-ogawa and **OpenAI Codex** in https://github.com/vitest-dev/vitest/issues/10410 [<samp>(0468e)</samp>](https://github.com/vitest-dev/vitest/commit/0468e1572)
- Hoist vi.mock() for vite-plus/test imports - by @Brooooooklyn and **Claude Opus 5 (1M context)** in https://github.com/vitest-dev/vitest/issues/10489 [<samp>(88376)</samp>](https://github.com/vitest-dev/vitest/commit/8837664a4)
- Restrict redirect mocks to the fs allowlist - by @sheremet-va in https://github.com/vitest-dev/vitest/issues/10972 [<samp>(8ff9b)</samp>](https://github.com/vitest-dev/vitest/commit/8ff9b9a9e)
- **pool**:
- Prevent test run hang on worker crash - by @jaxalo and @AriPerkkio in https://github.com/vitest-dev/vitest/issues/10543 [<samp>(40878)</samp>](https://github.com/vitest-dev/vitest/commit/4087802b5)
- Improve error message when worker exits unexpectedly - by @filmaj and @AriPerkkio in https://github.com/vitest-dev/vitest/issues/10587 [<samp>(76139)</samp>](https://github.com/vitest-dev/vitest/commit/76139c5a0)
- Vm pools to respect cgroupsv2 memory limit - by @milas in https://github.com/vitest-dev/vitest/issues/10721 [<samp>(3923c)</samp>](https://github.com/vitest-dev/vitest/commit/3923cab3d)
- Worker init to handle queued synchronous messages - by @lazerg and @AriPerkkio in https://github.com/vitest-dev/vitest/issues/10932 [<samp>(76096)</samp>](https://github.com/vitest-dev/vitest/commit/76096c769)
- Report the worker exit instead of a pipe error that raced it - by @sheremet-va in https://github.com/vitest-dev/vitest/issues/10964 [<samp>(59a03)</samp>](https://github.com/vitest-dev/vitest/commit/59a037354)
- **reporter**:
- Guard against non-finite slowTestThreshold in summary reporter - by @OfekDanny, **Ofek Danny**, **Claude Opus 5 (1M context)** and @AriPerkkio in https://github.com/vitest-dev/vitest/issues/10202 [<samp>(f362f)</samp>](https://github.com/vitest-dev/vitest/commit/f362f96db)
- Fix non-existing import subpath module blob serialization - by @hi-ogawa in https://github.com/vitest-dev/vitest/issues/10318 [<samp>(29cb0)</samp>](https://github.com/vitest-dev/vitest/commit/29cb06b35)
- **reporters**:
- Fix blob file name with label - by @hi-ogawa in https://github.com/vitest-dev/vitest/issues/10346 [<samp>(c5e2e)</samp>](https://github.com/vitest-dev/vitest/commit/c5e2e7530)
- `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>](https://github.com/vitest-dev/vitest/commit/f79e7db90)
- Fix missing `testModules` in `onTestRunEnd` when merging blobs from different root directory test runs - by @hi-ogawa and **OpenAI Codex** in https://github.com/vitest-dev/vitest/issues/10348 [<samp>(745b3)</samp>](https://github.com/vitest-dev/vitest/commit/745b30b64)
- Print parent describe suites when the passed-test list is hidden - by @ChihebBENCHEIKH1, **Chiheb Bencheikh** and @sheremet-va in https://github.com/vitest-dev/vitest/issues/10606 and https://github.com/vitest-dev/vitest/issues/10768 [<samp>(658af)</samp>](https://github.com/vitest-dev/vitest/commit/658affeb3)
- Display `test.name` in GitHub Actions reporter summary header - by @macarie in https://github.com/vitest-dev/vitest/issues/10887 [<samp>(49e24)</samp>](https://github.com/vitest-dev/vitest/commit/49e24fa38)
- **runner**:
- Propagate chainable flags in describe.for - by @DoriAlagem, **Dor Alagem** and @hi-ogawa in https://github.com/vitest-dev/vitest/issues/10187 [<samp>(db678)</samp>](https://github.com/vitest-dev/vitest/commit/db67831d7)
- Limit concurrency per task branch in addition to per leaf callbacks - by @hi-ogawa in https://github.com/vitest-dev/vitest/issues/10179 [<samp>(3112a)</samp>](https://github.com/vitest-dev/vitest/commit/3112abea2)
- Remove AbortSignal listener leak in withCancel - by @tomohiro86 and @AriPerkkio in https://github.com/vitest-dev/vitest/issues/10265 [<samp>(ab098)</samp>](https://github.com/vitest-dev/vitest/commit/ab09822a4)
- Don't fail collection when accessing `error.stack` throws - by @sheremet-va in https://github.com/vitest-dev/vitest/issues/10839 [<samp>(202e2)</samp>](https://github.com/vitest-dev/vitest/commit/202e27f3d)
- **snapshot**:
- Fail test when snapshot assertion is used with `test.fails` - by @hi-ogawa in https://github.com/vitest-dev/vitest/issues/10090 [<samp>(e1aa7)</samp>](https://github.com/vitest-dev/vitest/commit/e1aa7a60a)
- Treat empty string as valid snapshot - by @mayrang and @hi-ogawa in https://github.com/vitest-dev/vitest/issues/10188 [<samp>(e145d)</samp>](https://github.com/vitest-dev/vitest/commit/e145d5756)
- Support no-unsafe-eval CSP by evaluating snapshot files on server - by @hi-ogawa in https://github.com/vitest-dev/vitest/issues/10665 [<samp>(667c1)</samp>](https://github.com/vitest-dev/vitest/commit/667c13954)
- Reject when `toMatchFileSnapshot` uses same snapshot file as `toMatchSnapshot` - by @hi-ogawa, **Hiroshi Ogawa**, **OpenCode (gpt-5.6-sol)** and @sheremet-va in https://github.com/vitest-dev/vitest/issues/10978 [<samp>(17646)</samp>](https://github.com/vitest-dev/vitest/commit/17646ac72)
- **spy**:
- Support private method spy types - by @cyphercodes in https://github.com/vitest-dev/vitest/issues/10172 and https://github.com/vitest-dev/vitest/issues/10213 [<samp>(628ab)</samp>](https://github.com/vitest-dev/vitest/commit/628ab32f1)
- Point ESM namespace spy error to module mocking docs - by @ryandiginomad and **Ryan Tang** in https://github.com/vitest-dev/vitest/issues/10707 [<samp>(d6cec)</samp>](https://github.com/vitest-dev/vitest/commit/d6ceca9d7)
- **typecheck**:
- Report a checker crash on Windows instead of a spawn failure - by @sheremet-va in https://github.com/vitest-dev/vitest/issues/10907 [<samp>(77aac)</samp>](https://github.com/vitest-dev/vitest/commit/77aac87dd)
- **types**:
- Allow `changed` in configuration options - by @AriPerkkio in https://github.com/vitest-dev/vitest/issues/10651 [<samp>(0da12)</samp>](https://github.com/vitest-dev/vitest/commit/0da12aad4)
- **ui**:
- Fix duplicate colored error message - by @hi-ogawa and **OpenAI Codex** in https://github.com/vitest-dev/vitest/issues/10258 [<samp>(035e3)</samp>](https://github.com/vitest-dev/vitest/commit/035e3bb70)
- Fix missing source code in html reporter metadata when merging blobs with different root directory test runs - by @hi-ogawa and **OpenAI Codex** in https://github.com/vitest-dev/vitest/issues/10338 [<samp>(4f7c2)</samp>](https://github.com/vitest-dev/vitest/commit/4f7c2670c)
- Fix module graph in browser mode with --ui - by @hi-ogawa in https://github.com/vitest-dev/vitest/issues/10386 [<samp>(3003c)</samp>](https://github.com/vitest-dev/vitest/commit/3003c4327)
- Render ANSI color codes in editor panel inline error widget - by @Copilot, **Hiroshi Ogawa** and @hi-ogawa in https://github.com/vitest-dev/vitest/issues/10418 [<samp>(766b8)</samp>](https://github.com/vitest-dev/vitest/commit/766b8d2fa)
- Fix code editor error and annotations gadgets layout shifts - by @hi-ogawa, **Hiroshi Ogawa** and **OpenCode (gpt-5.6-sol)** in https://github.com/vitest-dev/vitest/issues/10969 [<samp>(438ed)</samp>](https://github.com/vitest-dev/vitest/commit/438eda13f)
- Synchronize watch-run UI state on file removal - by @hi-ogawa, **Hiroshi Ogawa** and **OpenCode (gpt-5.6-sol)** in https://github.com/vitest-dev/vitest/issues/10941 [<samp>(30c21)</samp>](https://github.com/vitest-dev/vitest/commit/30c21e668)
- Require auth for coverage report and all UI subtree requests - by @sheremet-va in https://github.com/vitest-dev/vitest/issues/10971 [<samp>(5622f)</samp>](https://github.com/vitest-dev/vitest/commit/5622f0959)
- Improve suite interaction and layout in explorer tree - by @hi-ogawa, **Hiroshi Ogawa** and **OpenCode (gpt-5.6-sol)** in https://github.com/vitest-dev/vitest/issues/10970 [<samp>(91231)</samp>](https://github.com/vitest-dev/vitest/commit/9123111b3)
- Reveal explorer virtual scroller on resize - by @hi-ogawa, **Hiroshi Ogawa** and **OpenCode (gpt-5.6-sol)** in https://github.com/vitest-dev/vitest/issues/10998 [<samp>(1f4fc)</samp>](https://github.com/vitest-dev/vitest/commit/1f4fcd363)
- Persist trace step-iframe split pane sizes - by @hi-ogawa, **Hiroshi Ogawa** and **OpenCode (gpt-5.6-sol)** in https://github.com/vitest-dev/vitest/issues/11027 [<samp>(3cd01)</samp>](https://github.com/vitest-dev/vitest/commit/3cd019a0a)
- Add suite level report view - by @dvmhmdsd, **Hiroshi Ogawa**, **OpenCode (gpt-5.6-sol)** and @hi-ogawa in https://github.com/vitest-dev/vitest/issues/11038 [<samp>(602d2)</samp>](https://github.com/vitest-dev/vitest/commit/602d215ae)
- Hide running count in static reports - by @hi-ogawa, **Hiroshi Ogawa** and **OpenCode (gpt-5.6-sol)** in https://github.com/vitest-dev/vitest/issues/11123 [<samp>(73d72)</samp>](https://github.com/vitest-dev/vitest/commit/73d729484)
- **utils**:
- Don't crash on a malformed inline source map - by @lazerg, **Hiroshi Ogawa**, **OpenCode (gpt-5.6-sol)** and @hi-ogawa in https://github.com/vitest-dev/vitest/issues/10892 and https://github.com/vitest-dev/vitest/issues/10893 [<samp>(fe790)</samp>](https://github.com/vitest-dev/vitest/commit/fe7906275)
- **vitest**:
- Strip non-serializable functions from inline diff config - by @DucMinhNe in https://github.com/vitest-dev/vitest/issues/10573 [<samp>(5b81a)</samp>](https://github.com/vitest-dev/vitest/commit/5b81a63ff)
- Remove broken "./src/*" export from package.json - by @sheremet-va in https://github.com/vitest-dev/vitest/issues/10918 [<samp>(2e5df)</samp>](https://github.com/vitest-dev/vitest/commit/2e5df7543)
- Render non-Error causes from env setup so the actual diagnostic is not dropped - by @spokodev in https://github.com/vitest-dev/vitest/issues/10567 [<samp>(b298d)</samp>](https://github.com/vitest-dev/vitest/commit/b298df609)
- **vm**:
- Fix external module resolve error with deps optimizer query for encoded URI - by @SveLil in https://github.com/vitest-dev/vitest/issues/10658 [<samp>(90c4e)</samp>](https://github.com/vitest-dev/vitest/commit/90c4ed4cd)
- Stop retaining every finished test file in vm pool workers - by @sheremet-va in https://github.com/vitest-dev/vitest/issues/10854 [<samp>(38503)</samp>](https://github.com/vitest-dev/vitest/commit/3850323e2)
- Fall back to compiling from source when a module's code cache is rejected - by @MarshallOfSound in https://github.com/vitest-dev/vitest/issues/11031 [<samp>(c3ba1)</samp>](https://github.com/vitest-dev/vitest/commit/c3ba16b35)
- Link module graphs one at a time - by @sheremet-va in https://github.com/vitest-dev/vitest/issues/11096 [<samp>(3f2dd)</samp>](https://github.com/vitest-dev/vitest/commit/3f2ddc21a)
- **webdriverio**:
- Allow gpu in headless chrome - by @rotempasharel1 in https://github.com/vitest-dev/vitest/issues/10376 [<samp>(f310a)</samp>](https://github.com/vitest-dev/vitest/commit/f310abe4e)
- **worker**:
- Bind stdio's early in case overriden - by @AriPerkkio in https://github.com/vitest-dev/vitest/issues/11020 [<samp>(67ef7)</samp>](https://github.com/vitest-dev/vitest/commit/67ef7a19b)
### ๐ Performance
- Stringify diff objects only once - by @sheremet-va in https://github.com/vitest-dev/vitest/issues/10276 [<samp>(d006a)</samp>](https://github.com/vitest-dev/vitest/commit/d006a6869)
- Improve performance in hot paths - by @sheremet-va in https://github.com/vitest-dev/vitest/issues/10446 [<samp>(03faf)</samp>](https://github.com/vitest-dev/vitest/commit/03faf6db6)
- Serve warm modules to workers in one round-trip, enable the node compile cache - by @sheremet-va in https://github.com/vitest-dev/vitest/issues/10708 [<samp>(b144a)</samp>](https://github.com/vitest-dev/vitest/commit/b144ab56e)
- Make the Node compile cache opt-in, persist worker caches on teardown - by @sheremet-va in https://github.com/vitest-dev/vitest/issues/10742 [<samp>(941bc)</samp>](https://github.com/vitest-dev/vitest/commit/941bc8361)
- Reuse compiled code across vm pool contexts and prewarm the module graph - by @sheremet-va in https://github.com/vitest-dev/vitest/issues/10744 [<samp>(d8b04)</samp>](https://github.com/vitest-dev/vitest/commit/d8b040c63)
- Bundle vitest's own dependencies - by @sheremet-va in https://github.com/vitest-dev/vitest/issues/10685 [<samp>(c0508)</samp>](https://github.com/vitest-dev/vitest/commit/c050842b6)
- Lowers peak memory usage when using `--changed` on a large graph - by @jszumski in https://github.com/vitest-dev/vitest/issues/10866 [<samp>(9f23f)</samp>](https://github.com/vitest-dev/vitest/commit/9f23f8ec3)
- Initialize trace view in the orchestrator once per worker - by @sheremet-va in https://github.com/vitest-dev/vitest/issues/10984 [<samp>(fad26)</samp>](https://github.com/vitest-dev/vitest/commit/fad263fe8)
- **browser**:
- Reduce matching screenshot overhead - by @kasperpeulen in https://github.com/vitest-dev/vitest/issues/10278 [<samp>(511c0)</samp>](https://github.com/vitest-dev/vitest/commit/511c09269)
- Open browser sessions adaptively instead of maxWorkers upfront - by @sheremet-va in https://github.com/vitest-dev/vitest/issues/10726 [<samp>(6db8d)</samp>](https://github.com/vitest-dev/vitest/commit/6db8de2e2)
- Cut per-file round trips - by @sheremet-va in https://github.com/vitest-dev/vitest/issues/10730 [<samp>(3feef)</samp>](https://github.com/vitest-dev/vitest/commit/3feefd9e2)
- Stop serving framework sourcemaps in headless runs - by @sheremet-va in https://github.com/vitest-dev/vitest/issues/10728 [<samp>(6aefb)</samp>](https://github.com/vitest-dev/vitest/commit/6aefb3d91)
- Prewarm the browser while the Vite server starts - by @sheremet-va in https://github.com/vitest-dev/vitest/issues/10727 [<samp>(c1767)</samp>](https://github.com/vitest-dev/vitest/commit/c17677a83)
- Pre-bundle the vitest runtime in optimizeDeps - by @sheremet-va in https://github.com/vitest-dev/vitest/issues/10713 [<samp>(de631)</samp>](https://github.com/vitest-dev/vitest/commit/de63174f5)
- Serve framework assets as immutable - by @sheremet-va in https://github.com/vitest-dev/vitest/issues/10729 [<samp>(7af87)</samp>](https://github.com/vitest-dev/vitest/commit/7af8755ae)
- **cache**:
- Hash the environment-invariant part of the fs module cache key once - by @MarshallOfSound in https://github.com/vitest-dev/vitest/issues/11029 [<samp>(1d365)</samp>](https://github.com/vitest-dev/vitest/commit/1d365db15)
- **coverage**:
- Speed up v8 report generation (bounded-memory merge + precompiled globs) - by @toxik, **Claude Opus 5 (1M context)** and @AriPerkkio in https://github.com/vitest-dev/vitest/issues/10506 [<samp>(b05e5)</samp>](https://github.com/vitest-dev/vitest/commit/b05e5d634)
- Reduce RPC data and unnecessary serializations - by @AriPerkkio in https://github.com/vitest-dev/vitest/issues/10781 [<samp>(7e7e3)</samp>](https://github.com/vitest-dev/vitest/commit/7e7e35cb4)
- **expect**:
- Avoid redefining matcher state - by @scttcper and **OpenAI Codex** in https://github.com/vitest-dev/vitest/issues/11048 [<samp>(58e71)</samp>](https://github.com/vitest-dev/vitest/commit/58e71306b)
- Lazily format spy matcher failures - by @scttcper and **OpenAI Codex** in https://github.com/vitest-dev/vitest/issues/11090 [<samp>(e08c4)</samp>](https://github.com/vitest-dev/vitest/commit/e08c45c39)
- **spy**:
- Avoid scanning cleared mocks - by @scttcper and **OpenAI Codex** in https://github.com/vitest-dev/vitest/issues/11092 [<samp>(2451e)</samp>](https://github.com/vitest-dev/vitest/commit/2451e34c4)
- **vm**:
- Don't prewarm modules the worker never requests - by @MarshallOfSound and @sheremet-va in https://github.com/vitest-dev/vitest/issues/11033 [<samp>(1e9f8)</samp>](https://github.com/vitest-dev/vitest/commit/1e9f80ec1)
- Let environments opt out of the module graph prewarm - by @sheremet-va in https://github.com/vitest-dev/vitest/issues/11078 [<samp>(a6d5e)</samp>](https://github.com/vitest-dev/vitest/commit/a6d5ea2d8)
##### [View changes on GitHub](https://github.com/vitest-dev/vitest/compare/v4.1.5...v5.0.0)