Update dependency @vitest/ui to v5.0.5 [SECURITY] #481

Open
robbertbos wants to merge 1 commit from renovate/npm-vitest-ui-vulnerability into main
Owner

This PR contains the following updates:

Package Change Age Confidence
@vitest/ui (source) 5.0.2 → 5.0.5 age confidence

Vitest: Servers misapply server.fs.deny, serving .env, private keys, .git, and the API token file

CVE-2026-112948 / GHSA-p458-7748-mcp3

More information

Details

Summary

In Vitest 5, Vite's server.fs.deny is not applied as intended on Vitest's dev servers. Depending on the server, files that Vite refuses to serve by default (such as .env, private keys and certificates, .npmrc, and .git) or Vitest's own API token file (.vitest-secret-token) can be read over plain HTTP by a client that can reach the server. In Browser Mode with test.projects, a malicious website can also read .env values through the developer's browser.

This only applies when Vitest runs an HTTP server, which happens with the UI (--ui), Browser Mode, or api enabled. Plain vitest and vitest run don't listen on any port and are not affected. The fix ships in vitest, and @vitest/ui and @vitest/browser are listed because they are what enables the affected setups. Both pin vitest to the same version as a peer dependency, so upgrading either one also requires the patched vitest. Users who enable api without @vitest/ui or @vitest/browser are also affected and should upgrade vitest.

Details

Vitest 5 adds its API token file to server.fs.deny, but neither server ended up with the intended list. That's because of two Vite behaviors. Vite applies its default deny list only when server.fs.deny is unset, and it compiles the list into a matcher during config resolution, so later changes to the array have no effect.

setup listening server Vite's default deny list .vitest-secret-token
plain vitest / vitest run none not reachable not reachable
--ui or api root denied served (fallback location only)
Browser Mode, single project root (also the browser server) denied served (fallback location only)
Browser Mode with test.projects each browser project's server served denied
  • Project servers set deny: ['.vitest-secret-token'] from a config() hook, which replaces Vite's defaults. A project server listens on a port in Browser Mode with test.projects, so in that setup a request like GET /.env?raw returns the file. A plain GET /.env is also served as text/javascript, so a malicious page can include it with <script src="http://localhost:<port>/.env">. A classic script include needs no CORS, and each dotenv line whose value is valid JavaScript (a quoted string, number, or boolean) runs as a global assignment the page can read. A syntax error anywhere in the file, such as a # comment, keeps the whole script from running. The same missing defaults also loosen Browser Mode's file-access checks for server.readFile/writeFile/removeFile, screenshots, and traces.
  • The root server adds the token entry after Vite has compiled the matcher, so the entry is never applied. The token file normally lives in the per-user data directory, which is outside server.fs.allow. When that directory can't be written, for example in a container whose user has no writable HOME, Vitest falls back to <workspaceRoot>/node_modules/.vitest/.vitest-secret-token, which the root server then serves. The token authenticates the UI, /__vitest_attachment__, and the API WebSocket, whose RPC can write and rerun test files when api.allowWrite/api.allowExec are enabled.
Impact

Information disclosure from the Vitest dev server, and with the token, privileged API access.

  • From a malicious website, in Browser Mode with test.projects: while the browser server runs, any page the developer visits can read .env values that are valid JavaScript, through a classic <script> include. This works when the file consists of KEY="value" lines. An unquoted value causes a runtime error that stops the script at that line, so only the lines before it leak. A syntax error anywhere in the file, such as a # comment line or an export prefix, prevents the script from running at all. Recent Chrome versions may ask for Local Network Access permission first. fetch and XHR reads from other websites are still blocked by Vite's default CORS policy, and Vite's Host check blocks DNS rebinding. That CORS policy does allow localhost origins, so a page served from another local dev server could read full files. The token file can't be read through a classic <script>, because a bare token isn't valid JavaScript.
  • With local access or developer-set network exposure (such as api.host or browser.api.host, port forwarding, or a published container port): full file contents are readable over plain HTTP, including the token file when it's in the fallback location.

Only the machine running Vitest is exposed, while it runs one of the setups above. Applications built or deployed from the project aren't affected.

The fix is in vitest <PATCHED>. Vitest 4 and earlier are unaffected. They don't persist an API token, and they don't override server.fs.deny.

Workaround

Set server.fs.deny explicitly in the root Vitest config, including Vite's default list for your Vite version and the token file. For Vite 8.3:

export default defineConfig({
  server: {
    fs: {
      deny: [
        '.env',
        '.env.*',
        '*.{crt,pem,key,p12,pfx,cer,der}',
        '.npmrc',
        '.yarnrc.yml',
        '**/.git/**',
        '.vitest-secret-token',
      ],
    },
  },
})

Severity

  • CVSS Score: 6.5 / 10 (Medium)
  • Vector String: CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:U/C:H/I:N/A:N

References

This data is provided by OSV and the GitHub Advisory Database (CC-BY 4.0).


Release Notes

vitest-dev/vitest (@​vitest/ui)

v5.0.5

Compare Source

   🐞 Bug Fixes
    View changes on GitHub

v5.0.4

Compare Source

   🚀 Features
   🐞 Bug Fixes
   🏎 Performance
    View changes on GitHub

v5.0.3

Compare Source

   🐞 Bug Fixes
    View changes on GitHub

Configuration

📅 Schedule: (in timezone Europe/Amsterdam)

  • 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 this update again.


  • If you want to rebase/retry this PR, check this box

This PR has been generated by Mend Renovate CLI.

