Vitest 5 is officially out! This release focuses on performance and brings a lot of new features while fixing long-standing bugs. See our blog post for the official announcement.
🚨 Breaking Changes
Replace loupe.inspect with pretty-format - by @hi-ogawa, Claude Opus 5 (1M context) and OpenAI Codex in #9609(3f802)
Remove quotes from string values in test.for/each title $ variable (take 2) - by @hi-ogawa in #10170(04d37)
Default attachmentsDir from .vitest-attachements/ to .vitest/attachments/ - by @MdSadiqMd in #10186(1ba73)
Remove sequential test/suite options in favor of concurrent - by @hi-ogawa and OpenAI Codex in #10198(9229f)
Write json and junit reporter output files to .vitest by default - by @hi-ogawa, Hiroshi Ogawa, OpenCode (gpt-5.6-sol) and @AriPerkkio in #10621(58577)
Expose default reporters through configDefaults.reporters - by @hi-ogawa and Claude Opus 5 (1M context) in #10219(083f6)
Support merge reports for non-sharded multi-environment runs (take 2) - by @hi-ogawa, Claude Opus 5 (1M context), OpenAI Codex and @AriPerkkio in #10031(e60b2)
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 #10194(9387f)
Test tags options should overwrite inherited suite options + inherit suite options in task API - by @hi-ogawa and OpenAI Codex in #10216(457db)
Guard against non-finite slowTestThreshold in summary reporter - by @OfekDanny, Ofek Danny, Claude Opus 5 (1M context) and @AriPerkkio in #10202(f362f)
Support no-unsafe-eval CSP by evaluating snapshot files on server - by @hi-ogawa in #10665(667c1)
Reject when toMatchFileSnapshot uses same snapshot file as toMatchSnapshot - by @hi-ogawa, Hiroshi Ogawa, OpenCode (gpt-5.6-sol) and @sheremet-va in #10978(17646)
Fix missing source code in html reporter metadata when merging blobs with different root directory test runs - by @hi-ogawa and OpenAI Codex in #10338(4f7c2)
This PR contains the following updates:
| Package | Change | [Age](https://docs.renovatebot.com/merge-confidence/) | [Confidence](https://docs.renovatebot.com/merge-confidence/) |
|---|---|---|---|
| [@vitest/coverage-v8](https://vitest.dev/guide/coverage) ([source](https://github.com/vitest-dev/vitest/tree/HEAD/packages/coverage-v8)) | [`4.1.11` → `5.0.0`](https://renovatebot.com/diffs/npm/@vitest%2fcoverage-v8/4.1.11/5.0.0) |  |  |
| [vitest](https://vitest.dev) ([source](https://github.com/vitest-dev/vitest/tree/HEAD/packages/vitest)) | [`4.1.11` → `5.0.0`](https://renovatebot.com/diffs/npm/vitest/4.1.11/5.0.0) |  |  |
---
### Release Notes
<details>
<summary>vitest-dev/vitest (@​vitest/coverage-v8)</summary>
### [`v5.0.0`](https://github.com/vitest-dev/vitest/releases/tag/v5.0.0)
[Compare Source](https://github.com/vitest-dev/vitest/compare/v4.1.11...v5.0.0)
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](https://github.com/hi-ogawa), **Claude Opus 5 (1M context)** and **OpenAI Codex** in [#​9609](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](https://github.com/hi-ogawa) in [#​10170](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](https://github.com/MdSadiqMd) in [#​10186](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](https://github.com/hi-ogawa) and **OpenAI Codex** in [#​10198](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](https://github.com/sheremet-va) in [#​10212](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](https://github.com/sheremet-va) in [#​10221](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](https://github.com/sheremet-va) in [#​10222](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](https://github.com/sheremet-va) in [#​10178](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](https://github.com/hi-ogawa) and **OpenAI Codex** in [#​10233](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](https://github.com/sheremet-va) in [#​10460](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](https://github.com/sheremet-va) in [#​10473](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](https://github.com/hi-ogawa), **OpenAI Codex** and **Hiroshi Ogawa** in [#​10428](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](https://github.com/sheremet-va) in [#​10511](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](https://github.com/hi-ogawa), **Hiroshi Ogawa** and **OpenAI Codex** in [#​10373](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](https://github.com/sheremet-va) in [#​10516](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](https://github.com/macarie) in [#​10592](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](https://github.com/hi-ogawa), **Hiroshi Ogawa** and **OpenCode (gpt-5.6-sol)** in [#​10654](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](https://github.com/sheremet-va) in [#​10675](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](https://github.com/sheremet-va) in [#​10613](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](https://github.com/sheremet-va) in [#​10293](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](https://github.com/sheremet-va) in [#​10554](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](https://github.com/sheremet-va) in [#​10750](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](https://github.com/fabon-f), **Hiroshi Ogawa** and **OpenCode (gpt-5.6-sol)** in [#​10757](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](https://github.com/sheremet-va) in [#​10846](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](https://github.com/sheremet-va) in [#​10686](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](https://github.com/sheremet-va) in [#​10868](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](https://github.com/sheremet-va) in [#​10848](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](https://github.com/sheremet-va) in [#​11088](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](https://github.com/sheremet-va) in [#​10113](https://github.com/vitest-dev/vitest/issues/10113) [<samp>(19f6e)</samp>](https://github.com/vitest-dev/vitest/commit/19f6e8947)
- **browser**:
- Iframe scale - by [@​macarie](https://github.com/macarie) in [#​9745](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](https://github.com/sheremet-va) in [#​10430](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](https://github.com/hi-ogawa), **Hiroshi Ogawa** and **OpenAI Codex** in [#​10522](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](https://github.com/macarie) in [#​10917](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](https://github.com/AriPerkkio) in [#​9818](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](https://github.com/vladlenskiy) and [@​AriPerkkio](https://github.com/AriPerkkio) in [#​10190](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](https://github.com/vitest-dev/vitest/issues/6710) - by [@​hi-ogawa](https://github.com/hi-ogawa) in [#​9643](https://github.com/vitest-dev/vitest/issues/9643) and [#​6710](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](https://github.com/nami8824) in [#​10192](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](https://github.com/AriPerkkio) in [#​10232](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](https://github.com/hi-ogawa), **Hiroshi Ogawa**, **OpenCode (gpt-5.6-sol)** and [@​AriPerkkio](https://github.com/AriPerkkio) in [#​10621](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](https://github.com/sheremet-va) in [#​10910](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](https://github.com/samchungy) and [@​sheremet-va](https://github.com/sheremet-va) in [#​8266](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](https://github.com/hi-ogawa), **Hiroshi Ogawa** and **OpenAI Codex** in [#​10583](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](https://github.com/hi-ogawa) and **Hiroshi Ogawa** in [#​10620](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](https://github.com/AriPerkkio) in [#​9993](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](https://github.com/hi-ogawa) and **Claude Opus 5 (1M context)** in [#​10219](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](https://github.com/hi-ogawa), **Claude Opus 5 (1M context)**, **OpenAI Codex** and [@​AriPerkkio](https://github.com/AriPerkkio) in [#​10031](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](https://github.com/hi-ogawa) and **OpenAI Codex** in [#​10268](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](https://github.com/lishaduck) in [#​9870](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](https://github.com/sheremet-va) in [#​10709](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](https://github.com/sheremet-va) in [#​10734](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](https://github.com/k-yle) in [#​10773](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](https://github.com/sheremet-va) and [@​AriPerkkio](https://github.com/AriPerkkio) in [#​10820](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](https://github.com/sheremet-va) in [#​11087](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](https://github.com/sheremet-va) in [#​11086](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](https://github.com/sheremet-va) in [#​10277](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](https://github.com/GuillaumeLagrange) and [@​sheremet-va](https://github.com/sheremet-va) in [#​10799](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](https://github.com/hi-ogawa) in [#​10171](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](https://github.com/hi-ogawa), **Claude Opus 5 (1M context)** and **OpenAI Codex** in [#​10102](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](https://github.com/macarie) and [@​sheremet-va](https://github.com/sheremet-va) in [#​10138](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](https://github.com/hi-ogawa) and **OpenAI Codex** in [#​10257](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](https://github.com/AriPerkkio) in [#​10302](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](https://github.com/hi-ogawa) and **OpenAI Codex** in [#​10296](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](https://github.com/AriPerkkio) in [#​10329](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](https://github.com/hi-ogawa) and **OpenAI Codex** in [#​10404](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](https://github.com/hi-ogawa), **Hiroshi Ogawa** and **OpenAI Codex** in [#​10437](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](https://github.com/todor-a) in [#​10504](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](https://github.com/sheremet-va) in [#​10826](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](https://github.com/AriPerkkio) in [#​9976](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](https://github.com/wouterkroes) in [#​10495](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](https://github.com/AriPerkkio) in [#​11053](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](https://github.com/neumaennl), **neumaennl**, **Martin Neumann** and **Copilot** in [#​10189](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](https://github.com/hi-ogawa), **OpenAI Codex** and **Claude Opus 5 (1M context)** in [#​10235](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](https://github.com/heyJonBray) and [@​macarie](https://github.com/macarie) in [#​10891](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](https://github.com/sheremet-va), **Hiroshi Ogawa** and **OpenCode (gpt-5.6-sol)** in [#​11004](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](https://github.com/sheremet-va), **Hiroshi Ogawa** and **OpenCode (gpt-5.6-sol)** in [#​11005](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](https://github.com/hi-ogawa), **Hiroshi Ogawa** and **OpenCode (gpt-5.6-sol)** in [#​10981](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](https://github.com/hi-ogawa), **Hiroshi Ogawa** and **OpenCode (gpt-5.6-sol)** in [#​11049](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](https://github.com/hi-ogawa), **Hiroshi Ogawa** and **OpenCode (gpt-5.6-sol)** in [#​11059](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](https://github.com/macarie) in [#​10174](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](https://github.com/sheremet-va) in [#​10829](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](https://github.com/hi-ogawa), **OpenAI Codex** and [@​sheremet-va](https://github.com/sheremet-va) in [#​10194](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](https://github.com/hi-ogawa) and **OpenAI Codex** in [#​10216](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](https://github.com/sheremet-va) in [#​10223](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](https://github.com/lloyd-c137) and **lloyd-c137** in [#​10327](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](https://github.com/hi-ogawa) and **OpenAI Codex** in [#​10334](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](https://github.com/hi-ogawa) in [#​10363](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](https://github.com/macayu17) and [@​hi-ogawa](https://github.com/hi-ogawa) in [#​10415](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](https://github.com/Copilot), **Hiroshi Ogawa**, [@​hi-ogawa](https://github.com/hi-ogawa) and **OpenAI Codex** in [#​10391](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](https://github.com/Patrick-Clausen) and **Patrick Clausen** in [#​10421](https://github.com/vitest-dev/vitest/issues/10421) and [#​10420](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](https://github.com/sheremet-va) in [#​10449](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](https://github.com/sheremet-va) in [#​10461](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](https://github.com/sheremet-va) in [#​10467](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](https://github.com/Copilot), **Hiroshi Ogawa**, [@​hi-ogawa](https://github.com/hi-ogawa) and [@​sheremet-va](https://github.com/sheremet-va) in [#​10308](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](https://github.com/davidxharris), **David Harris**, [@​hi-ogawa](https://github.com/hi-ogawa), **Hiroshi Ogawa** and **OpenAI Codex** in [#​10469](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](https://github.com/potatomatoooo) and [@​hi-ogawa](https://github.com/hi-ogawa) in [#​10570](https://github.com/vitest-dev/vitest/issues/10570) and [#​10578](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](https://github.com/hi-ogawa) and **Hiroshi Ogawa** in [#​10608](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](https://github.com/hi-ogawa), **Hiroshi Ogawa** and **OpenCode (gpt-5.6-sol)** in [#​10659](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](https://github.com/sheremet-va) in [#​10656](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](https://github.com/sheremet-va) in [#​10681](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](https://github.com/sheremet-va) in [#​10731](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](https://github.com/sheremet-va) in [#​10725](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](https://github.com/sheremet-va) in [#​10741](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](https://github.com/sheremet-va) in [#​10743](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](https://github.com/hirehamir) in [#​10759](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](https://github.com/malobre) in [#​10630](https://github.com/vitest-dev/vitest/issues/10630) and [#​10767](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](https://github.com/zakcutner) and [@​AriPerkkio](https://github.com/AriPerkkio) in [#​10794](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](https://github.com/xevrion) in [#​10814](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](https://github.com/sheremet-va) in [#​10822](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](https://github.com/hitenkalda) and **Hiten Kalda** in [#​10705](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](https://github.com/koutaro-masaki) in [#​10577](https://github.com/vitest-dev/vitest/issues/10577) and [#​10589](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](https://github.com/lazerg) in [#​10875](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](https://github.com/kade-robertson) in [#​10145](https://github.com/vitest-dev/vitest/issues/10145) and [#​10541](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](https://github.com/sheremet-va) in [#​10842](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](https://github.com/hi-ogawa), **Hiroshi Ogawa**, **OpenCode (gpt-5.6-sol)** and [@​sheremet-va](https://github.com/sheremet-va) in [#​10928](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](https://github.com/sheremet-va) in [#​10963](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](https://github.com/AriPerkkio) and [@​sheremet-va](https://github.com/sheremet-va) in [#​10909](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](https://github.com/sheremet-va) in [#​10988](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](https://github.com/hi-ogawa), **Hiroshi Ogawa** and **OpenCode (gpt-5.6-sol)** in [#​11047](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](https://github.com/sheremet-va) in [#​11073](https://github.com/vitest-dev/vitest/issues/11073) and [#​11081](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](https://github.com/sheremet-va) in [#​11084](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](https://github.com/sheremet-va) in [#​11085](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](https://github.com/sheremet-va) in [#​11095](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](https://github.com/Gaurav1112) in [#​11102](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](https://github.com/juliandescottes) and **Claude Opus 5 (1M context)** in [#​10706](https://github.com/vitest-dev/vitest/issues/10706) and [#​11127](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](https://github.com/sheremet-va) in [#​11120](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](https://github.com/sheremet-va) in [#​11128](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](https://github.com/hi-ogawa) in [#​10227](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](https://github.com/hi-ogawa) in [#​10283](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](https://github.com/Zelys-DFKH) in [#​9957](https://github.com/vitest-dev/vitest/issues/9957) and [#​10267](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](https://github.com/hi-ogawa) in [#​10355](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](https://github.com/hi-ogawa) in [#​10389](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](https://github.com/hi-ogawa) and **OpenAI Codex** in [#​10412](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](https://github.com/hi-ogawa) and **OpenAI Codex** in [#​10444](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](https://github.com/soconnor-seeq) in [#​10397](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](https://github.com/soconnor-seeq) in [#​10497](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](https://github.com/Pduhard), **Pduhard** and **Claude Opus 5 (1M context)** in [#​10520](https://github.com/vitest-dev/vitest/issues/10520) and [#​10521](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](https://github.com/sheremet-va) in [#​10626](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](https://github.com/sheremet-va) in [#​10662](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](https://github.com/hi-ogawa), **Hiroshi Ogawa** and **OpenCode (gpt-5.6-sol)** in [#​10674](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](https://github.com/sheremet-va) in [#​10748](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](https://github.com/hi-ogawa), **Hiroshi Ogawa** and **OpenCode (gpt-5.6-sol)** in [#​10724](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](https://github.com/smeng9), **Shaoyu Meng** and **Claude Opus 5 (1M context)** in [#​10784](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](https://github.com/aaravjaichand) in [#​7375](https://github.com/vitest-dev/vitest/issues/7375) and [#​10798](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](https://github.com/simshanith) in [#​9379](https://github.com/vitest-dev/vitest/issues/9379) and [#​9381](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](https://github.com/lazerg) in [#​10879](https://github.com/vitest-dev/vitest/issues/10879) and [#​10880](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](https://github.com/lebovvskii) and [@​sheremet-va](https://github.com/sheremet-va) in [#​10836](https://github.com/vitest-dev/vitest/issues/10836) and [#​10856](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](https://github.com/hi-ogawa), **Hiroshi Ogawa** and **OpenCode (gpt-5.6-sol)** in [#​10913](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](https://github.com/hi-ogawa), **Hiroshi Ogawa** and **OpenCode (gpt-5.6-sol)** in [#​10915](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](https://github.com/hi-ogawa), **Hiroshi Ogawa** and **OpenCode (gpt-5.6-sol)** in [#​10912](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 [#​10295](https://github.com/vitest-dev/vitest/issues/10295) and [#​10933](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](https://github.com/sheremet-va) in [#​10956](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](https://github.com/sheremet-va) in [#​10962](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](https://github.com/sheremet-va) in [#​10975](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](https://github.com/AriPerkkio) in [#​10994](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](https://github.com/liuluochen6-af), **Hiroshi Ogawa**, **OpenCode (gpt-5.6-sol)** and [@​hi-ogawa](https://github.com/hi-ogawa) in [#​10906](https://github.com/vitest-dev/vitest/issues/10906) and [#​11021](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](https://github.com/sheremet-va) in [#​11101](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](https://github.com/jszumski) in [#​10869](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](https://github.com/dokson) in [#​10272](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](https://github.com/AriPerkkio) in [#​10863](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](https://github.com/AriPerkkio) in [#​10299](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](https://github.com/innoprej), **Shin JaeHee** and [@​AriPerkkio](https://github.com/AriPerkkio) in [#​10311](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](https://github.com/AriPerkkio) in [#​10643](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](https://github.com/jgamaraalv) and [@​AriPerkkio](https://github.com/AriPerkkio) in [#​10466](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](https://github.com/AriPerkkio) in [#​11023](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](https://github.com/AriPerkkio) in [#​11119](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](https://github.com/hi-ogawa) in [#​10218](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](https://github.com/BPScott), [@​hi-ogawa](https://github.com/hi-ogawa) and **OpenAI Codex** in [#​10043](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](https://github.com/sheremet-va) in [#​9958](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](https://github.com/sheremet-va) in [#​10861](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](https://github.com/sheremet-va) in [#​10898](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 [#​10966](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 [#​11043](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](https://github.com/YBJ0000) in [#​10264](https://github.com/vitest-dev/vitest/issues/10264) and [#​10374](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](https://github.com/liyimil) in [#​10735](https://github.com/vitest-dev/vitest/issues/10735) and [#​10811](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](https://github.com/gbleu) and **Claude Opus 5 (1M context)** in [#​10244](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](https://github.com/hi-ogawa) and **OpenAI Codex** in [#​10410](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](https://github.com/Brooooooklyn) and **Claude Opus 5 (1M context)** in [#​10489](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](https://github.com/sheremet-va) in [#​10972](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](https://github.com/jaxalo) and [@​AriPerkkio](https://github.com/AriPerkkio) in [#​10543](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](https://github.com/filmaj) and [@​AriPerkkio](https://github.com/AriPerkkio) in [#​10587](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](https://github.com/milas) in [#​10721](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](https://github.com/lazerg) and [@​AriPerkkio](https://github.com/AriPerkkio) in [#​10932](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](https://github.com/sheremet-va) in [#​10964](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](https://github.com/OfekDanny), **Ofek Danny**, **Claude Opus 5 (1M context)** and [@​AriPerkkio](https://github.com/AriPerkkio) in [#​10202](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](https://github.com/hi-ogawa) in [#​10318](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](https://github.com/hi-ogawa) in [#​10346](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](https://github.com/AriPerkkio) in [#​10340](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](https://github.com/hi-ogawa) and **OpenAI Codex** in [#​10348](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](https://github.com/ChihebBENCHEIKH1), **Chiheb Bencheikh** and [@​sheremet-va](https://github.com/sheremet-va) in [#​10606](https://github.com/vitest-dev/vitest/issues/10606) and [#​10768](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](https://github.com/macarie) in [#​10887](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](https://github.com/DoriAlagem), **Dor Alagem** and [@​hi-ogawa](https://github.com/hi-ogawa) in [#​10187](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](https://github.com/hi-ogawa) in [#​10179](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](https://github.com/tomohiro86) and [@​AriPerkkio](https://github.com/AriPerkkio) in [#​10265](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](https://github.com/sheremet-va) in [#​10839](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](https://github.com/hi-ogawa) in [#​10090](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](https://github.com/mayrang) and [@​hi-ogawa](https://github.com/hi-ogawa) in [#​10188](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](https://github.com/hi-ogawa) in [#​10665](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](https://github.com/hi-ogawa), **Hiroshi Ogawa**, **OpenCode (gpt-5.6-sol)** and [@​sheremet-va](https://github.com/sheremet-va) in [#​10978](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](https://github.com/cyphercodes) in [#​10172](https://github.com/vitest-dev/vitest/issues/10172) and [#​10213](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](https://github.com/ryandiginomad) and **Ryan Tang** in [#​10707](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](https://github.com/sheremet-va) in [#​10907](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](https://github.com/AriPerkkio) in [#​10651](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](https://github.com/hi-ogawa) and **OpenAI Codex** in [#​10258](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](https://github.com/hi-ogawa) and **OpenAI Codex** in [#​10338](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](https://github.com/hi-ogawa) in [#​10386](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](https://github.com/Copilot), **Hiroshi Ogawa** and [@​hi-ogawa](https://github.com/hi-ogawa) in [#​10418](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](https://github.com/hi-ogawa), **Hiroshi Ogawa** and **OpenCode (gpt-5.6-sol)** in [#​10969](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](https://github.com/hi-ogawa), **Hiroshi Ogawa** and **OpenCode (gpt-5.6-sol)** in [#​10941](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](https://github.com/sheremet-va) in [#​10971](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](https://github.com/hi-ogawa), **Hiroshi Ogawa** and **OpenCode (gpt-5.6-sol)** in [#​10970](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](https://github.com/hi-ogawa), **Hiroshi Ogawa** and **OpenCode (gpt-5.6-sol)** in [#​10998](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](https://github.com/hi-ogawa), **Hiroshi Ogawa** and **OpenCode (gpt-5.6-sol)** in [#​11027](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](https://github.com/dvmhmdsd), **Hiroshi Ogawa**, **OpenCode (gpt-5.6-sol)** and [@​hi-ogawa](https://github.com/hi-ogawa) in [#​11038](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](https://github.com/hi-ogawa), **Hiroshi Ogawa** and **OpenCode (gpt-5.6-sol)** in [#​11123](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](https://github.com/lazerg), **Hiroshi Ogawa**, **OpenCode (gpt-5.6-sol)** and [@​hi-ogawa](https://github.com/hi-ogawa) in [#​10892](https://github.com/vitest-dev/vitest/issues/10892) and [#​10893](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](https://github.com/DucMinhNe) in [#​10573](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](https://github.com/sheremet-va) in [#​10918](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](https://github.com/spokodev) in [#​10567](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](https://github.com/SveLil) in [#​10658](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](https://github.com/sheremet-va) in [#​10854](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](https://github.com/MarshallOfSound) in [#​11031](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](https://github.com/sheremet-va) in [#​11096](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](https://github.com/rotempasharel1) in [#​10376](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](https://github.com/AriPerkkio) in [#​11020](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](https://github.com/sheremet-va) in [#​10276](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](https://github.com/sheremet-va) in [#​10446](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](https://github.com/sheremet-va) in [#​10708](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](https://github.com/sheremet-va) in [#​10742](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](https://github.com/sheremet-va) in [#​10744](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](https://github.com/sheremet-va) in [#​10685](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](https://github.com/jszumski) in [#​10866](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](https://github.com/sheremet-va) in [#​10984](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](https://github.com/kasperpeulen) in [#​10278](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](https://github.com/sheremet-va) in [#​10726](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](https://github.com/sheremet-va) in [#​10730](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](https://github.com/sheremet-va) in [#​10728](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](https://github.com/sheremet-va) in [#​10727](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](https://github.com/sheremet-va) in [#​10713](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](https://github.com/sheremet-va) in [#​10729](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](https://github.com/MarshallOfSound) in [#​11029](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](https://github.com/toxik), **Claude Opus 5 (1M context)** and [@​AriPerkkio](https://github.com/AriPerkkio) in [#​10506](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](https://github.com/AriPerkkio) in [#​10781](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](https://github.com/scttcper) and **OpenAI Codex** in [#​11048](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](https://github.com/scttcper) and **OpenAI Codex** in [#​11090](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](https://github.com/scttcper) and **OpenAI Codex** in [#​11092](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](https://github.com/MarshallOfSound) and [@​sheremet-va](https://github.com/sheremet-va) in [#​11033](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](https://github.com/sheremet-va) in [#​11078](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)
</details>
---
### Configuration
📅 **Schedule**: (UTC)
- Branch creation
- At any time (no schedule defined)
- Automerge
- At any time (no schedule defined)
🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied.
♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.
🔕 **Ignore**: Close this PR and you won't be reminded about these updates again.
---
- [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check this box
---
This PR has been generated by [Mend Renovate CLI](https://github.com/renovatebot/renovate).
<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiI0NC41Mi4xIiwidXBkYXRlZEluVmVyIjoiNDQuNTIuMSIsInRhcmdldEJyYW5jaCI6Im1haW4iLCJsYWJlbHMiOltdfQ==-->
Two independent breakages from the vitest 4.1.11 -> 5.0.0 bump:
1. vitest 5 no longer shadows the jsdom window globals with writable ones, so
`global.localStorage = ...` hits jsdom's getter-only accessor and throws
"Cannot set property localStorage of [object Window] which has only a
getter". test/setup.ts is a setup file, so both test files failed to
collect. Object.defineProperty replaces the accessor outright.
2. vitest 5 rejects a vi.mock() call outside module top level instead of
silently hoisting it. The call sat inside beforeEach, which was already
misleading -- it is hoisted above the imports and its factory runs once, on
first import of the mocked module, so it was never re-applied per test.
Moved to top level, where it actually executes; the beforeEach keeps its
resetModules/mockClear.
Verified against both vitest 4.1.11 and 5.0.0: 2 files / 9 tests pass on each.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01T2BPPeWMdYEmYbN6eGCBSg
argoyle
merged commit bafceab447 into main2026-09-10 20:04:38 +00:00
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
This PR contains the following updates:
4.1.11→5.0.04.1.11→5.0.0Release Notes
vitest-dev/vitest (@vitest/coverage-v8)
v5.0.0Compare Source
Vitest 5 is officially out! This release focuses on performance and brings a lot of new features while fixing long-standing bugs. See our blog post for the official announcement.
🚨 Breaking Changes
loupe.inspectwith pretty-format - by @hi-ogawa, Claude Opus 5 (1M context) and OpenAI Codex in #9609 (3f802)test.for/eachtitle$variable (take 2) - by @hi-ogawa in #10170 (04d37)attachmentsDirfrom.vitest-attachements/to.vitest/attachments/- by @MdSadiqMd in #10186 (1ba73)sequentialtest/suite options in favor ofconcurrent- by @hi-ogawa and OpenAI Codex in #10198 (9229f)expectpackage - by @sheremet-va in #10221 (ad162)expect.pollwhen function didn't resolve in time - by @hi-ogawa and OpenAI Codex in #10233 (4df04)toHaveTextContentis strict, addtoMatchTextContentas alternative - by @sheremet-va in #10473 (18f30)@vitest/runnerpackage, do not publish it anymore - by @sheremet-va in #10511 (6d6e4)concurrencyId/workerIdon TestModule's diagnostics, make id 1-based - by @sheremet-va in #10516 (bdd98)screenshotDirectoryconfig tobrowser.expect.toMatchScreenshot- by @macarie in #10592 (a60de)@sinonjs/fake-timersand support mockingTemporal- by @hi-ogawa, Hiroshi Ogawa and OpenCode (gpt-5.6-sol) in #10654 (f8b15)>as separator in-t, calculateonlyonce - by @sheremet-va in #10686 (a0b20)locators.exactby default - by @sheremet-va in #10430 (e2032)sessionIdfor orchestrator html request - by @hi-ogawa, Hiroshi Ogawa and OpenAI Codex in #10522 (79b7d)attachmentsDir- by @macarie in #10917 (3b5bb)include/excludeglobs too eager - by @AriPerkkio in #9818 (edacb)thresholds.perFileto accept an object - by @vladlenskiy and @AriPerkkio in #10190 (13b78)toThrow("")behavior by reverting #6710 - by @hi-ogawa in #9643 and #6710 (6c3e4)blobreporter and--merge-reportsdefault to.vitest/blob/- by @AriPerkkio in #10232 (d22b0).vitestby default - by @hi-ogawa, Hiroshi Ogawa, OpenCode (gpt-5.6-sol) and @AriPerkkio in #10621 (58577).vitest- by @hi-ogawa and Hiroshi Ogawa in #10620 (29c36)🚀 Features
createReportand.vitestreport directory convention - by @AriPerkkio in #9993 (72a6d)configDefaults.reporters- by @hi-ogawa and Claude Opus 5 (1M context) in #10219 (083f6)logger.formatError- by @hi-ogawa and OpenAI Codex in #10268 (2c5f3)injectCjsGlobalsoption - by @sheremet-va in #10709 (82671)for/eachtitle placeholders - by @k-yle in #10773 (15e0a)ToMatchScreenshotResolvePath- by @macarie and @sheremet-va in #10138 (16654)kindinpage.mark- by @AriPerkkio in #10302 (053e8)context.markfor custom command tracing - by @AriPerkkio in #10329 (aa514)--repeatsCLI option - by @todor-a in #10504 (ee48b)node:child_processandnode:worker_threadscontexts - by @AriPerkkio in #9976 (9baa5)thresholds.autoUpdateto receive previous threshold as argument - by @wouterkroes in #10495 (04f81)@vitest/istanbuljspackages - by @AriPerkkio in #11053 (5f6a5)vi.when()- by @macarie in #10174 (3900e)require(esm)in vm pools - by @sheremet-va in #10829 (01298)🐞 Bug Fixes
sequence.concurrent: truewith top-leveltest(..., { concurrent: false })+ depreactesequentialtest API and options - by @hi-ogawa, OpenAI Codex and @sheremet-va in #10194 (9387f)tagsoptions should overwrite inherited suite options + inherit suite options intaskAPI - by @hi-ogawa and OpenAI Codex in #10216 (457db)attachmentsDirroot only config - by @hi-ogawa and OpenAI Codex in #10334 (fab1b)__esModule- by @hi-ogawa in #10363 (2b135)vi.defineHelpercallsite for async error stack - by @macayu17 and @hi-ogawa in #10415 (ac697)disableConsoleInterceptin browser mode - by @Copilot, Hiroshi Ogawa, @hi-ogawa and OpenAI Codex in #10391 (66110)onUserConsoleLog- by @Copilot, Hiroshi Ogawa, @hi-ogawa and @sheremet-va in #10308 (62756)importOriginalwith optimizer and query import - by @davidxharris, David Harris, @hi-ogawa, Hiroshi Ogawa and OpenAI Codex in #10469 (6a3bb)setImmediateawait in detect-async-leak - by @hi-ogawa and Hiroshi Ogawa in #10608 (dd62b)sequenceconfig - by @hi-ogawa, Hiroshi Ogawa and OpenCode (gpt-5.6-sol) in #10659 (40cdc)includeTaskLocationis enabled - by @sheremet-va in #10681 (bd9cc)off- by @sheremet-va in #10741 (d758b)ci.yml- by @hirehamir in #10759 (2127f)vitest --typecheckfrom reporting a false success when thetscprocess crashes - by @hitenkalda and Hiten Kalda in #10705 (a1b05)process.exitdisabled in workers - by @sheremet-va in #10963 (5e69a)recordArtifactlocation withvi.defineHelper- by @hi-ogawa, Hiroshi Ogawa and OpenCode (gpt-5.6-sol) in #11047 (c2186)oxc.targetif user provides a custom array - by @sheremet-va in #11095 (848d7)extends: true- by @sheremet-va in #11120 (584cf)wrapDynamicImporttransform on ssr environment - by @hi-ogawa in #10355 (d3c96)cdpAPI whenallowWrite/allowExec: false- by @hi-ogawa and OpenAI Codex in #10444 (63e3b)connectTimeoutfrom the project config - by @lazerg in #10879 and #10880 (62c79)ui: truein projects - by @AriPerkkio in #10994 (9f710)fsModuleCacheresiliency during external modifications - by @jszumski in #10869 (5eb35)FORCE_COLORover agent detection - by @dokson in #10272 (7e66b)CTRL+ceven whenglobalSetupruns blocked code - by @AriPerkkio in #10863 (d568f)excludeto not inherit negation globs fromtest.include- by @AriPerkkio in #10299 (28685)coverage.reportsDirectoryconflicts between concurrent runs - by @jgamaraalv and @AriPerkkio in #10466 (833f0)/@fs/prepended virtual files - by @AriPerkkio in #11119 (c4473)toNotFake- by @BPScott, @hi-ogawa and OpenAI Codex in #10043 (bbf2f)summaryto intercept logger's streams even when they are notprocess.std*streams - by @AriPerkkio in #10340 (f79e7)testModulesinonTestRunEndwhen merging blobs from different root directory test runs - by @hi-ogawa and OpenAI Codex in #10348 (745b3)test.namein GitHub Actions reporter summary header - by @macarie in #10887 (49e24)error.stackthrows - by @sheremet-va in #10839 (202e2)test.fails- by @hi-ogawa in #10090 (e1aa7)toMatchFileSnapshotuses same snapshot file astoMatchSnapshot- by @hi-ogawa, Hiroshi Ogawa, OpenCode (gpt-5.6-sol) and @sheremet-va in #10978 (17646)changedin configuration options - by @AriPerkkio in #10651 (0da12)🏎 Performance
--changedon a large graph - by @jszumski in #10866 (9f23f)View changes on GitHub
Configuration
📅 Schedule: (UTC)
🚦 Automerge: Disabled by config. Please merge this manually once you are satisfied.
♻ Rebasing: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.
🔕 Ignore: Close this PR and you won't be reminded about these updates again.
This PR has been generated by Mend Renovate CLI.