Pull Request Overview
- Opened on September 16, 2026
- Status Open
- Commit count 2 with first commit September 16, 2026
Total Delta
Open Days
Test Delta
How long has this pull request spent in each phase of its lifecycle?
| Fraction of total time | Business days | Phase |
|---|---|---|
|
|
0.0 days | Authoring 0 commits before pull request opened for review |
|
|
0.0 days | Awaiting first review |
|
|
2.6 days | Revising work with 2 commits in response to 0 reviews that left 2 comments |
Total time for pull request still awaiting merge: 2.6 business days
Update dependency vitest [SECURITY]
ℹ️ Note
This PR body was truncated due to platform limits.
This PR contains the following updates:
| Package | Change | Age | Confidence |
|---|---|---|---|
| vitest (source) | 4.1.10 → 5.0.0 | |
|
| vitest (source) | ^4.1.0 → ^5.0.0 | |
|
| vitest (source) | 5.0.0-beta.3 → 5.0.0-rc.2 | |
|
Vitest: Path Traversal / Arbitrary File Read via @vitest/mocker Redirect Mock
CVE-2026-84373 / GHSA-82fw-gwwq-j7x9
More information
#### Details
##### Summary
`@vitest/mocker` registers a redirect mock's target path without validating it
against the dev server's file-serving allowlist. An attacker who can reach the
dev server's WebSocket can register a redirect mock pointing outside the project
root; when the mocked module is requested, the plugin's `load` hook returns
`readFile()` as the module source, disclosing local files.
This is exploitable **without authentication** only through the public
`mockerPlugin` / standalone `interceptorPlugin` exports (used by third-party dev
servers), which register the handler on Vite's unauthenticated HMR socket.
Vitest's own browser mode registers mocks over a **token-authenticated** RPC and
is not remotely reachable by default (see Scope).
##### Affected code
`packages/mocker/src/node/interceptorPlugin.ts`.
The `load` hook is the file-read sink:
```ts
if (mock.type === 'redirect') {
return readFile(mock.redirect, 'utf-8')
}
```
`mock.redirect` is derived from client input at registration time with no
boundary check:
```ts
if (event.type === 'redirect') {
const redirectUrl = new URL(event.redirect)
event.redirect = join(server.config.root, redirectUrl.pathname)
}
registry.register(event)
```
There is no `server.fs.allow` / `server.fs.deny` check and no assertion that the
resolved path stays within the project root.
##### Registration paths and trust boundaries
- **Public `mockerPlugin` / `interceptorPlugin` (unauthenticated).** In
`configureServer`, the plugin registers `server.ws.on('vitest:interceptor:register', …)`
on Vite's HMR WebSocket. That socket performs no token, Origin, or same-origin
check, so any client that can reach it can register a redirect mock. This is
the path the "unauthenticated" impact applies to.
- **Vitest browser mode (authenticated).** Mocks register over the browser RPC
(`registerMock`), which sits behind a per-run token (`isValidApiRequest`, a
random `api.token`). The interceptor's `configureServer` socket is not used for
registration here (in v5 it does not run at all, as the plugin is injected per
environment). The same missing boundary check exists on the authenticated RPC
path, but reaching it requires the token, so it is not a remote-unauthenticated
read.
##### Path handling
`new URL(redirect).pathname` combined with `join(root, pathname)` does **not**
confine reads to the root:
- Special/hierarchical schemes (`file:`, `http:`) are normalized by WHATWG URL,
so `..` segments are collapsed and the result stays under the root. Payloads of
the form `file:///../../etc/passwd` do **not** escape.
- A non-special (opaque) scheme preserves `..` in `pathname`, so
`join(root, "../../…/etc/passwd")` resolves outside the root and reads an
arbitrary file.
Even without escaping the root, the missing `server.fs` check allows reading any
in-root file the dev server would otherwise refuse to serve (for example an
in-root `.env` or source that is denied by `server.fs.deny`).
##### Scope / preconditions
- This is a **development-server** issue. The dev server binds to `localhost` by
default and is not reachable from the network unless the developer exposes it
(`server.host` / `0.0.0.0`, a LAN bind, or a proxy).
- A raw (non-browser) client against a reachable server bypasses browser origin
and CORS protections entirely and can both register the mock and read the
response.
- A browser-based drive-by against a localhost server is substantially mitigated
by Vite defaults: the default CORS origin allowlist is limited to `localhost`
origins, and `server.allowedHosts` blocks DNS-rebinding, so a cross-origin page
cannot read the file contents back.
##### Impact
Disclosure of local files readable by the dev-server process (source, in-root
`.env`/secrets, and, via the opaque-scheme payload, files outside the project
root). No integrity or availability impact.
##### Affected versions
Present since `@vitest/mocker` was introduced.
- **Affected: `@vitest/mocker` >= 2.1.0** (shipped in `vitest` and
`@vitest/browser` >= 2.1.0), through 4.1.x and the 5.0.0 pre-releases.
- **Fixed:** Vitest 4.1.11 and 5.0.0. Older majors (2.1.x, 3.x) are not
maintained and are not planned to receive the fix.
##### Fix
Validate the resolved redirect target against Vite's file-serving allowlist
(`isFileLoadingAllowed`) before registering it, at every registration site, and
stop registering the interceptor WebSocket events in Vitest's browser mode
(mocks there flow through the authenticated RPC).
#### Severity
- CVSS Score: 5.9 / 10 (Medium)
- Vector String: `CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:H/I:N/A:N`
#### References
- [https://github.com/vitest-dev/vitest/security/advisories/GHSA-82fw-gwwq-j7x9](https://redirect.github.com/vitest-dev/vitest/security/advisories/GHSA-82fw-gwwq-j7x9)
- [https://nvd.nist.gov/vuln/detail/CVE-2026-84373](https://nvd.nist.gov/vuln/detail/CVE-2026-84373)
- [https://github.com/vitest-dev/vitest/pull/10972](https://redirect.github.com/vitest-dev/vitest/pull/10972)
- [https://github.com/vitest-dev/vitest/pull/10974](https://redirect.github.com/vitest-dev/vitest/pull/10974)
- [https://github.com/vitest-dev/vitest/commit/51edf2b072902aec6d30c90ebaafd8f121c6f9d8](https://redirect.github.com/vitest-dev/vitest/commit/51edf2b072902aec6d30c90ebaafd8f121c6f9d8)
- [https://github.com/vitest-dev/vitest/commit/8ff9b9a9efca7c6cfd5243569440de8d7a33aec4](https://redirect.github.com/vitest-dev/vitest/commit/8ff9b9a9efca7c6cfd5243569440de8d7a33aec4)
- [https://github.com/vitest-dev/vitest/commit/fe5a11d3ceac5ec10d6d7d21a46d4caca132c48f](https://redirect.github.com/vitest-dev/vitest/commit/fe5a11d3ceac5ec10d6d7d21a46d4caca132c48f)
- [https://github.com/vitest-dev/vitest/releases/tag/v4.1.11](https://redirect.github.com/vitest-dev/vitest/releases/tag/v4.1.11)
- [https://github.com/vitest-dev/vitest/releases/tag/v5.0.0-rc.2](https://redirect.github.com/vitest-dev/vitest/releases/tag/v5.0.0-rc.2)
- [https://github.com/advisories/GHSA-82fw-gwwq-j7x9](https://redirect.github.com/advisories/GHSA-82fw-gwwq-j7x9)
This data is provided by the [GitHub Advisory Database](https://redirect.github.com/advisories/GHSA-82fw-gwwq-j7x9) ([CC-BY 4.0](https://redirect.github.com/github/advisory-database/blob/main/LICENSE.md)).
Release Notes
vitest-dev/vitest (vitest)
### [`v5.0.0`](https://redirect.github.com/vitest-dev/vitest/releases/tag/v5.0.0)
[Compare Source](https://redirect.github.com/vitest-dev/vitest/compare/v4.1.11...v5.0.0)
##### 🚨 Breaking Changes
- Replace `loupe.inspect` with pretty-format - by [@hi-ogawa](https://redirect.github.com/hi-ogawa), **Claude Opus 5 (1M context)** and **OpenAI Codex** in [#9609](https://redirect.github.com/vitest-dev/vitest/issues/9609) [(3f802)](https://redirect.github.com/vitest-dev/vitest/commit/3f802da4b)
- Remove quotes from string values in `test.for/each` title `$` variable (take 2) - by [@hi-ogawa](https://redirect.github.com/hi-ogawa) in [#10170](https://redirect.github.com/vitest-dev/vitest/issues/10170) [(04d37)](https://redirect.github.com/vitest-dev/vitest/commit/04d37e9d7)
- Default `attachmentsDir` from `.vitest-attachements/` to `.vitest/attachments/` - by [@MdSadiqMd](https://redirect.github.com/MdSadiqMd) in [#10186](https://redirect.github.com/vitest-dev/vitest/issues/10186) [(1ba73)](https://redirect.github.com/vitest-dev/vitest/commit/1ba7338c3)
- Remove `sequential` test/suite options in favor of `concurrent` - by [@hi-ogawa](https://redirect.github.com/hi-ogawa) and **OpenAI Codex** in [#10198](https://redirect.github.com/vitest-dev/vitest/issues/10198) [(9229f)](https://redirect.github.com/vitest-dev/vitest/commit/9229f2edc)
- Represent locator as an object instead of a string - by [@sheremet-va](https://redirect.github.com/sheremet-va) in [#10212](https://redirect.github.com/vitest-dev/vitest/issues/10212) [(80f07)](https://redirect.github.com/vitest-dev/vitest/commit/80f07edf6)
- Inline `expect` package - by [@sheremet-va](https://redirect.github.com/sheremet-va) in [#10221](https://redirect.github.com/vitest-dev/vitest/issues/10221) [(ad162)](https://redirect.github.com/vitest-dev/vitest/commit/ad16223e7)
- Remove deprecated entry points - by [@sheremet-va](https://redirect.github.com/sheremet-va) in [#10222](https://redirect.github.com/vitest-dev/vitest/issues/10222) [(994c6)](https://redirect.github.com/vitest-dev/vitest/commit/994c6ddb9)
- Require Node.js 22 and Vite 6.4 - by [@sheremet-va](https://redirect.github.com/sheremet-va) in [#10178](https://redirect.github.com/vitest-dev/vitest/issues/10178) [(38762)](https://redirect.github.com/vitest-dev/vitest/commit/3876283e8)
- Fail `expect.poll` when function didn't resolve in time - by [@hi-ogawa](https://redirect.github.com/hi-ogawa) and **OpenAI Codex** in [#10233](https://redirect.github.com/vitest-dev/vitest/issues/10233) [(4df04)](https://redirect.github.com/vitest-dev/vitest/commit/4df048c11)
- Throw an error if hoistable methods are outside the top level scope - by [@sheremet-va](https://redirect.github.com/sheremet-va) in [#10460](https://redirect.github.com/vitest-dev/vitest/issues/10460) [(d0b4f)](https://redirect.github.com/vitest-dev/vitest/commit/d0b4fddcb)
- `toHaveTextContent` is strict, add `toMatchTextContent` as alternative - by [@sheremet-va](https://redirect.github.com/sheremet-va) in [#10473](https://redirect.github.com/vitest-dev/vitest/issues/10473) [(18f30)](https://redirect.github.com/vitest-dev/vitest/commit/18f303079)
- Don't lookup config file from ancestor directories - by [@hi-ogawa](https://redirect.github.com/hi-ogawa), **OpenAI Codex** and **Hiroshi Ogawa** in [#10428](https://redirect.github.com/vitest-dev/vitest/issues/10428) [(945d9)](https://redirect.github.com/vitest-dev/vitest/commit/945d9090e)
- Inline `@vitest/runner` package, do not publish it anymore - by [@sheremet-va](https://redirect.github.com/sheremet-va) in [#10511](https://redirect.github.com/vitest-dev/vitest/issues/10511) [(6d6e4)](https://redirect.github.com/vitest-dev/vitest/commit/6d6e46b1e)
- Allow mutating happy-dom/jsdom window object - by [@hi-ogawa](https://redirect.github.com/hi-ogawa), **Hiroshi Ogawa** and **OpenAI Codex** in [#10373](https://redirect.github.com/vitest-dev/vitest/issues/10373) [(206e8)](https://redirect.github.com/vitest-dev/vitest/commit/206e8cff8)
- Expose `concurrencyId`/`workerId` on TestModule's diagnostics, make id 1-based - by [@sheremet-va](https://redirect.github.com/sheremet-va) in [#10516](https://redirect.github.com/vitest-dev/vitest/issues/10516) [(bdd98)](https://redirect.github.com/vitest-dev/vitest/commit/bdd985433)
- Add `screenshotDirectory` config to `browser.expect.toMatchScreenshot` - by [@macarie](https://redirect.github.com/macarie) in [#10592](https://redirect.github.com/vitest-dev/vitest/issues/10592) [(a60de)](https://redirect.github.com/vitest-dev/vitest/commit/a60ded0fb)
- Update `@sinonjs/fake-timers` and support mocking `Temporal` - by [@hi-ogawa](https://redirect.github.com/hi-ogawa), **Hiroshi Ogawa** and **OpenCode (gpt-5.6-sol)** in [#10654](https://redirect.github.com/vitest-dev/vitest/issues/10654) [(f8b15)](https://redirect.github.com/vitest-dev/vitest/commit/f8b1532fe)
- Remove webdriverio package - by [@sheremet-va](https://redirect.github.com/sheremet-va) in [#10675](https://redirect.github.com/vitest-dev/vitest/issues/10675) [(5fed6)](https://redirect.github.com/vitest-dev/vitest/commit/5fed68f72)
- Clear mocks by default before each test - by [@sheremet-va](https://redirect.github.com/sheremet-va) in [#10613](https://redirect.github.com/vitest-dev/vitest/issues/10613) [(0f646)](https://redirect.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://redirect.github.com/sheremet-va) in [#10293](https://redirect.github.com/vitest-dev/vitest/issues/10293) [(334ed)](https://redirect.github.com/vitest-dev/vitest/commit/334edef92)
- Separate config resolution from the server creation - by [@sheremet-va](https://redirect.github.com/sheremet-va) in [#10554](https://redirect.github.com/vitest-dev/vitest/issues/10554) [(1c0ec)](https://redirect.github.com/vitest-dev/vitest/commit/1c0ec3444)
- Inline projects extend the root config by default - by [@sheremet-va](https://redirect.github.com/sheremet-va) in [#10750](https://redirect.github.com/vitest-dev/vitest/issues/10750) [(fec00)](https://redirect.github.com/vitest-dev/vitest/commit/fec001ad3)
- Enable mocking Temporal without fake timers - by [@fabon-f](https://redirect.github.com/fabon-f), **Hiroshi Ogawa** and **OpenCode (gpt-5.6-sol)** in [#10757](https://redirect.github.com/vitest-dev/vitest/issues/10757) [(ac2d4)](https://redirect.github.com/vitest-dev/vitest/commit/ac2d46b42)
- Support nested projects - by [@sheremet-va](https://redirect.github.com/sheremet-va) in [#10846](https://redirect.github.com/vitest-dev/vitest/issues/10846) [(ec367)](https://redirect.github.com/vitest-dev/vitest/commit/ec367cf2a)
- Use `>` as separator in `-t`, calculate `only` once - by [@sheremet-va](https://redirect.github.com/sheremet-va) in [#10686](https://redirect.github.com/vitest-dev/vitest/issues/10686) [(a0b20)](https://redirect.github.com/vitest-dev/vitest/commit/a0b20bc86)
- Fail the test when an asynchronous assertion is not awaited - by [@sheremet-va](https://redirect.github.com/sheremet-va) in [#10868](https://redirect.github.com/vitest-dev/vitest/issues/10868) [(86d4a)](https://redirect.github.com/vitest-dev/vitest/commit/86d4a9da9)
- Share the Vite server between inline projects - by [@sheremet-va](https://redirect.github.com/sheremet-va) in [#10848](https://redirect.github.com/vitest-dev/vitest/issues/10848) [(d87c9)](https://redirect.github.com/vitest-dev/vitest/commit/d87c96ee4)
- Parse files statically in vitest list by default - by [@sheremet-va](https://redirect.github.com/sheremet-va) in [#11088](https://redirect.github.com/vitest-dev/vitest/issues/11088) [(51e94)](https://redirect.github.com/vitest-dev/vitest/commit/51e949416)
- **benchmark**:
- Rewrite the public API - by [@sheremet-va](https://redirect.github.com/sheremet-va) in [#10113](https://redirect.github.com/vitest-dev/vitest/issues/10113) [(19f6e)](https://redirect.github.com/vitest-dev/vitest/commit/19f6e8947)
- **browser**:
- Iframe scale - by [@macarie](https://redirect.github.com/macarie) in [#9745](https://redirect.github.com/vitest-dev/vitest/issues/9745) [(b6398)](https://redirect.github.com/vitest-dev/vitest/commit/b639852cc)
- Enable `locators.exact` by default - by [@sheremet-va](https://redirect.github.com/sheremet-va) in [#10430](https://redirect.github.com/vitest-dev/vitest/issues/10430) [(e2032)](https://redirect.github.com/vitest-dev/vitest/commit/e203202f9)
- Require `sessionId` for orchestrator html request - by [@hi-ogawa](https://redirect.github.com/hi-ogawa), **Hiroshi Ogawa** and **OpenAI Codex** in [#10522](https://redirect.github.com/vitest-dev/vitest/issues/10522) [(79b7d)](https://redirect.github.com/vitest-dev/vitest/commit/79b7d8fcc)
- Save failure screenshots in `attachmentsDir` - by [@macarie](https://redirect.github.com/macarie) in [#10917](https://redirect.github.com/vitest-dev/vitest/issues/10917) [(3b5bb)](https://redirect.github.com/vitest-dev/vitest/commit/3b5bbd8b4)
- **coverage**:
- `include/exclude` globs too eager - by [@AriPerkkio](https://redirect.github.com/AriPerkkio) in [#9818](https://redirect.github.com/vitest-dev/vitest/issues/9818) [(edacb)](https://redirect.github.com/vitest-dev/vitest/commit/edacb0fd4)
- Allow `thresholds.perFile` to accept an object - by [@vladlenskiy](https://redirect.github.com/vladlenskiy) and [@AriPerkkio](https://redirect.github.com/AriPerkkio) in [#10190](https://redirect.github.com/vitest-dev/vitest/issues/10190) [(13b78)](https://redirect.github.com/vitest-dev/vitest/commit/13b78d98b)
- **expect**:
- Fix `toThrow("")` behavior by reverting [#6710](https://redirect.github.com/vitest-dev/vitest/issues/6710) - by [@hi-ogawa](https://redirect.github.com/hi-ogawa) in [#9643](https://redirect.github.com/vitest-dev/vitest/issues/9643) and [#6710](https://redirect.github.com/vitest-dev/vitest/issues/6710) [(6c3e4)](https://redirect.github.com/vitest-dev/vitest/commit/6c3e4bdbf)
- **mocker**:
- Deserialize automock as automock - by [@nami8824](https://redirect.github.com/nami8824) in [#10192](https://redirect.github.com/vitest-dev/vitest/issues/10192) [(2f892)](https://redirect.github.com/vitest-dev/vitest/commit/2f892712d)
- **reporters**:
- `blob` reporter and `--merge-reports` default to `.vitest/blob/` - by [@AriPerkkio](https://redirect.github.com/AriPerkkio) in [#10232](https://redirect.github.com/vitest-dev/vitest/issues/10232) [(d22b0)](https://redirect.github.com/vitest-dev/vitest/commit/d22b029ae)
- Write json and junit reporter output files to `.vitest` by default - by [@hi-ogawa](https://redirect.github.com/hi-ogawa), **Hiroshi Ogawa**, **OpenCode (gpt-5.6-sol)** and [@AriPerkkio](https://redirect.github.com/AriPerkkio) in [#10621](https://redirect.github.com/vitest-dev/vitest/issues/10621) [(58577)](https://redirect.github.com/vitest-dev/vitest/commit/58577290a)
- **spy**:
- Preserve class mock prototype methods on instances - by [@sheremet-va](https://redirect.github.com/sheremet-va) in [#10910](https://redirect.github.com/vitest-dev/vitest/issues/10910) [(6093d)](https://redirect.github.com/vitest-dev/vitest/commit/6093d764a)
- **types**:
- Add better promise support in expects and matchers - by [@samchungy](https://redirect.github.com/samchungy) and [@sheremet-va](https://redirect.github.com/sheremet-va) in [#8266](https://redirect.github.com/vitest-dev/vitest/issues/8266) [(41f55)](https://redirect.github.com/vitest-dev/vitest/commit/41f551bce)
- **ui**:
- Harden UI API access - by [@hi-ogawa](https://redirect.github.com/hi-ogawa), **Hiroshi Ogawa** and **OpenAI Codex** in [#10583](https://redirect.github.com/vitest-dev/vitest/issues/10583) [(4c26d)](https://redirect.github.com/vitest-dev/vitest/commit/4c26d7675)
- Change html reporter default output to `.vitest` - by [@hi-ogawa](https://redirect.github.com/hi-ogawa) and **Hiroshi Ogawa** in [#10620](https://redirect.github.com/vitest-dev/vitest/issues/10620) [(29c36)](https://redirect.github.com/vitest-dev/vitest/commit/29c364d50)
##### 🚀 Features
- Add `createReport` and `.vitest` report directory convention - by [@AriPerkkio](https://redirect.github.com/AriPerkkio) in [#9993](https://redirect.github.com/vitest-dev/vitest/issues/9993) [(72a6d)](https://redirect.github.com/vitest-dev/vitest/commit/72a6dc257)
- Expose default reporters through `configDefaults.reporters` - by [@hi-ogawa](https://redirect.github.com/hi-ogawa) and **Claude Opus 5 (1M context)** in [#10219](https://redirect.github.com/vitest-dev/vitest/issues/10219) [(083f6)](https://redirect.github.com/vitest-dev/vitest/commit/083f6bdd6)
- Support merge reports for non-sharded multi-environment runs (take 2) - by [@hi-ogawa](https://redirect.github.com/hi-ogawa), **Claude Opus 5 (1M context)**, **OpenAI Codex** and [@AriPerkkio](https://redirect.github.com/AriPerkkio) in [#10031](https://redirect.github.com/vitest-dev/vitest/issues/10031) [(e60b2)](https://redirect.github.com/vitest-dev/vitest/commit/e60b2f49e)
- Add `logger.formatError` - by [@hi-ogawa](https://redirect.github.com/hi-ogawa) and **OpenAI Codex** in [#10268](https://redirect.github.com/vitest-dev/vitest/issues/10268) [(2c5f3)](https://redirect.github.com/vitest-dev/vitest/commit/2c5f3ee2f)
- Support typescript build mode - by [@lishaduck](https://redirect.github.com/lishaduck) in [#9870](https://redirect.github.com/vitest-dev/vitest/issues/9870) [(106da)](https://redirect.github.com/vitest-dev/vitest/commit/106da5896)
- Add toggable `injectCjsGlobals` option - by [@sheremet-va](https://redirect.github.com/sheremet-va) in [#10709](https://redirect.github.com/vitest-dev/vitest/issues/10709) [(82671)](https://redirect.github.com/vitest-dev/vitest/commit/826714ece)
- Promote fsModuleCache to a top-level option - by [@sheremet-va](https://redirect.github.com/sheremet-va) in [#10734](https://redirect.github.com/vitest-dev/vitest/issues/10734) [(78ed7)](https://redirect.github.com/vitest-dev/vitest/commit/78ed73afd)
- Support non-ascii characters in `for/each` title placeholders - by [@k-yle](https://redirect.github.com/k-yle) in [#10773](https://redirect.github.com/vitest-dev/vitest/issues/10773) [(15e0a)](https://redirect.github.com/vitest-dev/vitest/commit/15e0af953)
- Report the duration breakdown as percentages - by [@sheremet-va](https://redirect.github.com/sheremet-va) and [@AriPerkkio](https://redirect.github.com/AriPerkkio) in [#10820](https://redirect.github.com/vitest-dev/vitest/issues/10820) [(c67d2)](https://redirect.github.com/vitest-dev/vitest/commit/c67d296f4)
- Promote parseSpecifications out of experimental - by [@sheremet-va](https://redirect.github.com/sheremet-va) in [#11087](https://redirect.github.com/vitest-dev/vitest/issues/11087) [(b628c)](https://redirect.github.com/vitest-dev/vitest/commit/b628cb680)
- Promote clearCache out of experimental - by [@sheremet-va](https://redirect.github.com/sheremet-va) in [#11086](https://redirect.github.com/vitest-dev/vitest/issues/11086) [(d4fe1)](https://redirect.github.com/vitest-dev/vitest/commit/d4fe1986f)
- **api**:
- Expose logs recorded during the test - by [@sheremet-va](https://redirect.github.com/sheremet-va) in [#10277](https://redirect.github.com/vitest-dev/vitest/issues/10277) [(cba20)](https://redirect.github.com/vitest-dev/vitest/commit/cba2036a1)
- **benchmark**:
- Add pluggable benchmark provider API - by [@GuillaumeLagrange](https://redirect.github.com/GuillaumeLagrange) and [@sheremet-va](https://redirect.github.com/sheremet-va) in [#10799](https://redirect.github.com/vitest-dev/vitest/issues/10799) [(86c70)](https://redirect.github.com/vitest-dev/vitest/commit/86c700ed8)
- **browser**:
- Export aria tree utils - by [@hi-ogawa](https://redirect.github.com/hi-ogawa) in [#10171](https://redirect.github.com/vitest-dev/vitest/issues/10171) [(c3423)](https://redirect.github.com/vitest-dev/vitest/commit/c3423014c)
- Support dom snapshot trace view - by [@hi-ogawa](https://redirect.github.com/hi-ogawa), **Claude Opus 5 (1M context)** and **OpenAI Codex** in [#10102](https://redirect.github.com/vitest-dev/vitest/issues/10102) [(7eddd)](https://redirect.github.com/vitest-dev/vitest/commit/7eddd273d)
- Provide project reference in `ToMatchScreenshotResolvePath` - by [@macarie](https://redirect.github.com/macarie) and [@sheremet-va](https://redirect.github.com/sheremet-va) in [#10138](https://redirect.github.com/vitest-dev/vitest/issues/10138) [(16654)](https://redirect.github.com/vitest-dev/vitest/commit/166544e39)
- Show aria tree on locator element error - by [@hi-ogawa](https://redirect.github.com/hi-ogawa) and **OpenAI Codex** in [#10257](https://redirect.github.com/vitest-dev/vitest/issues/10257) [(04f04)](https://redirect.github.com/vitest-dev/vitest/commit/04f04cdd1)
- Support custom `kind` in `page.mark` - by [@AriPerkkio](https://redirect.github.com/AriPerkkio) in [#10302](https://redirect.github.com/vitest-dev/vitest/issues/10302) [(053e8)](https://redirect.github.com/vitest-dev/vitest/commit/053e8b0d1)
- Live update trace view on watch UI - by [@hi-ogawa](https://redirect.github.com/hi-ogawa) and **OpenAI Codex** in [#10296](https://redirect.github.com/vitest-dev/vitest/issues/10296) [(78c11)](https://redirect.github.com/vitest-dev/vitest/commit/78c1169cf)
- Add `context.mark` for custom command tracing - by [@AriPerkkio](https://redirect.github.com/AriPerkkio) in [#10329](https://redirect.github.com/vitest-dev/vitest/issues/10329) [(aa514)](https://redirect.github.com/vitest-dev/vitest/commit/aa5140e76)
- Show trace view steps in editor panel - by [@hi-ogawa](https://redirect.github.com/hi-ogawa) and **OpenAI Codex** in [#10404](https://redirect.github.com/vitest-dev/vitest/issues/10404) [(8c4b6)](https://redirect.github.com/vitest-dev/vitest/commit/8c4b6da02)
- Display nested mark trace in UI - by [@hi-ogawa](https://redirect.github.com/hi-ogawa), **Hiroshi Ogawa** and **OpenAI Codex** in [#10437](https://redirect.github.com/vitest-dev/vitest/issues/10437) [(86ffc)](https://redirect.github.com/vitest-dev/vitest/commit/86ffc8ac6)
- **cli**:
- Add `--repeats` CLI option - by [@todor-a](https://redirect.github.com/todor-a) in [#10504](https://redirect.github.com/vitest-dev/vitest/issues/10504) [(ee48b)](https://redirect.github.com/vitest-dev/vitest/commit/ee48b959e)
- Support -p shorthand for --project - by [@sheremet-va](https://redirect.github.com/sheremet-va) in [#10826](https://redirect.github.com/vitest-dev/vitest/issues/10826) [(1addd)](https://redirect.github.com/vitest-dev/vitest/commit/1adddde12)
- **coverage**:
- V8 to track `node:child_process` and `node:worker_threads` contexts - by [@AriPerkkio](https://redirect.github.com/AriPerkkio) in [#9976](https://redirect.github.com/vitest-dev/vitest/issues/9976) [(9baa5)](https://redirect.github.com/vitest-dev/vitest/commit/9baa5faba)
- `thresholds.autoUpdate` to receive previous threshold as argument - by [@wouterkroes](https://redirect.github.com/wouterkroes) in [#10495](https://redirect.github.com/vitest-dev/vitest/issues/10495) [(04f81)](https://redirect.github.com/vitest-dev/vitest/commit/04f81854f)
- Switch to `@vitest/istanbuljs` packages - by [@AriPerkkio](https://redirect.github.com/AriPerkkio) in [#11053](https://redirect.github.com/vitest-dev/vitest/issues/11053) [(5f6a5)](https://redirect.github.com/vitest-dev/vitest/commit/5f6a5e84a)
- **junit-reporter**:
- Add jest-junit-compatible naming options - by [@neumaennl](https://redirect.github.com/neumaennl), **neumaennl**, **Martin Neumann** and **Copilot** in [#10189](https://redirect.github.com/vitest-dev/vitest/issues/10189) [(27393)](https://redirect.github.com/vitest-dev/vitest/commit/273933440)
- **reporter**:
- Support html reporter single file output - by [@hi-ogawa](https://redirect.github.com/hi-ogawa), **OpenAI Codex** and **Claude Opus 5 (1M context)** in [#10235](https://redirect.github.com/vitest-dev/vitest/issues/10235) [(f757e)](https://redirect.github.com/vitest-dev/vitest/commit/f757ec5e6)
- Add custom GitHub Actions summary title - by [@heyJonBray](https://redirect.github.com/heyJonBray) and [@macarie](https://redirect.github.com/macarie) in [#10891](https://redirect.github.com/vitest-dev/vitest/issues/10891) [(4363c)](https://redirect.github.com/vitest-dev/vitest/commit/4363cdb49)
- **ui**:
- Highlight editor source locations - by [@sheremet-va](https://redirect.github.com/sheremet-va), **Hiroshi Ogawa** and **OpenCode (gpt-5.6-sol)** in [#11004](https://redirect.github.com/vitest-dev/vitest/issues/11004) [(bce2d)](https://redirect.github.com/vitest-dev/vitest/commit/bce2d3c2f)
- Navigate trace steps with keyboard and remove indirect editor focus - by [@sheremet-va](https://redirect.github.com/sheremet-va), **Hiroshi Ogawa** and **OpenCode (gpt-5.6-sol)** in [#11005](https://redirect.github.com/vitest-dev/vitest/issues/11005) [(6816f)](https://redirect.github.com/vitest-dev/vitest/commit/6816f3b17)
- Persist trace view selection in URL - by [@hi-ogawa](https://redirect.github.com/hi-ogawa), **Hiroshi Ogawa** and **OpenCode (gpt-5.6-sol)** in [#10981](https://redirect.github.com/vitest-dev/vitest/issues/10981) [(3069e)](https://redirect.github.com/vitest-dev/vitest/commit/3069e5927)
- Toggle trace target highlight - by [@hi-ogawa](https://redirect.github.com/hi-ogawa), **Hiroshi Ogawa** and **OpenCode (gpt-5.6-sol)** in [#11049](https://redirect.github.com/vitest-dev/vitest/issues/11049) [(cd63e)](https://redirect.github.com/vitest-dev/vitest/commit/cd63e9e43)
- Add link to open playwright trace - by [@hi-ogawa](https://redirect.github.com/hi-ogawa), **Hiroshi Ogawa** and **OpenCode (gpt-5.6-sol)** in [#11059](https://redirect.github.com/vitest-dev/vitest/issues/11059) [(58f02)](https://redirect.github.com/vitest-dev/vitest/commit/58f02ae36)
- **vitest**:
- Create `vi.when()` - by [@macarie](https://redirect.github.com/macarie) in [#10174](https://redirect.github.com/vitest-dev/vitest/issues/10174) [(3900e)](https://redirect.github.com/vitest-dev/vitest/commit/3900e6349)
- **vm**:
- Support `require(esm)` in vm pools - by [@sheremet-va](https://redirect.github.com/sheremet-va) in [#10829](https://redirect.github.com/vitest-dev/vitest/issues/10829) [(01298)](https://redirect.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://redirect.github.com/hi-ogawa), **OpenAI Codex** and [@sheremet-va](https://redirect.github.com/sheremet-va) in [#10194](https://redirect.github.com/vitest-dev/vitest/issues/10194) [(9387f)](https://redirect.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://redirect.github.com/hi-ogawa) and **OpenAI Codex** in [#10216](https://redirect.github.com/vitest-dev/vitest/issues/10216) [(457db)](https://redirect.github.com/vitest-dev/vitest/commit/457db297b)
- Udpate optimize deps config - by [@sheremet-va](https://redirect.github.com/sheremet-va) in [#10223](https://redirect.github.com/vitest-dev/vitest/issues/10223) [(95dc6)](https://redirect.github.com/vitest-dev/vitest/commit/95dc6e3f1)
- Shell injection safety via github.ref\_name in publish workflow - by [@lloyd-c137](https://redirect.github.com/lloyd-c137) and **lloyd-c137** in [#10327](https://redirect.github.com/vitest-dev/vitest/issues/10327) [(dd020)](https://redirect.github.com/vitest-dev/vitest/commit/dd0207f4d)
- Make `attachmentsDir` root only config - by [@hi-ogawa](https://redirect.github.com/hi-ogawa) and **OpenAI Codex** in [#10334](https://redirect.github.com/vitest-dev/vitest/issues/10334) [(fab1b)](https://redirect.github.com/vitest-dev/vitest/commit/fab1b6020)
- Apply cjs interop for truthy `__esModule` - by [@hi-ogawa](https://redirect.github.com/hi-ogawa) in [#10363](https://redirect.github.com/vitest-dev/vitest/issues/10363) [(2b135)](https://redirect.github.com/vitest-dev/vitest/commit/2b13547a5)
- Preserve `vi.defineHelper` callsite for async error stack - by [@macayu17](https://redirect.github.com/macayu17) and [@hi-ogawa](https://redirect.github.com/hi-ogawa) in [#10415](https://redirect.github.com/vitest-dev/vitest/issues/10415) [(ac697)](https://redirect.github.com/vitest-dev/vitest/commit/ac6971ca2)
- Respect `disableConsoleIntercept` in browser mode - by [@Copilot](https://redirect.github.com/Copilot), **Hiroshi Ogawa**, [@hi-ogawa](https://redirect.github.com/hi-ogawa) and **OpenAI Codex** in [#10391](https://redirect.github.com/vitest-dev/vitest/issues/10391) [(66110)](https://redirect.github.com/vitest-dev/vitest/commit/66110d271)
- ForceRerunTriggers uses directory globs against files - by [@Patrick-Clausen](https://redirect.github.com/Patrick-Clausen) and **Patrick Clausen** in [#10421](https://redirect.github.com/vitest-dev/vitest/issues/10421) and [#10420](https://redirect.github.com/vitest-dev/vitest/issues/10420) [(4fee2)](https://redirect.github.com/vitest-dev/vitest/commit/4fee2e303)
- Unify typechecking and ast collection - by [@sheremet-va](https://redirect.github.com/sheremet-va) in [#10449](https://redirect.github.com/vitest-dev/vitest/issues/10449) [(af993)](https://redirect.github.com/vitest-dev/vitest/commit/af993b66b)
- Don't print typecheck warning more than once - by [@sheremet-va](https://redirect.github.com/sheremet-va) in [#10461](https://redirect.github.com/vitest-dev/vitest/issues/10461) [(15275)](https://redirect.github.com/vitest-dev/vitest/commit/152750ec0)
- Correct collumn when parsing tests - by [@sheremet-va](https://redirect.github.com/sheremet-va) in [#10467](https://redirect.github.com/vitest-dev/vitest/issues/10467) [(7c2fc)](https://redirect.github.com/vitest-dev/vitest/commit/7c2fc133e)
- Fix mixed stdout/stderr log timestamps in `onUserConsoleLog` - by [@Copilot](https://redirect.github.com/Copilot), **Hiroshi Ogawa**, [@hi-ogawa](https://redirect.github.com/hi-ogawa) and [@sheremet-va](https://redirect.github.com/sheremet-va) in [#10308](https://redirect.github.com/vitest-dev/vitest/issues/10308) [(62756)](https://redirect.github.com/vitest-dev/vitest/commit/627565475)
- Fix `importOriginal` with optimizer and query import - by [@davidxharris](https://redirect.github.com/davidxharris), **David Harris**, [@hi-ogawa](https://redirect.github.com/hi-ogawa), **Hiroshi Ogawa** and **OpenAI Codex** in [#10469](https://redirect.github.com/vitest-dev/vitest/issues/10469) [(6a3bb)](https://redirect.github.com/vitest-dev/vitest/commit/6a3bb02e0)
- Correct transform time calculation in merged report - by [@potatomatoooo](https://redirect.github.com/potatomatoooo) and [@hi-ogawa](https://redirect.github.com/hi-ogawa) in [#10570](https://redirect.github.com/vitest-dev/vitest/issues/10570) and [#10578](https://redirect.github.com/vitest-dev/vitest/issues/10578) [(b7897)](https://redirect.github.com/vitest-dev/vitest/commit/b78972892)
- Fix `setImmediate` await in detect-async-leak - by [@hi-ogawa](https://redirect.github.com/hi-ogawa) and **Hiroshi Ogawa** in [#10608](https://redirect.github.com/vitest-dev/vitest/issues/10608) [(dd62b)](https://redirect.github.com/vitest-dev/vitest/commit/dd62b84e0)
- Fix per-project `sequence` config - by [@hi-ogawa](https://redirect.github.com/hi-ogawa), **Hiroshi Ogawa** and **OpenCode (gpt-5.6-sol)** in [#10659](https://redirect.github.com/vitest-dev/vitest/issues/10659) [(40cdc)](https://redirect.github.com/vitest-dev/vitest/commit/40cdc7fd6)
- Add handshake timeout to iframe communication - by [@sheremet-va](https://redirect.github.com/sheremet-va) in [#10656](https://redirect.github.com/vitest-dev/vitest/issues/10656) [(3545f)](https://redirect.github.com/vitest-dev/vitest/commit/3545fe78f)
- Don't print column in test names when `includeTaskLocation` is enabled - by [@sheremet-va](https://redirect.github.com/sheremet-va) in [#10681](https://redirect.github.com/vitest-dev/vitest/issues/10681) [(bd9cc)](https://redirect.github.com/vitest-dev/vitest/commit/bd9cc9d8d)
- Disable server HMR before plugins read it in their config hook - by [@sheremet-va](https://redirect.github.com/sheremet-va) in [#10731](https://redirect.github.com/vitest-dev/vitest/issues/10731) [(e060b)](https://redirect.github.com/vitest-dev/vitest/commit/e060b8fa9)
- Close the pool before the Vite servers - by [@sheremet-va](https://redirect.github.com/sheremet-va) in [#10725](https://redirect.github.com/vitest-dev/vitest/issues/10725) [(96fa6)](https://redirect.github.com/vitest-dev/vitest/commit/96fa6d73d)
- Remove listeners in the typecheck worker's `off` - by [@sheremet-va](https://redirect.github.com/sheremet-va) in [#10741](https://redirect.github.com/vitest-dev/vitest/issues/10741) [(d758b)](https://redirect.github.com/vitest-dev/vitest/commit/d758b4755)
- Keep per-file isolation in vm pools when maxWorkers is 1 - by [@sheremet-va](https://redirect.github.com/sheremet-va) in [#10743](https://redirect.github.com/vitest-dev/vitest/issues/10743) [(83ab9)](https://redirect.github.com/vitest-dev/vitest/commit/83ab9a44f)
- Node.js 20 deprecation warning for `ci.yml` - by [@hirehamir](https://redirect.github.com/hirehamir) in [#10759](https://redirect.github.com/vitest-dev/vitest/issues/10759) [(2127f)](https://redirect.github.com/vitest-dev/vitest/commit/2127fa6ce)
- Prevent node builtins double prefix - by [@malobre](https://redirect.github.com/malobre) in [#10630](https://redirect.github.com/vitest-dev/vitest/issues/10630) and [#10767](https://redirect.github.com/vitest-dev/vitest/issues/10767) [(22d35)](https://redirect.github.com/vitest-dev/vitest/commit/22d353a80)
- Set non-zero exit code when teardown throws during close - by [@zakcutner](https://redirect.github.com/zakcutner) and [@AriPerkkio](https://redirect.github.com/AriPerkkio) in [#10794](https://redirect.github.com/vitest-dev/vitest/issues/10794) [(22116)](https://redirect.github.com/vitest-dev/vitest/commit/22116feb7)
- Don't race the typechecker spawn grace period on windows - by [@xevrion](https://redirect.github.com/xevrion) in [#10814](https://redirect.github.com/vitest-dev/vitest/issues/10814) [(b19e5)](https://redirect.github.com/vitest-dev/vitest/commit/b19e5ece9)
- Coalesce concurrent watch-mode restarts, deflake the pool stderr fixture - by [@sheremet-va](https://redirect.github.com/sheremet-va) in [#10822](https://redirect.github.com/vitest-dev/vitest/issues/10822) [(a31f8)](https://redirect.github.com/vitest-dev/vitest/commit/a31f86af7)
- Prevent `vitest --typecheck` from reporting a false success when the `tsc` process crashes - by [@hitenkalda](https://redirect.github.com/hitenkalda) and **Hiten Kalda** in [#10705](https://redirect.github.com/vitest-dev/vitest/issues/10705) [(a1b05)](https://redirect.github.com/vitest-dev/vitest/commit/a1b0565c9)
- Collect in-source tests when the module is cached - by [@koutaro-masaki](https://redirect.github.com/koutaro-masaki) in [#10577](https://redirect.github.com/vitest-dev/vitest/issues/10577) and [#10589](https://redirect.github.com/vitest-dev/vitest/issues/10589) [(a7bf2)](https://redirect.github.com/vitest-dev/vitest/commit/a7bf2b2c8)
- Swap replace() arguments so timeout error stack shows the real message - by [@lazerg](https://redirect.github.com/lazerg) in [#10875](https://redirect.github.com/vitest-dev/vitest/issues/10875) [(aba0f)](https://redirect.github.com/vitest-dev/vitest/commit/aba0f9b7b)
- Stale mock metadata breaks automocking with isolate:false - by [@kade-robertson](https://redirect.github.com/kade-robertson) in [#10145](https://redirect.github.com/vitest-dev/vitest/issues/10145) and [#10541](https://redirect.github.com/vitest-dev/vitest/issues/10541) [(8e210)](https://redirect.github.com/vitest-dev/vitest/commit/8e2108dda)
- Don't lose worker output on teardown, deflake timing-sensitive tests - by [@sheremet-va](https://redirect.github.com/sheremet-va) in [#10842](https://redirect.github.com/vitest-dev/vitest/issues/10842) [(1216b)](https://redirect.github.com/vitest-dev/vitest/commit/1216b5af9)
- Revive global concurrency limit for test lifecycle - by [@hi-ogawa](https://redirect.github.com/hi-ogawa), **Hiroshi Ogawa**, **OpenCode (gpt-5.6-sol)** and [@sheremet-va](https://redirect.github.com/sheremet-va) in [#10928](https://redirect.github.com/vitest-dev/vitest/issues/10928) [(cf917)](https://redirect.github.com/vitest-dev/vitest/commit/cf9176bfc)
- Own the post-restart rerun, keep `process.exit` disabled in workers - by [@sheremet-va](https://redirect.github.com/sheremet-va) in [#10963](https://redirect.github.com/vitest-dev/vitest/issues/10963) [(5e69a)](https://redirect.github.com/vitest-dev/vitest/commit/5e69aba65)
- Preserve correct root during resolve config - by [@AriPerkkio](https://redirect.github.com/AriPerkkio) and [@sheremet-va](https://redirect.github.com/sheremet-va) in [#10909](https://redirect.github.com/vitest-dev/vitest/issues/10909) [(210ba)](https://redirect.github.com/vitest-dev/vitest/commit/210ba00cb)
- Combine multiple --project filters correctly - by [@sheremet-va](https://redirect.github.com/sheremet-va) in [#10988](https://redirect.github.com/vitest-dev/vitest/issues/10988) [(66c1c)](https://redirect.github.com/vitest-dev/vitest/commit/66c1cbb53)
- Fix `recordArtifact` location with `vi.defineHelper` - by [@hi-ogawa](https://redirect.github.com/hi-ogawa), **Hiroshi Ogawa** and **OpenCode (gpt-5.6-sol)** in [#11047](https://redirect.github.com/vitest-dev/vitest/issues/11047) [(c2186)](https://redirect.github.com/vitest-dev/vitest/commit/c21865dfd)
- Invalidate resolved setup files - by [@sheremet-va](https://redirect.github.com/sheremet-va) in [#11073](https://redirect.github.com/vitest-dev/vitest/issues/11073) and [#11081](https://redirect.github.com/vitest-dev/vitest/issues/11081) [(488c0)](https://redirect.github.com/vitest-dev/vitest/commit/488c04680)
- Accept awaited value in vi.when thenResolve - by [@sheremet-va](https://redirect.github.com/sheremet-va) in [#11084](https://redirect.github.com/vitest-dev/vitest/issues/11084) [(c10a1)](https://redirect.github.com/vitest-dev/vitest/commit/c10a12900)
- Ignore computed member calls in static collection - by [@sheremet-va](https://redirect.github.com/sheremet-va) in [#11085](https://redirect.github.com/vitest-dev/vitest/issues/11085) [(130f7)](https://redirect.github.com/vitest-dev/vitest/commit/130f79b8b)
- Don't duplicte `oxc.target` if user provides a custom array - by [@sheremet-va](https://redirect.github.com/sheremet-va) in [#11095](https://redirect.github.com/vitest-dev/vitest/issues/11095) [(848d7)](https://redirect.github.com/vitest-dev/vitest/commit/848d7243e)
- Propagate --maxWorkers to projects - by [@Gaurav1112](https://redirect.github.com/Gaurav1112) in [#11102](https://redirect.github.com/vitest-dev/vitest/issues/11102) [(2122f)](https://redirect.github.com/vitest-dev/vitest/commit/2122ffdfb)
- Apply queued mocks from doMock() in queue order - by [@juliandescottes](https://redirect.github.com/juliandescottes) and **Claude Opus 5 (1M context)** in [#10706](https://redirect.github.com/vitest-dev/vitest/issues/10706) and [#11127](https://redirect.github.com/vitest-dev/vitest/issues/11127) [(f08ce)](https://redirect.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://redirect.github.com/sheremet-va) in [#11120](https://redirect.github.com/vitest-dev/vitest/issues/11120) [(584cf)](https://redirect.github.com/vitest-dev/vitest/commit/584cf3084)
- Treat test.describe as a suite during static collection - by [@sheremet-va](https://redirect.github.com/sheremet-va) in [#11128](https://redirect.github.com/vitest-dev/vitest/issues/11128) [(d46a7)](https://redirect.github.com/vitest-dev/vitest/commit/d46a74722)
- **browser**:
- Fix trace highlight of shadow dom on webdriverio - by [@hi-ogawa](https://redirect.github.com/hi-ogawa) in [#10227](https://redirect.github.com/vitest-dev/vitest/issues/10227) [(b01af)](https://redirect.github.com/vitest-dev/vitest/commit/b01afd26c)
- Simplify orchestrator otel carrier - by [@hi-ogawa](https://redirect.github.com/hi-ogawa) in [#10283](https://redirect.github.com/vitest-dev/vitest/issues/10283) [(3514f)](https://redirect.github.com/vitest-dev/vitest/commit/3514f9fa1)
- Remove orphaned Playwright route when same module is mocked via multiple ids - by [@Zelys-DFKH](https://redirect.github.com/Zelys-DFKH) in [#9957](https://redirect.github.com/vitest-dev/vitest/issues/9957) and [#10267](https://redirect.github.com/vitest-dev/vitest/issues/10267) [(41db6)](https://redirect.github.com/vitest-dev/vitest/commit/41db6ce28)
- Skip `wrapDynamicImport` transform on ssr environment - by [@hi-ogawa](https://redirect.github.com/hi-ogawa) in [#10355](https://redirect.github.com/vitest-dev/vitest/issues/10355) [(d3c96)](https://redirect.github.com/vitest-dev/vitest/commit/d3c964bfc)
- Fix stale source map on watch mode - by [@hi-ogawa](https://redirect.github.com/hi-ogawa) in [#10389](https://redirect.github.com/vitest-dev/vitest/issues/10389) [(6d772)](https://redirect.github.com/vitest-dev/vitest/commit/6d772c800)
- Escape inline orchestrator scripts - by [@hi-ogawa](https://redirect.github.com/hi-ogawa) and **OpenAI Codex** in [#10412](https://redirect.github.com/vitest-dev/vitest/issues/10412) [(c22cf)](https://redirect.github.com/vitest-dev/vitest/commit/c22cfb656)
- Disable client `cdp` API when `allowWrite/allowExec: false` - by [@hi-ogawa](https://redirect.github.com/hi-ogawa) and **OpenAI Codex** in [#10444](https://redirect.github.com/vitest-dev/vitest/issues/10444) [(63e3b)](https://redirect.github.com/vitest-dev/vitest/commit/63e3b2eee)
- Wait for orchestrator readiness before resolving browser sessions - by [@soconnor-seeq](https://redirect.github.com/soconnor-seeq) in [#10397](https://redirect.github.com/vitest-dev/vitest/issues/10397) [(fe5ed)](https://redirect.github.com/vitest-dev/vitest/commit/fe5ed6bc7)
- Wait for iframe tester readiness before preparing - by [@soconnor-seeq](https://redirect.github.com/soconnor-seeq) in [#10497](https://redirect.github.com/vitest-dev/vitest/issues/10497) [(f2655)](https://redirect.github.com/vitest-dev/vitest/commit/f26552c63)
- Encode iframeId in tester iframe URL - by [@Pduhard](https://redirect.github.com/Pduhard), **Pduhard** and **Claude Opus 5 (1M context)** in [#10520](https://redirect.github.com/vitest-dev/vitest/issues/10520) and [#10521](https://redirect.github.com/vitest-dev/vitest/issues/10521) [(c8bf1)](https://redirect.github.com/vitest-dev/vitest/commit/c8bf19f66)
- Always derive a positive locator action timeout - by [@sheremet-va](https://redirect.github.com/sheremet-va) in [#10626](https://redirect.github.com/vitest-dev/vitest/issues/10626) [(5b864)](https://redirect.github.com/vitest-dev/vitest/commit/5b8642120)
- Resize the browser ui only if it's not headless - by [@sheremet-va](https://redirect.github.com/sheremet-va) in [#10662](https://redirect.github.com/vitest-dev/vitest/issues/10662) [(b5c61)](https://redirect.github.com/vitest-dev/vitest/commit/b5c613051)
- Check fs access in builtin commands - by [@hi-ogawa](https://redirect.github.com/hi-ogawa), **Hiroshi Ogawa** and **OpenCode (gpt-5.6-sol)** in [#10674](https://redirect.github.com/vitest-dev/vitest/issues/10674) [(33f96)](https://redirect.github.com/vitest-dev/vitest/commit/33f96a145)
- Preserve pre-transform request defaults - by [@sheremet-va](https://redirect.github.com/sheremet-va) in [#10748](https://redirect.github.com/vitest-dev/vitest/issues/10748) [(b6060)](https://redirect.github.com/vitest-dev/vitest/commit/b60605ca7)
- Fix error stacktrace location off-by-one - by [@hi-ogawa](https://redirect.github.com/hi-ogawa), **Hiroshi Ogawa** and **OpenCode (gpt-5.6-sol)** in [#10724](https://redirect.github.com/vitest-dev/vitest/issues/10724) [(62b8d)](https://redirect.github.com/vitest-dev/vitest/commit/62b8d3b36)
- Inlined awaited import should not trigger syntax error after transform - by [@smeng9](https://redirect.github.com/smeng9), **Shaoyu Meng** and **Claude Opus 5 (1M context)** in [#10784](https://redirect.github.com/vitest-dev/vitest/issues/10784) [(51acd)](https://redirect.github.com/vitest-dev/vitest/commit/51acd5778)
- Mock window\.print to avoid hanging - by [@aaravjaichand](https://redirect.github.com/aaravjaichand) in [#7375](https://redirect.github.com/vitest-dev/vitest/issues/7375) and [#10798](https://redirect.github.com/vitest-dev/vitest/issues/10798) [(66d95)](https://redirect.github.com/vitest-dev/vitest/commit/66d95af84)
- Ignore channel events in a tester opened as a top-level window - by [@simshanith](https://redirect.github.com/simshanith) in [#9379](https://redirect.github.com/vitest-dev/vitest/issues/9379) and [#9381](https://redirect.github.com/vitest-dev/vitest/issues/9381) [(46a3c)](https://redirect.github.com/vitest-dev/vitest/commit/46a3cf750)
- Resolve `connectTimeout` from the project config - by [@lazerg](https://redirect.github.com/lazerg) in [#10879](https://redirect.github.com/vitest-dev/vitest/issues/10879) and [#10880](https://redirect.github.com/vitest-dev/vitest/issues/10880) [(62c79)](https://redirect.github.com/vitest-dev/vitest/commit/62c795d63)
- Prebundle vite module runner with vitest - by [@lebovvskii](https://redirect.github.com/lebovvskii) and [@sheremet-va](https://redirect.github.com/sheremet-va) in [#10836](https://redirect.github.com/vitest-dev/vitest/issues/10836) and [#10856](https://redirect.github.com/vitest-dev/vitest/issues/10856) [(37c24)](https://redirect.github.com/vitest-dev/vitest/commit/37c240158)
- Restore dependency reload warning - by [@hi-ogawa](https://redirect.github.com/hi-ogawa), **Hiroshi Ogawa** and **OpenCode (gpt-5.6-sol)** in [#10913](https://redirect.github.com/vitest-dev/vitest/issues/10913) [(90d69)](https://redirect.github.com/vitest-dev/vitest/commit/90d696d44)
- Configure internal optimizer dependencies - by [@hi-ogawa](https://redirect.github.com/hi-ogawa), **Hiroshi Ogawa** and **OpenCode (gpt-5.6-sol)** in [#10915](https://redirect.github.com/vitest-dev/vitest/issues/10915) [(a72f4)](https://redirect.github.com/vitest-dev/vitest/commit/a72f46eac)
- Trigger playwright/chromium gc on lower disk availability - by [@hi-ogawa](https://redirect.github.com/hi-ogawa), **Hiroshi Ogawa** and **OpenCode (gpt-5.6-sol)** in [#10912](https://redirect.github.com/vitest-dev/vitest/issues/10912) [(032d3)](https://redirect.github.com/vitest-dev/vitest/commit/032d31892)
- Disallow filter-only options in getBy\* locators - by **Arjun** in [#10295](https://redirect.github.com/vitest-dev/vitest/issues/10295) and [#10933](https://redirect.github.com/vitest-dev/vitest/issues/10933) [(9b4df)](https://redirect.github.com/vitest-dev/vitest/commit/9b4df4b05)
- Fail instead of hanging when the browser stops responding - by [@sheremet-va](https://redirect.github.com/sheremet-va) in [#10956](https://redirect.github.com/vitest-dev/vitest/issues/10956) [(c496c)](https://redirect.github.com/vitest-dev/vitest/commit/c496c2e33)
- Exit gracefully when the browser disconnects during cancellation - by [@sheremet-va](https://redirect.github.com/sheremet-va) in [#10962](https://redirect.github.com/vitest-dev/vitest/issues/10962) [(67e84)](https://redirect.github.com/vitest-dev/vitest/commit/67e848564)
- Don't redirect vitest in client environment - by [@sheremet-va](https://redirect.github.com/sheremet-va) in [#10975](https://redirect.github.com/vitest-dev/vitest/issues/10975) [(aeb67)](https://redirect.github.com/vitest-dev/vitest/commit/aeb672095)
- Don't hang when `ui: true` in projects - by [@AriPerkkio](https://redirect.github.com/AriPerkkio) in [#10994](https://redirect.github.com/vitest-dev/vitest/issues/10994) [(9f710)](https://redirect.github.com/vitest-dev/vitest/commit/9f710d304)
- Preserve trace popover state - by [@liuluochen6-af](https://redirect.github.com/liuluochen6-af), **Hiroshi Ogawa**,
> ❗ **Important**
>
> ✂ PR body was truncated to here.
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.
👻 Immortal: This PR will be recreated if closed unmerged. Get config help if that's undesired.
- [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check this box
This PR was generated by Mend Renovate. View the repository job log.
<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiI0NC45My43IiwidXBkYXRlZEluVmVyIjoiNDQuOTMuNyIsInRhcmdldEJyYW5jaCI6Im1haW4iLCJsYWJlbHMiOlsiZGVwZW5kZW5jaWVzIl19-->
Comments Threads Pending Resolution
Resolved Comment Threads
No resolved comments have been left on this PR.