This PR contains the following updates: | Package | Change | [Age](https://docs.renovatebot.com/merge-confidence/) | [Confidence](https://docs.renovatebot.com/merge-confidence/) | |---|---|---|---| | [@vitest/ui](https://vitest.dev/guide/ui) ([source](https://github.com/vitest-dev/vitest/tree/HEAD/packages/ui)) | [`5.0.2` → `5.0.5`](https://renovatebot.com/diffs/npm/@vitest%2fui/5.0.2/5.0.5) | ![age](https://developer.mend.io/api/mc/badges/age/npm/@vitest%2fui/5.0.5?slim=true) | ![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@vitest%2fui/5.0.2/5.0.5?slim=true) | --- ### Vitest: Servers misapply `server.fs.deny`, serving `.env`, private keys, `.git`, and the API token file [CVE-2026-112948](https://nvd.nist.gov/vuln/detail/CVE-2026-112948) / [GHSA-p458-7748-mcp3](https://github.com/advisories/GHSA-p458-7748-mcp3) <details> <summary>More information</summary> #### Details ##### Summary In Vitest 5, Vite's `server.fs.deny` is not applied as intended on Vitest's dev servers. Depending on the server, files that Vite refuses to serve by default (such as `.env`, private keys and certificates, `.npmrc`, and `.git`) or Vitest's own API token file (`.vitest-secret-token`) can be read over plain HTTP by a client that can reach the server. In Browser Mode with `test.projects`, a malicious website can also read `.env` values through the developer's browser. This only applies when Vitest runs an HTTP server, which happens with the UI (`--ui`), Browser Mode, or `api` enabled. Plain `vitest` and `vitest run` don't listen on any port and are not affected. The fix ships in `vitest`, and `@vitest/ui` and `@vitest/browser` are listed because they are what enables the affected setups. Both pin `vitest` to the same version as a peer dependency, so upgrading either one also requires the patched `vitest`. Users who enable `api` without `@vitest/ui` or `@vitest/browser` are also affected and should upgrade `vitest`. ##### Details Vitest 5 adds its API token file to `server.fs.deny`, but neither server ended up with the intended list. That's because of two Vite behaviors. Vite applies its default deny list only when `server.fs.deny` is unset, and it compiles the list into a matcher during config resolution, so later changes to the array have no effect. | setup | listening server | Vite's default deny list | `.vitest-secret-token` | | ---------------------------------- | ------------------------------- | ------------------------ | ----------------------------------- | | plain `vitest` / `vitest run` | none | not reachable | not reachable | | `--ui` or `api` | root | denied | **served** (fallback location only) | | Browser Mode, single project | root (also the browser server) | denied | **served** (fallback location only) | | Browser Mode with `test.projects` | each browser project's server | **served** | denied | - **Project servers** set `deny: ['.vitest-secret-token']` from a `config()` hook, which replaces Vite's defaults. A project server listens on a port in Browser Mode with `test.projects`, so in that setup a request like `GET /.env?raw` returns the file. A plain `GET /.env` is also served as `text/javascript`, so a malicious page can include it with `<script src="http://localhost:<port>/.env">`. A classic script include needs no CORS, and each dotenv line whose value is valid JavaScript (a quoted string, number, or boolean) runs as a global assignment the page can read. A syntax error anywhere in the file, such as a `#` comment, keeps the whole script from running. The same missing defaults also loosen Browser Mode's file-access checks for `server.readFile`/`writeFile`/`removeFile`, screenshots, and traces. - **The root server** adds the token entry after Vite has compiled the matcher, so the entry is never applied. The token file normally lives in the per-user data directory, which is outside `server.fs.allow`. When that directory can't be written, for example in a container whose user has no writable `HOME`, Vitest falls back to `<workspaceRoot>/node_modules/.vitest/.vitest-secret-token`, which the root server then serves. The token authenticates the UI, `/__vitest_attachment__`, and the API WebSocket, whose RPC can write and rerun test files when `api.allowWrite`/`api.allowExec` are enabled. ##### Impact Information disclosure from the Vitest dev server, and with the token, privileged API access. - **From a malicious website**, in Browser Mode with `test.projects`: while the browser server runs, any page the developer visits can read `.env` values that are valid JavaScript, through a classic `<script>` include. This works when the file consists of `KEY="value"` lines. An unquoted value causes a runtime error that stops the script at that line, so only the lines before it leak. A syntax error anywhere in the file, such as a `#` comment line or an `export` prefix, prevents the script from running at all. Recent Chrome versions may ask for Local Network Access permission first. `fetch` and XHR reads from other websites are still blocked by Vite's default CORS policy, and Vite's `Host` check blocks DNS rebinding. That CORS policy does allow localhost origins, so a page served from another local dev server could read full files. The token file can't be read through a classic `<script>`, because a bare token isn't valid JavaScript. - **With local access or developer-set network exposure** (such as `api.host` or `browser.api.host`, port forwarding, or a published container port): full file contents are readable over plain HTTP, including the token file when it's in the fallback location. Only the machine running Vitest is exposed, while it runs one of the setups above. Applications built or deployed from the project aren't affected. The fix is in `vitest` `<PATCHED>`. Vitest 4 and earlier are unaffected. They don't persist an API token, and they don't override `server.fs.deny`. ##### Workaround Set `server.fs.deny` explicitly in the root Vitest config, including Vite's default list for your Vite version and the token file. For Vite 8.3: ```ts export default defineConfig({ server: { fs: { deny: [ '.env', '.env.*', '*.{crt,pem,key,p12,pfx,cer,der}', '.npmrc', '.yarnrc.yml', '**/.git/**', '.vitest-secret-token', ], }, }, }) ``` #### Severity - CVSS Score: 6.5 / 10 (Medium) - Vector String: `CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:U/C:H/I:N/A:N` #### References - [https://github.com/vitest-dev/vitest/security/advisories/GHSA-p458-7748-mcp3](https://github.com/vitest-dev/vitest/security/advisories/GHSA-p458-7748-mcp3) - [https://nvd.nist.gov/vuln/detail/CVE-2026-112948](https://nvd.nist.gov/vuln/detail/CVE-2026-112948) - [https://github.com/vitest-dev/vitest/pull/11578](https://github.com/vitest-dev/vitest/pull/11578) - [https://github.com/vitest-dev/vitest/commit/28dc1edfb6ba5a181fe208576989063795aeadb3](https://github.com/vitest-dev/vitest/commit/28dc1edfb6ba5a181fe208576989063795aeadb3) - [https://github.com/vitest-dev/vitest](https://github.com/vitest-dev/vitest) - [https://github.com/vitest-dev/vitest/releases/tag/v5.0.5](https://github.com/vitest-dev/vitest/releases/tag/v5.0.5) This data is provided by [OSV](https://osv.dev/vulnerability/GHSA-p458-7748-mcp3) and the [GitHub Advisory Database](https://github.com/github/advisory-database) ([CC-BY 4.0](https://github.com/github/advisory-database/blob/main/LICENSE.md)). </details> --- ### Release Notes <details> <summary>vitest-dev/vitest (@&#8203;vitest/ui)</summary> ### [`v5.0.5`](https://github.com/vitest-dev/vitest/releases/tag/v5.0.5) [Compare Source](https://github.com/vitest-dev/vitest/compare/v5.0.4...v5.0.5) #####    🐞 Bug Fixes - Keep vite default `fs.deny` with api token file  -  by [@&#8203;hi-ogawa](https://github.com/hi-ogawa), **Hiroshi Ogawa** and **Claude Opus 5.5** in [#&#8203;11578](https://github.com/vitest-dev/vitest/issues/11578) [<samp>(28dc1)</samp>](https://github.com/vitest-dev/vitest/commit/28dc1edfb) - Handle quoted file names in `--changed`  -  by [@&#8203;sheremet-va](https://github.com/sheremet-va) in [#&#8203;11583](https://github.com/vitest-dev/vitest/issues/11583) [<samp>(14921)</samp>](https://github.com/vitest-dev/vitest/commit/14921e962) - Add `data` to the `import.meta.hot` stub  -  by [@&#8203;sheremet-va](https://github.com/sheremet-va) in [#&#8203;11590](https://github.com/vitest-dev/vitest/issues/11590) [<samp>(3a828)</samp>](https://github.com/vitest-dev/vitest/commit/3a8289ac3) - Set `skip` in `skipIf`, ignore `undefined` options  -  by [@&#8203;sheremet-va](https://github.com/sheremet-va) in [#&#8203;11591](https://github.com/vitest-dev/vitest/issues/11591) [<samp>(d523a)</samp>](https://github.com/vitest-dev/vitest/commit/d523a15f2) - Skip builtin loading in async leak detector  -  by [@&#8203;sheremet-va](https://github.com/sheremet-va) in [#&#8203;11598](https://github.com/vitest-dev/vitest/issues/11598) [<samp>(fe86a)</samp>](https://github.com/vitest-dev/vitest/commit/fe86a64c6) - Keep the import frame in native loader errors  -  by [@&#8203;sheremet-va](https://github.com/sheremet-va) in [#&#8203;11599](https://github.com/vitest-dev/vitest/issues/11599) [<samp>(9697b)</samp>](https://github.com/vitest-dev/vitest/commit/9697b3894) - Run hook cleanups when a later hook fails  -  by [@&#8203;sheremet-va](https://github.com/sheremet-va) in [#&#8203;11605](https://github.com/vitest-dev/vitest/issues/11605) [<samp>(6c5a4)</samp>](https://github.com/vitest-dev/vitest/commit/6c5a44720) - Release mocks of finished test files  -  by [@&#8203;sheremet-va](https://github.com/sheremet-va) in [#&#8203;11607](https://github.com/vitest-dev/vitest/issues/11607) [<samp>(e9c3d)</samp>](https://github.com/vitest-dev/vitest/commit/e9c3d72f0) - Abort all running tests on cancel  -  by [@&#8203;sheremet-va](https://github.com/sheremet-va) in [#&#8203;11606](https://github.com/vitest-dev/vitest/issues/11606) [<samp>(6621a)</samp>](https://github.com/vitest-dev/vitest/commit/6621a72d6) - **browser**: - Ignore synthetic pagehide events  -  by [@&#8203;sheremet-va](https://github.com/sheremet-va) in [#&#8203;11582](https://github.com/vitest-dev/vitest/issues/11582) [<samp>(ca081)</samp>](https://github.com/vitest-dev/vitest/commit/ca0813584) - Run plugin buildStart on server creation  -  by [@&#8203;sheremet-va](https://github.com/sheremet-va) in [#&#8203;11593](https://github.com/vitest-dev/vitest/issues/11593) [<samp>(ea611)</samp>](https://github.com/vitest-dev/vitest/commit/ea611e44c) - Drop late connections of closed sessions  -  by [@&#8203;sheremet-va](https://github.com/sheremet-va) in [#&#8203;11600](https://github.com/vitest-dev/vitest/issues/11600) [<samp>(f161e)</samp>](https://github.com/vitest-dev/vitest/commit/f161e6df2) - Wait 30s for the browser to close  -  by [@&#8203;sheremet-va](https://github.com/sheremet-va) in [#&#8203;11601](https://github.com/vitest-dev/vitest/issues/11601) [<samp>(6498b)</samp>](https://github.com/vitest-dev/vitest/commit/6498b666a) - Run global setup once with instances  -  by [@&#8203;sheremet-va](https://github.com/sheremet-va) in [#&#8203;11596](https://github.com/vitest-dev/vitest/issues/11596) [<samp>(8dd67)</samp>](https://github.com/vitest-dev/vitest/commit/8dd67c262) - **reporter**: - End reason `&#&#8203;39;failed&#&#8203;39;` on worker crash  -  by [@&#8203;AriPerkkio](https://github.com/AriPerkkio) in [#&#8203;11568](https://github.com/vitest-dev/vitest/issues/11568) [<samp>(6ae8e)</samp>](https://github.com/vitest-dev/vitest/commit/6ae8e89ff) #####     [View changes on GitHub](https://github.com/vitest-dev/vitest/compare/v5.0.4...v5.0.5) ### [`v5.0.4`](https://github.com/vitest-dev/vitest/releases/tag/v5.0.4) [Compare Source](https://github.com/vitest-dev/vitest/compare/v5.0.3...v5.0.4) #####    🚀 Features - **experimental**: - Tag cache directories with CACHEDIR.TAG  -  by [@&#8203;lifeiscontent](https://github.com/lifeiscontent) in [#&#8203;11461](https://github.com/vitest-dev/vitest/issues/11461) [<samp>(a8ea3)</samp>](https://github.com/vitest-dev/vitest/commit/a8ea3c8fd) - Support `test.ui.theme` option  -  by [@&#8203;sheremet-va](https://github.com/sheremet-va) in [#&#8203;11499](https://github.com/vitest-dev/vitest/issues/11499) [<samp>(1da66)</samp>](https://github.com/vitest-dev/vitest/commit/1da66405d) - Highlight selector multiple matches in trace view  -  by [@&#8203;hi-ogawa](https://github.com/hi-ogawa), **Hiroshi Ogawa** and **Claude Opus 5.5** in [#&#8203;11489](https://github.com/vitest-dev/vitest/issues/11489) [<samp>(5abba)</samp>](https://github.com/vitest-dev/vitest/commit/5abba1e1b) - Print how many tests were affected and a total when running `--changed`  -  by [@&#8203;sheremet-va](https://github.com/sheremet-va) in [#&#8203;11424](https://github.com/vitest-dev/vitest/issues/11424) [<samp>(a2336)</samp>](https://github.com/vitest-dev/vitest/commit/a23368585) - Add an option to cache dependencies instead of statically parsing them  -  by [@&#8203;sheremet-va](https://github.com/sheremet-va) in [#&#8203;11515](https://github.com/vitest-dev/vitest/issues/11515) [<samp>(c0601)</samp>](https://github.com/vitest-dev/vitest/commit/c06012ac8) - Add fit and zoom controls to trace viewer  -  by [@&#8203;hi-ogawa](https://github.com/hi-ogawa), **Hiroshi Ogawa** and **Claude Opus 5.5** in [#&#8203;11490](https://github.com/vitest-dev/vitest/issues/11490) [<samp>(f5dd9)</samp>](https://github.com/vitest-dev/vitest/commit/f5dd99ed0) #####    🐞 Bug Fixes - Fail the run on git and location filter errors  -  by [@&#8203;sheremet-va](https://github.com/sheremet-va) in [#&#8203;11430](https://github.com/vitest-dev/vitest/issues/11430) [<samp>(30d03)</samp>](https://github.com/vitest-dev/vitest/commit/30d0304d2) - Enable fsModuleCache by default  -  by [@&#8203;sheremet-va](https://github.com/sheremet-va) in [#&#8203;11435](https://github.com/vitest-dev/vitest/issues/11435) [<samp>(ad208)</samp>](https://github.com/vitest-dev/vitest/commit/ad208cc29) - Track project files and mocks with --changed  -  by [@&#8203;sheremet-va](https://github.com/sheremet-va) in [#&#8203;11432](https://github.com/vitest-dev/vitest/issues/11432) [<samp>(b0f2b)</samp>](https://github.com/vitest-dev/vitest/commit/b0f2b3bb9) - Refactor caching, fix `:` in project and change the shape of `results` cache  -  by [@&#8203;sheremet-va](https://github.com/sheremet-va) in [#&#8203;11453](https://github.com/vitest-dev/vitest/issues/11453) [<samp>(9673c)</samp>](https://github.com/vitest-dev/vitest/commit/9673c49a4) - Keep full `$` string values when `taskTitleValueFormatTruncate` is 0  -  by [@&#8203;hi-ogawa](https://github.com/hi-ogawa), **Hiroshi Ogawa** and **Claude Opus 5.5** in [#&#8203;11485](https://github.com/vitest-dev/vitest/issues/11485) [<samp>(4f7e1)</samp>](https://github.com/vitest-dev/vitest/commit/4f7e1799b) - Resolve node builtins in client environments  -  by [@&#8203;sheremet-va](https://github.com/sheremet-va) in [#&#8203;11417](https://github.com/vitest-dev/vitest/issues/11417) [<samp>(56b31)</samp>](https://github.com/vitest-dev/vitest/commit/56b319ac6) - Fix module graph builtin externals after [#&#8203;11421](https://github.com/vitest-dev/vitest/issues/11421)  -  by [@&#8203;hi-ogawa](https://github.com/hi-ogawa), **Hiroshi Ogawa** and **Claude Opus 5.5** in [#&#8203;11491](https://github.com/vitest-dev/vitest/issues/11491) and [#&#8203;11421](https://github.com/vitest-dev/vitest/issues/11421) [<samp>(008e1)</samp>](https://github.com/vitest-dev/vitest/commit/008e184cb) - Wrap module mocks during in-source testing  -  by [@&#8203;sheremet-va](https://github.com/sheremet-va) in [#&#8203;11505](https://github.com/vitest-dev/vitest/issues/11505) [<samp>(36d19)</samp>](https://github.com/vitest-dev/vitest/commit/36d19cb00) - Handle line endings in snapshot  -  by [@&#8203;sheremet-va](https://github.com/sheremet-va) in [#&#8203;11522](https://github.com/vitest-dev/vitest/issues/11522) [<samp>(4c468)</samp>](https://github.com/vitest-dev/vitest/commit/4c468aa40) - Respect root in projects  -  by [@&#8203;sheremet-va](https://github.com/sheremet-va) in [#&#8203;11521](https://github.com/vitest-dev/vitest/issues/11521) [<samp>(26642)</samp>](https://github.com/vitest-dev/vitest/commit/26642f793) - Resolve mocks in directories with spaces  -  by [@&#8203;sheremet-va](https://github.com/sheremet-va) in [#&#8203;11539](https://github.com/vitest-dev/vitest/issues/11539) [<samp>(caaef)</samp>](https://github.com/vitest-dev/vitest/commit/caaef9416) - **api**: - Publish the api token atomically  -  by [@&#8203;umairnawaz333](https://github.com/umairnawaz333) in [#&#8203;11323](https://github.com/vitest-dev/vitest/issues/11323) [<samp>(6f990)</samp>](https://github.com/vitest-dev/vitest/commit/6f990fef1) - **browser**: - Close the mock route interception race  -  by [@&#8203;cplieger](https://github.com/cplieger) and [@&#8203;sheremet-va](https://github.com/sheremet-va) in [#&#8203;8339](https://github.com/vitest-dev/vitest/issues/8339) and [#&#8203;11083](https://github.com/vitest-dev/vitest/issues/11083) [<samp>(d6620)</samp>](https://github.com/vitest-dev/vitest/commit/d6620fae6) - Allow toHaveTextContent without arguments  -  by [@&#8203;nomadical](https://github.com/nomadical) in [#&#8203;11425](https://github.com/vitest-dev/vitest/issues/11425) [<samp>(8ebcf)</samp>](https://github.com/vitest-dev/vitest/commit/8ebcf5f8a) - Apply API options without browser config  -  by [@&#8203;sheremet-va](https://github.com/sheremet-va) in [#&#8203;10852](https://github.com/vitest-dev/vitest/issues/10852) [<samp>(ad055)</samp>](https://github.com/vitest-dev/vitest/commit/ad055837b) - Preserve undefined command arguments  -  by [@&#8203;sheremet-va](https://github.com/sheremet-va) and [@&#8203;AriPerkkio](https://github.com/AriPerkkio) in [#&#8203;11497](https://github.com/vitest-dev/vitest/issues/11497) [<samp>(1576d)</samp>](https://github.com/vitest-dev/vitest/commit/1576d3d89) - Wait for setup mocks before importing a test file  -  by [@&#8203;kasperpeulen](https://github.com/kasperpeulen) in [#&#8203;11520](https://github.com/vitest-dev/vitest/issues/11520) [<samp>(b61d1)</samp>](https://github.com/vitest-dev/vitest/commit/b61d1ced3) - Avoid extra scroll outside the iframe  -  by [@&#8203;sheremet-va](https://github.com/sheremet-va) in [#&#8203;11523](https://github.com/vitest-dev/vitest/issues/11523) [<samp>(662e8)</samp>](https://github.com/vitest-dev/vitest/commit/662e8a363) - Run browser instances as workers  -  by [@&#8203;sheremet-va](https://github.com/sheremet-va) in [#&#8203;11525](https://github.com/vitest-dev/vitest/issues/11525) [<samp>(bf04b)</samp>](https://github.com/vitest-dev/vitest/commit/bf04b9ccc) - ⚠️ This can degrade performance if you have a custom `maxWorkers` setting. Previously, it was applied incorrectly and could lead to Vitest using too many resources. For example, a lower number would still open too many browsers. Fixing it means Vitest opens less instances by default now. - Open one cdp session per tester  -  by [@&#8203;sheremet-va](https://github.com/sheremet-va) in [#&#8203;11542](https://github.com/vitest-dev/vitest/issues/11542) [<samp>(69e63)</samp>](https://github.com/vitest-dev/vitest/commit/69e6369f6) - Clean up unmocked and pending mocks  -  by [@&#8203;sheremet-va](https://github.com/sheremet-va) in [#&#8203;11537](https://github.com/vitest-dev/vitest/issues/11537) [<samp>(5c955)</samp>](https://github.com/vitest-dev/vitest/commit/5c9552173) - **coverage**: - V8 browser memory leak between test files  -  by [@&#8203;AriPerkkio](https://github.com/AriPerkkio) in [#&#8203;11466](https://github.com/vitest-dev/vitest/issues/11466) [<samp>(2297d)</samp>](https://github.com/vitest-dev/vitest/commit/2297d93a8) - `allowExternal` fails to include uncovered files  -  by [@&#8203;AriPerkkio](https://github.com/AriPerkkio) in [#&#8203;11513](https://github.com/vitest-dev/vitest/issues/11513) [<samp>(4ef00)</samp>](https://github.com/vitest-dev/vitest/commit/4ef000a93) - Filenames containing brackets incorrectly showing as uncovered  -  by [@&#8203;AriPerkkio](https://github.com/AriPerkkio) in [#&#8203;11531](https://github.com/vitest-dev/vitest/issues/11531) [<samp>(0fa80)</samp>](https://github.com/vitest-dev/vitest/commit/0fa80f53c) - Istanbul coverage wrong when module transform warmups  -  by [@&#8203;AriPerkkio](https://github.com/AriPerkkio) in [#&#8203;11529](https://github.com/vitest-dev/vitest/issues/11529) [<samp>(9f61d)</samp>](https://github.com/vitest-dev/vitest/commit/9f61dcca2) - **deps**: - Update all non-major dependencies  -  by [@&#8203;sheremet-va](https://github.com/sheremet-va) in [#&#8203;11167](https://github.com/vitest-dev/vitest/issues/11167) [<samp>(c74e0)</samp>](https://github.com/vitest-dev/vitest/commit/c74e099a9) - **expect**: - Fix `Map` and `Set` deep equality in some assertions  -  by [@&#8203;hi-ogawa](https://github.com/hi-ogawa), **Hiroshi Ogawa** and **Claude Opus 5.5** in [#&#8203;11402](https://github.com/vitest-dev/vitest/issues/11402) [<samp>(b4e79)</samp>](https://github.com/vitest-dev/vitest/commit/b4e79fd7a) - Check value in chai-style returned  -  by [@&#8203;sheremet-va](https://github.com/sheremet-va) in [#&#8203;11500](https://github.com/vitest-dev/vitest/issues/11500) [<samp>(1aca0)</samp>](https://github.com/vitest-dev/vitest/commit/1aca02a21) - **mocker**: - Fix native loader mocking edge cases  -  by [@&#8203;sheremet-va](https://github.com/sheremet-va) in [#&#8203;11540](https://github.com/vitest-dev/vitest/issues/11540) [<samp>(cd423)</samp>](https://github.com/vitest-dev/vitest/commit/cd423ba04) - **pretty-format**: - Support boxed symbols  -  by [@&#8203;lehni](https://github.com/lehni) in [#&#8203;11445](https://github.com/vitest-dev/vitest/issues/11445) and [#&#8203;11446](https://github.com/vitest-dev/vitest/issues/11446) [<samp>(eba44)</samp>](https://github.com/vitest-dev/vitest/commit/eba44926e) - **reporters**: - Junit to strip ANSI sequences from all XML attributes  -  by [@&#8203;meganemura](https://github.com/meganemura) and **Claude Opus 5.5** in [#&#8203;11407](https://github.com/vitest-dev/vitest/issues/11407) [<samp>(e1a73)</samp>](https://github.com/vitest-dev/vitest/commit/e1a731470) - **runner**: - Don't cache failed fixture setups  -  by [@&#8203;hamed-bavar](https://github.com/hamed-bavar) in [#&#8203;11237](https://github.com/vitest-dev/vitest/issues/11237) and [#&#8203;11238](https://github.com/vitest-dev/vitest/issues/11238) [<samp>(4ee66)</samp>](https://github.com/vitest-dev/vitest/commit/4ee66c021) - **typecheck**: - Use typescript pool in toTestSpecification  -  by [@&#8203;sheremet-va](https://github.com/sheremet-va) in [#&#8203;11451](https://github.com/vitest-dev/vitest/issues/11451) [<samp>(5f273)</samp>](https://github.com/vitest-dev/vitest/commit/5f2739e74) - **ui**: - Remove duplicate browser-open call opening two tabs  -  by [@&#8203;feastyr69](https://github.com/feastyr69) in [#&#8203;11356](https://github.com/vitest-dev/vitest/issues/11356) and [#&#8203;11358](https://github.com/vitest-dev/vitest/issues/11358) [<samp>(d7e13)</samp>](https://github.com/vitest-dev/vitest/commit/d7e1315c1) - Simplify explorer filtering + fix nested tests when search matches a suite  -  by [@&#8203;hi-ogawa](https://github.com/hi-ogawa), **Hiroshi Ogawa**, **Codex** and **Claude Opus 5.5** in [#&#8203;11262](https://github.com/vitest-dev/vitest/issues/11262) [<samp>(a627b)</samp>](https://github.com/vitest-dev/vitest/commit/a627be498) - Store module graph once per environment  -  by [@&#8203;hi-ogawa](https://github.com/hi-ogawa), **Hiroshi Ogawa** and **Claude Opus 5.5** in [#&#8203;11421](https://github.com/vitest-dev/vitest/issues/11421) [<samp>(af903)</samp>](https://github.com/vitest-dev/vitest/commit/af903c65e) - Mount index.html handler on the ui base path  -  by [@&#8203;hi-ogawa](https://github.com/hi-ogawa), **Hiroshi Ogawa** and **Claude Opus 5.5** in [#&#8203;11517](https://github.com/vitest-dev/vitest/issues/11517) [<samp>(1bc24)</samp>](https://github.com/vitest-dev/vitest/commit/1bc2495c7) - Center split pane resize handle  -  by [@&#8203;hi-ogawa](https://github.com/hi-ogawa), **Hiroshi Ogawa** and **Claude Opus 5.5** in [#&#8203;11506](https://github.com/vitest-dev/vitest/issues/11506) [<samp>(e658b)</samp>](https://github.com/vitest-dev/vitest/commit/e658b9b6a) - **vm**: - Bind `this` to `module.exports`  -  by [@&#8203;sheremet-va](https://github.com/sheremet-va) in [#&#8203;11504](https://github.com/vitest-dev/vitest/issues/11504) [<samp>(b618a)</samp>](https://github.com/vitest-dev/vitest/commit/b618afd5c) #####    🏎 Performance - Reuse fsModuleCache when filtering by source  -  by [@&#8203;sheremet-va](https://github.com/sheremet-va) in [#&#8203;11428](https://github.com/vitest-dev/vitest/issues/11428) [<samp>(7ebd9)</samp>](https://github.com/vitest-dev/vitest/commit/7ebd95fdd) - **spy**: Reset only mocks that were called or reconfigured  -  by [@&#8203;johan-gorter](https://github.com/johan-gorter) and **Claude Opus 5.5** in [#&#8203;11197](https://github.com/vitest-dev/vitest/issues/11197) [<samp>(28ef9)</samp>](https://github.com/vitest-dev/vitest/commit/28ef93df2) #####     [View changes on GitHub](https://github.com/vitest-dev/vitest/compare/v5.0.3...v5.0.4) ### [`v5.0.3`](https://github.com/vitest-dev/vitest/releases/tag/v5.0.3) [Compare Source](https://github.com/vitest-dev/vitest/compare/v5.0.2...v5.0.3) #####    🐞 Bug Fixes - Isolate `result.status` between `repeats` runs  -  by [@&#8203;hi-ogawa](https://github.com/hi-ogawa), **Hiroshi Ogawa** and **Codex (GPT-6)** in [#&#8203;11218](https://github.com/vitest-dev/vitest/issues/11218) [<samp>(5dbeb)</samp>](https://github.com/vitest-dev/vitest/commit/5dbebe9e3) - Don't print an interceptor warning in browser mode  -  by [@&#8203;sheremet-va](https://github.com/sheremet-va) in [#&#8203;11377](https://github.com/vitest-dev/vitest/issues/11377) [<samp>(15cc0)</samp>](https://github.com/vitest-dev/vitest/commit/15cc006aa) - Don't retry when `test.fails` expectedly failed  -  by [@&#8203;hi-ogawa](https://github.com/hi-ogawa), **Hiroshi Ogawa** and **Codex (GPT-6)** in [#&#8203;11219](https://github.com/vitest-dev/vitest/issues/11219) [<samp>(b2458)</samp>](https://github.com/vitest-dev/vitest/commit/b24585f08) - Scope cache key generators to projects  -  by [@&#8203;ecoyoung](https://github.com/ecoyoung) in [#&#8203;11281](https://github.com/vitest-dev/vitest/issues/11281) and [#&#8203;11301](https://github.com/vitest-dev/vitest/issues/11301) [<samp>(92ba7)</samp>](https://github.com/vitest-dev/vitest/commit/92ba7fc1d) - **browser**: - Delay server `listen` until tests start running  -  by [@&#8203;sheremet-va](https://github.com/sheremet-va) in [#&#8203;11366](https://github.com/vitest-dev/vitest/issues/11366) [<samp>(7d8ed)</samp>](https://github.com/vitest-dev/vitest/commit/7d8ed3e9b) - Check mock path boundaries  -  by [@&#8203;saryn17](https://github.com/saryn17), **Ryosei Sato** and [@&#8203;sheremet-va](https://github.com/sheremet-va) in [#&#8203;11361](https://github.com/vitest-dev/vitest/issues/11361) and [#&#8203;11362](https://github.com/vitest-dev/vitest/issues/11362) [<samp>(1c388)</samp>](https://github.com/vitest-dev/vitest/commit/1c3888bce) - Keep config of browser-consumed environments  -  by [@&#8203;kasperpeulen](https://github.com/kasperpeulen) and **Claude** in [#&#8203;11378](https://github.com/vitest-dev/vitest/issues/11378) [<samp>(aafc0)</samp>](https://github.com/vitest-dev/vitest/commit/aafc0996f) - Ignore page crash while cancelling  -  by [@&#8203;sheremet-va](https://github.com/sheremet-va) in [#&#8203;11386](https://github.com/vitest-dev/vitest/issues/11386) [<samp>(7c367)</samp>](https://github.com/vitest-dev/vitest/commit/7c36748fa) - `toMatchScreenshot` uses wrong reference on retried tests  -  by [@&#8203;macarie](https://github.com/macarie) in [#&#8203;11393](https://github.com/vitest-dev/vitest/issues/11393) [<samp>(c22ab)</samp>](https://github.com/vitest-dev/vitest/commit/c22aba992) - **cache**: - Revalidate imports of cached modules  -  by [@&#8203;sheremet-va](https://github.com/sheremet-va) in [#&#8203;11381](https://github.com/vitest-dev/vitest/issues/11381) [<samp>(38f98)</samp>](https://github.com/vitest-dev/vitest/commit/38f98855f) - **deps**: - Pin `why-is-node-running` to `3.2.1` to avoid users running into `ERR_PNPM_TRUST_DOWNGRADE`  -  by [@&#8203;AriPerkkio](https://github.com/AriPerkkio) in [#&#8203;11403](https://github.com/vitest-dev/vitest/issues/11403) [<samp>(f6c9a)</samp>](https://github.com/vitest-dev/vitest/commit/f6c9a4977) - **expect**: - Pass current equality testers to `expect.extend` asymmetric matchers  -  by [@&#8203;hi-ogawa](https://github.com/hi-ogawa), **Hiroshi Ogawa** and **Claude** in [#&#8203;11401](https://github.com/vitest-dev/vitest/issues/11401) [<samp>(3e794)</samp>](https://github.com/vitest-dev/vitest/commit/3e794a96b) - **jsdom**: - Support Blob on jsdom 30.1  -  by [@&#8203;sheremet-va](https://github.com/sheremet-va) in [#&#8203;11379](https://github.com/vitest-dev/vitest/issues/11379) [<samp>(6c49b)</samp>](https://github.com/vitest-dev/vitest/commit/6c49b7197) - **pool**: - Preserve unique pool ids when `groupOrder` is set  -  by [@&#8203;mtorp](https://github.com/mtorp) in [#&#8203;11392](https://github.com/vitest-dev/vitest/issues/11392) [<samp>(50312)</samp>](https://github.com/vitest-dev/vitest/commit/50312ebb4) - **ui**: - Split-pane handle overlapping iframe  -  by [@&#8203;macarie](https://github.com/macarie) in [#&#8203;11221](https://github.com/vitest-dev/vitest/issues/11221) [<samp>(f91db)</samp>](https://github.com/vitest-dev/vitest/commit/f91db0dfd) - **vitest**: - Remove root temp dir on close  -  by [@&#8203;abhinav-phi](https://github.com/abhinav-phi) in [#&#8203;11248](https://github.com/vitest-dev/vitest/issues/11248) [<samp>(7c711)</samp>](https://github.com/vitest-dev/vitest/commit/7c7119cf7) - **vm**: - Do not optimize deps from index.html  -  by [@&#8203;ezefernandezyf](https://github.com/ezefernandezyf), **Hiroshi Ogawa** and **Codex (GPT-6)** in [#&#8203;11329](https://github.com/vitest-dev/vitest/issues/11329) and [#&#8203;11360](https://github.com/vitest-dev/vitest/issues/11360) [<samp>(caf28)</samp>](https://github.com/vitest-dev/vitest/commit/caf2887de) - Don't reuse scripts across vite environments  -  by [@&#8203;MO2k4](https://github.com/MO2k4), **Martin Oehlert** and **Claude** in [#&#8203;11395](https://github.com/vitest-dev/vitest/issues/11395) [<samp>(346d3)</samp>](https://github.com/vitest-dev/vitest/commit/346d3896b) #####     [View changes on GitHub](https://github.com/vitest-dev/vitest/compare/v5.0.2...v5.0.3) </details> --- ### Configuration 📅 **Schedule**: (in timezone Europe/Amsterdam) - 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 this update 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:eyJjcmVhdGVkSW5WZXIiOiI0NC4xMTUuMTAiLCJ1cGRhdGVkSW5WZXIiOiI0NC4xMTUuMTAiLCJ0YXJnZXRCcmFuY2giOiJtYWluIiwibGFiZWxzIjpbImRlcGVuZGVuY2llcyIsInNlY3VyaXR5Il19-->
Update dependency @vitest/ui to v5.0.5 [SECURITY]
Some checks failed
CI / pre-commit (pull_request) Successful in 2m12s
CI / frontend-test (pull_request) Successful in 4m1s
CI / release-scripts (pull_request) Successful in 16s
security-scan / Python SCA (pip-audit) (pull_request) Failing after 1m5s
security-scan / Python SAST (bandit) (pull_request) Successful in 47s
security-scan / JS SCA (npm audit) (pull_request) Failing after 34s
security-scan / Filesystem scan (trivy fs) (pull_request) Failing after 25s
security-scan / SBOM (trivy) (pull_request) Successful in 16s
test-build / build (backend) (pull_request) Failing after 2m32s
test-build / build (frontend) (pull_request) Successful in 2m19s
test-build / build (pull_request) Failing after 0s
CI / e2e (pull_request) Successful in 22m11s
CI / backend-test (pull_request) Successful in 25m0s
4dc8b1ba24
Some checks failed
CI / pre-commit (pull_request) Successful in 2m12s
Required
Details
CI / frontend-test (pull_request) Successful in 4m1s
Required
Details
CI / release-scripts (pull_request) Successful in 16s
Required
Details
security-scan / Python SCA (pip-audit) (pull_request) Failing after 1m5s
Required
Details
security-scan / Python SAST (bandit) (pull_request) Successful in 47s
Required
Details
security-scan / JS SCA (npm audit) (pull_request) Failing after 34s
Required
Details
security-scan / Filesystem scan (trivy fs) (pull_request) Failing after 25s
Required
Details
security-scan / SBOM (trivy) (pull_request) Successful in 16s
Required
Details
test-build / build (backend) (pull_request) Failing after 2m32s
Required
Details
test-build / build (frontend) (pull_request) Successful in 2m19s
Required
Details
test-build / build (pull_request) Failing after 0s
Required
Details
CI / e2e (pull_request) Successful in 22m11s
Required
Details
CI / backend-test (pull_request) Successful in 25m0s
Required
Details
Some required checks were not successful.
You are not authorized to merge this pull request.
View command line instructions

Checkout

From your project repository, check out a new branch and test the changes.
git fetch -u origin renovate/npm-vitest-ui-vulnerability:renovate/npm-vitest-ui-vulnerability
git switch renovate/npm-vitest-ui-vulnerability
Sign in to join this conversation.
No reviewers
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
robbertbos/waggle!481
No description provided.