fix(browser): fix invalid project token for artifacts assets by hi-ogawa · Pull Request #9321 · vitest-dev/vitest

@hi-ogawa

@hi-ogawa

@hi-ogawa hi-ogawa marked this pull request as ready for review

December 22, 2025 08:02

sheremet-va

@hi-ogawa hi-ogawa deleted the 12-22-fix_browser_fix_invalid_project_token_for_artifacts_assets branch

December 23, 2025 00:49

saschazepter pushed a commit to saschazepter/forgejo that referenced this pull request

Feb 3, 2026

736-c41-2c1-e464fc974 added a commit to Swiss-Armed-Forces/Loom that referenced this pull request

Feb 21, 2026
This MR contains the following updates:

| Package | Type | Update | Change | OpenSSF |
|---|---|---|---|---|
| [vitest](https://vitest.dev) ([source](https://github.com/vitest-dev/vitest/tree/HEAD/packages/vitest)) | devDependencies | major | [`^3.2.4` → `^4.0.0`](https://renovatebot.com/diffs/npm/vitest/3.2.4/4.0.18) | [![OpenSSF Scorecard](https://api.securityscorecards.dev/projects/github.com/vitest-dev/vitest/badge)](https://securityscorecards.dev/viewer/?uri=github.com/vitest-dev/vitest) |

---

### Release Notes

<details>
<summary>vitest-dev/vitest (vitest)</summary>

### [`v4.0.18`](https://github.com/vitest-dev/vitest/releases/tag/v4.0.18)

[Compare Source](https://github.com/vitest-dev/vitest/compare/v4.0.17...v4.0.18)

#####    🚀 Experimental Features

- **experimental**: Add `onModuleRunner` hook to `worker.init`  -  by [@&#8203;sheremet-va](https://github.com/sheremet-va) in [#&#8203;9286](https://github.com/vitest-dev/vitest/issues/9286) [<samp>(ea837)</samp>](https://github.com/vitest-dev/vitest/commit/ea837de7d)

#####    🐞 Bug Fixes

- Use `meta.url` in `createRequire`  -  by [@&#8203;sheremet-va](https://github.com/sheremet-va) in [#&#8203;9441](https://github.com/vitest-dev/vitest/issues/9441) [<samp>(e0572)</samp>](https://github.com/vitest-dev/vitest/commit/e057281ca)
- **browser**: Hide injected data-testid attributes  -  by [@&#8203;sheremet-va](https://github.com/sheremet-va) in [#&#8203;9503](https://github.com/vitest-dev/vitest/issues/9503) [<samp>(f8989)</samp>](https://github.com/vitest-dev/vitest/commit/f89899cd8)
- **ui**: Process artifact attachments when generating HTML reporter  -  by [@&#8203;macarie](https://github.com/macarie) in [#&#8203;9472](https://github.com/vitest-dev/vitest/issues/9472) [<samp>(22543)</samp>](https://github.com/vitest-dev/vitest/commit/225435647)

#####     [View changes on GitHub](https://github.com/vitest-dev/vitest/compare/v4.0.17...v4.0.18)

### [`v4.0.17`](https://github.com/vitest-dev/vitest/releases/tag/v4.0.17)

[Compare Source](https://github.com/vitest-dev/vitest/compare/v4.0.16...v4.0.17)

#####    🚀 Experimental Features

- Support openTelemetry for browser mode  -  by [@&#8203;hi-ogawa](https://github.com/hi-ogawa) in [#&#8203;9180](https://github.com/vitest-dev/vitest/issues/9180) [<samp>(1ec3a)</samp>](https://github.com/vitest-dev/vitest/commit/1ec3a8b68)
- Support TRACEPARENT and TRACESTATE environment variables for OpenTelemetry context propagation  -  by [@&#8203;Copilot](https://github.com/Copilot), **hi-ogawa** and [@&#8203;hi-ogawa](https://github.com/hi-ogawa) in [#&#8203;9295](https://github.com/vitest-dev/vitest/issues/9295) [<samp>(876cb)</samp>](https://github.com/vitest-dev/vitest/commit/876cb84c2)

#####    🐞 Bug Fixes

- Improve asymmetric matcher diff readability by unwrapping container matchers  -  by [@&#8203;Copilot](https://github.com/Copilot), **sheremet-va**, **hi-ogawa** and [@&#8203;hi-ogawa](https://github.com/hi-ogawa) in [#&#8203;9330](https://github.com/vitest-dev/vitest/issues/9330) [<samp>(b2ec7)</samp>](https://github.com/vitest-dev/vitest/commit/b2ec724a8)
- Improve runner error when importing outside of test context  -  by [@&#8203;sheremet-va](https://github.com/sheremet-va) in [#&#8203;9335](https://github.com/vitest-dev/vitest/issues/9335) [<samp>(2dd3d)</samp>](https://github.com/vitest-dev/vitest/commit/2dd3dd839)
- Replace crypto.randomUUID to allow insecure environments (fix [#&#8203;9](https://github.com/vitest-dev/vitest/issues/9)…  -  by [@&#8203;plusgut](https://github.com/plusgut) in [#&#8203;9339](https://github.com/vitest-dev/vitest/issues/9339) and [#&#8203;9](https://github.com/vitest-dev/vitest/issues/9) [<samp>(e6a3f)</samp>](https://github.com/vitest-dev/vitest/commit/e6a3f8cc7)
- Handle null options in `addEventHandler` [#&#8203;9371](https://github.com/vitest-dev/vitest/issues/9371)  -  by [@&#8203;ThibautMarechal](https://github.com/ThibautMarechal) in [#&#8203;9372](https://github.com/vitest-dev/vitest/issues/9372) and [#&#8203;9371](https://github.com/vitest-dev/vitest/issues/9371) [<samp>(40841)</samp>](https://github.com/vitest-dev/vitest/commit/40841ff00)
- Typo in browser.provider error  -  by [@&#8203;deammer](https://github.com/deammer) in [#&#8203;9394](https://github.com/vitest-dev/vitest/issues/9394) [<samp>(4b67f)</samp>](https://github.com/vitest-dev/vitest/commit/4b67fc25a)
- **browser**:
  - Fix `process.env` and `import.meta.env` defines in inline project  -  by [@&#8203;hi-ogawa](https://github.com/hi-ogawa) in [#&#8203;9239](https://github.com/vitest-dev/vitest/issues/9239) [<samp>(b70c9)</samp>](https://github.com/vitest-dev/vitest/commit/b70c96121)
  - Fix upload File instance  -  by [@&#8203;hi-ogawa](https://github.com/hi-ogawa) in [#&#8203;9294](https://github.com/vitest-dev/vitest/issues/9294) [<samp>(b6778)</samp>](https://github.com/vitest-dev/vitest/commit/b67788c69)
  - Fix invalid project token for artifacts assets  -  by [@&#8203;hi-ogawa](https://github.com/hi-ogawa) in [#&#8203;9321](https://github.com/vitest-dev/vitest/issues/9321) [<samp>(caa7d)</samp>](https://github.com/vitest-dev/vitest/commit/caa7d73d4)
  - Log `ErrorEvent.message` when unhandled `ErrorEvent.error` is null  -  by [@&#8203;hi-ogawa](https://github.com/hi-ogawa) in [#&#8203;9322](https://github.com/vitest-dev/vitest/issues/9322) [<samp>(5d84e)</samp>](https://github.com/vitest-dev/vitest/commit/5d84eeb91)
  - Support `fileParallelism` on an instance  -  by [@&#8203;sheremet-va](https://github.com/sheremet-va) in [#&#8203;9328](https://github.com/vitest-dev/vitest/issues/9328) [<samp>(15006)</samp>](https://github.com/vitest-dev/vitest/commit/150065459)
- **coverage**:
  - Remove unnecessary `istanbul-lib-source-maps` usage  -  by [@&#8203;AriPerkkio](https://github.com/AriPerkkio) in [#&#8203;9344](https://github.com/vitest-dev/vitest/issues/9344) [<samp>(b0940)</samp>](https://github.com/vitest-dev/vitest/commit/b09405375)
  - Apply patch from [istanbuljs/istanbuljs#837](https://github.com/istanbuljs/istanbuljs/issues/837)  -  by [@&#8203;AriPerkkio](https://github.com/AriPerkkio) and **sapphi-red** in [#&#8203;9413](https://github.com/vitest-dev/vitest/issues/9413) and [#&#8203;837](https://github.com/vitest-dev/vitest/issues/837) [<samp>(e05ce)</samp>](https://github.com/vitest-dev/vitest/commit/e05cedbf4)
- **fsModuleCache**:
  - Don't store importers in cache  -  by [@&#8203;sheremet-va](https://github.com/sheremet-va) in [#&#8203;9422](https://github.com/vitest-dev/vitest/issues/9422) [<samp>(75136)</samp>](https://github.com/vitest-dev/vitest/commit/751364eec)
  - Add importers alongside importedModules  -  by [@&#8203;sheremet-va](https://github.com/sheremet-va) in [#&#8203;9423](https://github.com/vitest-dev/vitest/issues/9423) [<samp>(59f92)</samp>](https://github.com/vitest-dev/vitest/commit/59f92d403)
- **mocker**:
  - Fix mock transform with class  -  by [@&#8203;hi-ogawa](https://github.com/hi-ogawa) in [#&#8203;9421](https://github.com/vitest-dev/vitest/issues/9421) [<samp>(d390e)</samp>](https://github.com/vitest-dev/vitest/commit/d390eb527)
- **pool**:
  - Validate environment options when reusing the worker  -  by [@&#8203;sheremet-va](https://github.com/sheremet-va) in [#&#8203;9349](https://github.com/vitest-dev/vitest/issues/9349) [<samp>(a8a88)</samp>](https://github.com/vitest-dev/vitest/commit/a8a8836e3)
  - Handle worker start failures gracefully  -  by [@&#8203;AriPerkkio](https://github.com/AriPerkkio) in [#&#8203;9337](https://github.com/vitest-dev/vitest/issues/9337) [<samp>(200da)</samp>](https://github.com/vitest-dev/vitest/commit/200dadb32)
- **reporter**:
  - Report test module if it failed to run  -  by [@&#8203;sheremet-va](https://github.com/sheremet-va) in [#&#8203;9272](https://github.com/vitest-dev/vitest/issues/9272) [<samp>(c7888)</samp>](https://github.com/vitest-dev/vitest/commit/c78882985)
- **runner**:
  - Respect nested test.only within describe.only  -  by [@&#8203;Ujjwaljain16](https://github.com/Ujjwaljain16) in [#&#8203;9021](https://github.com/vitest-dev/vitest/issues/9021) and [#&#8203;9213](https://github.com/vitest-dev/vitest/issues/9213) [<samp>(55d5d)</samp>](https://github.com/vitest-dev/vitest/commit/55d5dad69)
- **typecheck**:
  - Improve error message when tsc outputs help text  -  by [@&#8203;Ujjwaljain16](https://github.com/Ujjwaljain16) in [#&#8203;9214](https://github.com/vitest-dev/vitest/issues/9214) [<samp>(7b10a)</samp>](https://github.com/vitest-dev/vitest/commit/7b10ab4cd)
- **ui**:
  - Detect gzip by magic numbers instead of Content-Type header in html reporter  -  by [@&#8203;Copilot](https://github.com/Copilot), **hi-ogawa** and [@&#8203;hi-ogawa](https://github.com/hi-ogawa) in [#&#8203;9278](https://github.com/vitest-dev/vitest/issues/9278) [<samp>(dd033)</samp>](https://github.com/vitest-dev/vitest/commit/dd0331632)
- **webdriverio**:
  - Fall back to WebDriver Classic [#&#8203;9244](https://github.com/vitest-dev/vitest/issues/9244)  -  by [@&#8203;JustasMonkev](https://github.com/JustasMonkev) in [#&#8203;9373](https://github.com/vitest-dev/vitest/issues/9373) and [#&#8203;9244](https://github.com/vitest-dev/vitest/issues/9244) [<samp>(c23dd)</samp>](https://github.com/vitest-dev/vitest/commit/c23dd11bd)

#####     [View changes on GitHub](https://github.com/vitest-dev/vitest/compare/v4.0.16...v4.0.17)

### [`v4.0.16`](https://github.com/vitest-dev/vitest/releases/tag/v4.0.16)

[Compare Source](https://github.com/vitest-dev/vitest/compare/v4.0.15...v4.0.16)

#####    🐞 Bug Fixes

- Fix browser mode default testTimeout back to 15 seconds  -  by [@&#8203;hi-ogawa](https://github.com/hi-ogawa) in [#&#8203;9167](https://github.com/vitest-dev/vitest/issues/9167) [<samp>(da0ad)</samp>](https://github.com/vitest-dev/vitest/commit/da0ade249)
- Avoid crashing on `process.versions` stub  -  by [@&#8203;AriPerkkio](https://github.com/AriPerkkio) in [#&#8203;9174](https://github.com/vitest-dev/vitest/issues/9174) [<samp>(78cfb)</samp>](https://github.com/vitest-dev/vitest/commit/78cfbf99a)
- Reject calling suite function inside test  -  by [@&#8203;hi-ogawa](https://github.com/hi-ogawa) in [#&#8203;9198](https://github.com/vitest-dev/vitest/issues/9198) [<samp>(1a259)</samp>](https://github.com/vitest-dev/vitest/commit/1a259c340)
- Allow inlining fully dynamic import  -  by [@&#8203;hi-ogawa](https://github.com/hi-ogawa) in [#&#8203;9137](https://github.com/vitest-dev/vitest/issues/9137) [<samp>(56851)</samp>](https://github.com/vitest-dev/vitest/commit/568513ca6)
- Fix module graph UI on html reporter with headless browser mode  -  by [@&#8203;hi-ogawa](https://github.com/hi-ogawa) in [#&#8203;9219](https://github.com/vitest-dev/vitest/issues/9219) [<samp>(60642)</samp>](https://github.com/vitest-dev/vitest/commit/60642b304)
- Log deprecated `test.poolOptions` if it's set  -  by [@&#8203;sheremet-va](https://github.com/sheremet-va) in [#&#8203;9226](https://github.com/vitest-dev/vitest/issues/9226) [<samp>(f7f6a)</samp>](https://github.com/vitest-dev/vitest/commit/f7f6aa8ba)
- **browser**:
  - Import `recordArtifact` from the vitest package  -  by [@&#8203;macarie](https://github.com/macarie) in [#&#8203;9186](https://github.com/vitest-dev/vitest/issues/9186) [<samp>(01c56)</samp>](https://github.com/vitest-dev/vitest/commit/01c56454d)
  - Fix `import.meta.env` define  -  by [@&#8203;hi-ogawa](https://github.com/hi-ogawa) in [#&#8203;9205](https://github.com/vitest-dev/vitest/issues/9205) [<samp>(01a9a)</samp>](https://github.com/vitest-dev/vitest/commit/01a9a58d9)
  - String formatting bug when including placeholders in console.log  -  by [@&#8203;michael-debs](https://github.com/michael-debs) and [@&#8203;hi-ogawa](https://github.com/hi-ogawa) in [#&#8203;9030](https://github.com/vitest-dev/vitest/issues/9030) and [#&#8203;9131](https://github.com/vitest-dev/vitest/issues/9131) [<samp>(84a30)</samp>](https://github.com/vitest-dev/vitest/commit/84a306210)
- **coverage**:
  - Istanbul untested files source maps are off  -  by [@&#8203;AriPerkkio](https://github.com/AriPerkkio) in [#&#8203;9208](https://github.com/vitest-dev/vitest/issues/9208) [<samp>(372e8)</samp>](https://github.com/vitest-dev/vitest/commit/372e86fde)
- **experimental**:
  - Export `setupEnvironment` for custom pools  -  by [@&#8203;AriPerkkio](https://github.com/AriPerkkio) in [#&#8203;9187](https://github.com/vitest-dev/vitest/issues/9187) [<samp>(5d26b)</samp>](https://github.com/vitest-dev/vitest/commit/5d26b87b0)

#####     [View changes on GitHub](https://github.com/vitest-dev/vitest/compare/v4.0.15...v4.0.16)

### [`v4.0.15`](https://github.com/vitest-dev/vitest/releases/tag/v4.0.15)

[Compare Source](https://github.com/vitest-dev/vitest/compare/v4.0.14...v4.0.15)

#####    🚀 Experimental Features

- **cache**: Add opt-out on a plugin level, fix internal root cache  -  by [@&#8203;sheremet-va](https://github.com/sheremet-va) in [#&#8203;9154](https://github.com/vitest-dev/vitest/issues/9154) [<samp>(a68f7)</samp>](https://github.com/vitest-dev/vitest/commit/a68f74e5e)
- **reporters**: Print import duration breakdown  -  by [@&#8203;sheremet-va](https://github.com/sheremet-va) in [#&#8203;9105](https://github.com/vitest-dev/vitest/issues/9105) [<samp>(122ff)</samp>](https://github.com/vitest-dev/vitest/commit/122ff321c)

#####    🐞 Bug Fixes

- Keep built-in id as is in bun and deno  -  by [@&#8203;sheremet-va](https://github.com/sheremet-va) in [#&#8203;9117](https://github.com/vitest-dev/vitest/issues/9117) [<samp>(075ab)</samp>](https://github.com/vitest-dev/vitest/commit/075ab3520)
- Use `optimizeDeps.rolldownOptions` to fix depreated warning + fix `ssr.external: true`  -  by [@&#8203;hi-ogawa](https://github.com/hi-ogawa) in [#&#8203;9121](https://github.com/vitest-dev/vitest/issues/9121) [<samp>(fd8bd)</samp>](https://github.com/vitest-dev/vitest/commit/fd8bd6dee)
- Fix external behavior with `deps.optimizer`  -  by [@&#8203;hi-ogawa](https://github.com/hi-ogawa) in [#&#8203;9125](https://github.com/vitest-dev/vitest/issues/9125) [<samp>(4c754)</samp>](https://github.com/vitest-dev/vitest/commit/4c75492cc)
- Very minor typo in "Chrome DevTools Protocol"  -  by [@&#8203;HowToTestFrontend](https://github.com/HowToTestFrontend) in [#&#8203;9146](https://github.com/vitest-dev/vitest/issues/9146) [<samp>(20997)</samp>](https://github.com/vitest-dev/vitest/commit/209976419)
- **browser**: Run `toMatchScreenshot` only once when used with `expect.element`  -  by [@&#8203;macarie](https://github.com/macarie) in [#&#8203;9132](https://github.com/vitest-dev/vitest/issues/9132) [<samp>(0d2e7)</samp>](https://github.com/vitest-dev/vitest/commit/0d2e7e3e2)
- **coverage**: Istanbul provider to not break source maps  -  by [@&#8203;AriPerkkio](https://github.com/AriPerkkio) in [#&#8203;9040](https://github.com/vitest-dev/vitest/issues/9040) [<samp>(e4ca9)</samp>](https://github.com/vitest-dev/vitest/commit/e4ca917f1)
- **deps**: Update dependency tinyexec to v1  -  in [#&#8203;9122](https://github.com/vitest-dev/vitest/issues/9122) [<samp>(fd786)</samp>](https://github.com/vitest-dev/vitest/commit/fd7860222)
- **docs**: Remove `--browser.provider` from docs  -  by [@&#8203;sheremet-va](https://github.com/sheremet-va) in [#&#8203;9115](https://github.com/vitest-dev/vitest/issues/9115) [<samp>(120b3)</samp>](https://github.com/vitest-dev/vitest/commit/120b3dac1)
- **expect**: Preserve `currentTestName` in extended matchers  -  by [@&#8203;macarie](https://github.com/macarie) in [#&#8203;9106](https://github.com/vitest-dev/vitest/issues/9106) [<samp>(e4345)</samp>](https://github.com/vitest-dev/vitest/commit/e43458e02)
- **pool**: Terminate workers on `CTRL+c` forceful exits  -  by [@&#8203;AriPerkkio](https://github.com/AriPerkkio) in [#&#8203;9140](https://github.com/vitest-dev/vitest/issues/9140) [<samp>(d57d8)</samp>](https://github.com/vitest-dev/vitest/commit/d57d8bf0a)
- **reporters**: Show project in github reporter  -  by [@&#8203;sheremet-va](https://github.com/sheremet-va) in [#&#8203;9138](https://github.com/vitest-dev/vitest/issues/9138) [<samp>(bb65e)</samp>](https://github.com/vitest-dev/vitest/commit/bb65e15c7)
- **spy**: Do not mock overriden method, if parent was automocked  -  by [@&#8203;sheremet-va](https://github.com/sheremet-va) in [#&#8203;9116](https://github.com/vitest-dev/vitest/issues/9116) [<samp>(1a246)</samp>](https://github.com/vitest-dev/vitest/commit/1a24607b4)
- **web-worker**: MessagePort objects passed to Worker.postMessage work when clone === "native"  -  by [@&#8203;whitphx](https://github.com/whitphx) in [#&#8203;9118](https://github.com/vitest-dev/vitest/issues/9118) [<samp>(deee8)</samp>](https://github.com/vitest-dev/vitest/commit/deee83e54)

#####     [View changes on GitHub](https://github.com/vitest-dev/vitest/compare/v4.0.14...v4.0.15)

### [`v4.0.14`](https://github.com/vitest-dev/vitest/releases/tag/v4.0.14)

[Compare Source](https://github.com/vitest-dev/vitest/compare/v4.0.13...v4.0.14)

#####    🚀 Experimental Features

- **browser**: Expose `utils.configurePrettyDOM`  -  by [@&#8203;sheremet-va](https://github.com/sheremet-va) in [#&#8203;9103](https://github.com/vitest-dev/vitest/issues/9103) [<samp>(2cc34)</samp>](https://github.com/vitest-dev/vitest/commit/2cc34e0d4)
- **runner**: Add full names to tasks  -  by [@&#8203;macarie](https://github.com/macarie) in [#&#8203;9087](https://github.com/vitest-dev/vitest/issues/9087) [<samp>(821aa)</samp>](https://github.com/vitest-dev/vitest/commit/821aa2002)
- **ui**: Add tabbed failure view for `toMatchScreenshot` with comparison slider  -  by [@&#8203;macarie](https://github.com/macarie) in [#&#8203;8813](https://github.com/vitest-dev/vitest/issues/8813) [<samp>(c37c2)</samp>](https://github.com/vitest-dev/vitest/commit/c37c2eb0b)

#####    🐞 Bug Fixes

- Externalize before caching  -  by [@&#8203;sheremet-va](https://github.com/sheremet-va) in [#&#8203;9077](https://github.com/vitest-dev/vitest/issues/9077) [<samp>(e1b2e)</samp>](https://github.com/vitest-dev/vitest/commit/e1b2e086a)
- Collect the duration of external imports  -  by [@&#8203;sheremet-va](https://github.com/sheremet-va) in [#&#8203;9097](https://github.com/vitest-dev/vitest/issues/9097) [<samp>(3326c)</samp>](https://github.com/vitest-dev/vitest/commit/3326cc9f4)
- Rename `collect` to `import`, remove `prepare`  -  by [@&#8203;sheremet-va](https://github.com/sheremet-va) in [#&#8203;9091](https://github.com/vitest-dev/vitest/issues/9091) [<samp>(1256b)</samp>](https://github.com/vitest-dev/vitest/commit/1256b5ca3)
- **browser**:
  - Unsubscribe `onCancel` on rpc destroy  -  by [@&#8203;AriPerkkio](https://github.com/AriPerkkio) in [#&#8203;9088](https://github.com/vitest-dev/vitest/issues/9088) [<samp>(f5b72)</samp>](https://github.com/vitest-dev/vitest/commit/f5b72374b)
  - Revert the viewport scaling in non-ui mode [#&#8203;9018](https://github.com/vitest-dev/vitest/issues/9018)  -  by [@&#8203;sheremet-va](https://github.com/sheremet-va) in [#&#8203;9072](https://github.com/vitest-dev/vitest/issues/9072) and [#&#8203;9018](https://github.com/vitest-dev/vitest/issues/9018) [<samp>(64502)</samp>](https://github.com/vitest-dev/vitest/commit/64502a2c4)
- **coverage**:
  - Invalidate circular modules correctly on rerun with coverage  -  by [@&#8203;aicest](https://github.com/aicest) in [#&#8203;9096](https://github.com/vitest-dev/vitest/issues/9096) [<samp>(6f22c)</samp>](https://github.com/vitest-dev/vitest/commit/6f22c675f)
- **expect**:
  - Allow function as standard schema  -  by [@&#8203;hi-ogawa](https://github.com/hi-ogawa) in [#&#8203;9099](https://github.com/vitest-dev/vitest/issues/9099) [<samp>(ed8a2)</samp>](https://github.com/vitest-dev/vitest/commit/ed8a2ebbd)
- **jsdom**:
  - Reuse abort signals if possible  -  by [@&#8203;sheremet-va](https://github.com/sheremet-va) in [#&#8203;9090](https://github.com/vitest-dev/vitest/issues/9090) [<samp>(2c468)</samp>](https://github.com/vitest-dev/vitest/commit/2c468ee95)
- **pool**:
  - Init `VITEST_POOL_ID` + `VITEST_WORKER_ID` before environment setup  -  by [@&#8203;AriPerkkio](https://github.com/AriPerkkio) in [#&#8203;9085](https://github.com/vitest-dev/vitest/issues/9085) [<samp>(37918)</samp>](https://github.com/vitest-dev/vitest/commit/379185b40)
- **web-worker**:
  - `postMessage` to send ports to workers  -  by [@&#8203;whitphx](https://github.com/whitphx) and [@&#8203;AriPerkkio](https://github.com/AriPerkkio) in [#&#8203;9078](https://github.com/vitest-dev/vitest/issues/9078) [<samp>(9d176)</samp>](https://github.com/vitest-dev/vitest/commit/9d1763d11)

#####    🏎 Performance

- Replace `debug` with `obug`  -  by [@&#8203;sxzz](https://github.com/sxzz) and [@&#8203;AriPerkkio](https://github.com/AriPerkkio) in [#&#8203;9057](https://github.com/vitest-dev/vitest/issues/9057) [<samp>(acc51)</samp>](https://github.com/vitest-dev/vitest/commit/acc5152b9)

#####     [View changes on GitHub](https://github.com/vitest-dev/vitest/compare/v4.0.13...v4.0.14)

### [`v4.0.13`](https://github.com/vitest-dev/vitest/releases/tag/v4.0.13)

[Compare Source](https://github.com/vitest-dev/vitest/compare/v4.0.12...v4.0.13)

#####    🐞 Bug Fixes

- **types**:
  - Don't use type from Vite 7.1  -  by [@&#8203;sheremet-va](https://github.com/sheremet-va) in [#&#8203;9071](https://github.com/vitest-dev/vitest/issues/9071) [<samp>(6356b)</samp>](https://github.com/vitest-dev/vitest/commit/6356b1d38)
  - Don't import node.js dependent types in vitest/browser  -  by [@&#8203;sheremet-va](https://github.com/sheremet-va) in [#&#8203;9068](https://github.com/vitest-dev/vitest/issues/9068) [<samp>(332af)</samp>](https://github.com/vitest-dev/vitest/commit/332afa0de)

#####    🏎 Performance

- Avoid fetchModule roundtrip if the module is cached  -  by [@&#8203;sheremet-va](https://github.com/sheremet-va) in [#&#8203;9075](https://github.com/vitest-dev/vitest/issues/9075) [<samp>(b27e0)</samp>](https://github.com/vitest-dev/vitest/commit/b27e002e5)
- **experimental**: If `fsCacheModule` is enabled, read from the memory when possible  -  by [@&#8203;sheremet-va](https://github.com/sheremet-va) in [#&#8203;9076](https://github.com/vitest-dev/vitest/issues/9076) [<samp>(6b9a1)</samp>](https://github.com/vitest-dev/vitest/commit/6b9a1b5b1)

#####     [View changes on GitHub](https://github.com/vitest-dev/vitest/compare/v4.0.12...v4.0.13)

### [`v4.0.12`](https://github.com/vitest-dev/vitest/releases/tag/v4.0.12)

[Compare Source](https://github.com/vitest-dev/vitest/compare/v4.0.11...v4.0.12)

#####    🐞 Bug Fixes

- Inherit `fsModuleCachePath` by default  -  by [@&#8203;sheremet-va](https://github.com/sheremet-va) in [#&#8203;9063](https://github.com/vitest-dev/vitest/issues/9063) [<samp>(9a8bc)</samp>](https://github.com/vitest-dev/vitest/commit/9a8bc78c5)
- Don't import from `@opentelemetry/api` in public types  -  by [@&#8203;sheremet-va](https://github.com/sheremet-va) in [#&#8203;9066](https://github.com/vitest-dev/vitest/issues/9066) [<samp>(e944a)</samp>](https://github.com/vitest-dev/vitest/commit/e944a37b7)

#####     [View changes on GitHub](https://github.com/vitest-dev/vitest/compare/v4.0.11...v4.0.12)

### [`v4.0.11`](https://github.com/vitest-dev/vitest/releases/tag/v4.0.11)

[Compare Source](https://github.com/vitest-dev/vitest/compare/v4.0.10...v4.0.11)

#####    🚀 Experimental Features

- **api**: Add extensible test artifact API  -  by [@&#8203;macarie](https://github.com/macarie) in [#&#8203;8987](https://github.com/vitest-dev/vitest/issues/8987) [<samp>(77292)</samp>](https://github.com/vitest-dev/vitest/commit/772923645)
  - See more at <https://vitest.dev/api/advanced/artifacts>
- **expect**: Provide `task` in `MatchState`  -  by [@&#8203;macarie](https://github.com/macarie) in [#&#8203;9022](https://github.com/vitest-dev/vitest/issues/9022) [<samp>(afd1f)</samp>](https://github.com/vitest-dev/vitest/commit/afd1f3e52)
- **experimental**: Support OpenTelemetry traces  -  by [@&#8203;sheremet-va](https://github.com/sheremet-va) in [#&#8203;8994](https://github.com/vitest-dev/vitest/issues/8994) [<samp>(d6d33)</samp>](https://github.com/vitest-dev/vitest/commit/d6d3359dd)
  - See more at <https://vitest.dev/guide/open-telemetry>

#####    🏎 Performance

- **experimental**: Add file system cache  -  by [@&#8203;sheremet-va](https://github.com/sheremet-va) in [#&#8203;9026](https://github.com/vitest-dev/vitest/issues/9026) [<samp>(1b147)</samp>](https://github.com/vitest-dev/vitest/commit/1b1473712)
  - See more at <https://vitest.dev/config/experimental#experimental-fsmodulecache>

#####     [View changes on GitHub](https://github.com/vitest-dev/vitest/compare/v4.0.10...v4.0.11)

### [`v4.0.10`](https://github.com/vitest-dev/vitest/releases/tag/v4.0.10)

[Compare Source](https://github.com/vitest-dev/vitest/compare/v4.0.9...v4.0.10)

#####    🐞 Bug Fixes

- Remove `onCancel` when worker is terminated  -  by [@&#8203;sheremet-va](https://github.com/sheremet-va) in [#&#8203;9033](https://github.com/vitest-dev/vitest/issues/9033) [<samp>(6d7f0)</samp>](https://github.com/vitest-dev/vitest/commit/6d7f0a99e)
- **browser**:
  - Don't scale the iframe if UI is disabled  -  by [@&#8203;sheremet-va](https://github.com/sheremet-va) in [#&#8203;9018](https://github.com/vitest-dev/vitest/issues/9018) [<samp>(5406e)</samp>](https://github.com/vitest-dev/vitest/commit/5406e8ea4)
  - Handle dependency stack traces with external source maps. Resolves: [#&#8203;9003](https://github.com/vitest-dev/vitest/issues/9003)  -  by [@&#8203;iclectic](https://github.com/iclectic) in [#&#8203;9016](https://github.com/vitest-dev/vitest/issues/9016) and [#&#8203;9003](https://github.com/vitest-dev/vitest/issues/9003) [<samp>(57ae5)</samp>](https://github.com/vitest-dev/vitest/commit/57ae547de)
- **bun**:
  - Parsing of stack trace for bun runtime  -  by [@&#8203;nazarhussain](https://github.com/nazarhussain) in [#&#8203;9032](https://github.com/vitest-dev/vitest/issues/9032) [<samp>(f3ec6)</samp>](https://github.com/vitest-dev/vitest/commit/f3ec6fcb0)
- **core**:
  - Prevent starting new run when cancelling  -  by [@&#8203;AriPerkkio](https://github.com/AriPerkkio) in [#&#8203;8991](https://github.com/vitest-dev/vitest/issues/8991) [<samp>(eb98d)</samp>](https://github.com/vitest-dev/vitest/commit/eb98dd8fd)
- **pool**:
  - Prevent writing to closed worker  -  by [@&#8203;AriPerkkio](https://github.com/AriPerkkio) and [@&#8203;sheremet-va](https://github.com/sheremet-va) in [#&#8203;9023](https://github.com/vitest-dev/vitest/issues/9023) [<samp>(042c6)</samp>](https://github.com/vitest-dev/vitest/commit/042c60c80)
- **reporters**:
  - Report correct test run duration at the end  -  by [@&#8203;sheremet-va](https://github.com/sheremet-va) in [#&#8203;8969](https://github.com/vitest-dev/vitest/issues/8969) [<samp>(bc3a6)</samp>](https://github.com/vitest-dev/vitest/commit/bc3a6921e)
- **ui**:
  - Use execution time from ws reporter (`onFinished`)  -  by [@&#8203;userquin](https://github.com/userquin) in [#&#8203;8975](https://github.com/vitest-dev/vitest/issues/8975) [<samp>(f56dc)</samp>](https://github.com/vitest-dev/vitest/commit/f56dc0cc4)

#####     [View changes on GitHub](https://github.com/vitest-dev/vitest/compare/v4.0.9...v4.0.10)

### [`v4.0.9`](https://github.com/vitest-dev/vitest/releases/tag/v4.0.9)

[Compare Source](https://github.com/vitest-dev/vitest/compare/v4.0.8...v4.0.9)

#####    🚀 Experimental Features

- **expect**: Add Set support to toBeOneOf  -  by [@&#8203;tim-we](https://github.com/tim-we) and [@&#8203;sheremet-va](https://github.com/sheremet-va) in [#&#8203;8906](https://github.com/vitest-dev/vitest/issues/8906) [<samp>(a415d)</samp>](https://github.com/vitest-dev/vitest/commit/a415d0375)

#####    🐞 Bug Fixes

- **browser**: Add favicon icons to the browser mode ui  -  by [@&#8203;userquin](https://github.com/userquin) in [#&#8203;8972](https://github.com/vitest-dev/vitest/issues/8972) [<samp>(353ee)</samp>](https://github.com/vitest-dev/vitest/commit/353ee5bbc)
- **forks**: Increase worker start timeout  -  by [@&#8203;AriPerkkio](https://github.com/AriPerkkio) in [#&#8203;9027](https://github.com/vitest-dev/vitest/issues/9027) [<samp>(5e750)</samp>](https://github.com/vitest-dev/vitest/commit/5e750f4ba)
- **jsdom**: Cloned request is an instance of `Request`  -  by [@&#8203;sheremet-va](https://github.com/sheremet-va) in [#&#8203;8985](https://github.com/vitest-dev/vitest/issues/8985) [<samp>(506a9)</samp>](https://github.com/vitest-dev/vitest/commit/506a9fd0f)
- **ui**: Collect file/suite/test duration correctly  -  by [@&#8203;userquin](https://github.com/userquin) in [#&#8203;8976](https://github.com/vitest-dev/vitest/issues/8976) [<samp>(8016d)</samp>](https://github.com/vitest-dev/vitest/commit/8016da886)

#####     [View changes on GitHub](https://github.com/vitest-dev/vitest/compare/v4.0.8...v4.0.9)

### [`v4.0.8`](https://github.com/vitest-dev/vitest/releases/tag/v4.0.8)

[Compare Source](https://github.com/vitest-dev/vitest/compare/v4.0.7...v4.0.8)

#####    🐞 Bug Fixes

- Workaround `noExternal` merging bug on Vite 6  -  by [@&#8203;hi-ogawa](https://github.com/hi-ogawa) in [#&#8203;8950](https://github.com/vitest-dev/vitest/issues/8950) [<samp>(bcb13)</samp>](https://github.com/vitest-dev/vitest/commit/bcb132fd4)
- Missed context.d.ts file  -  by [@&#8203;termorey](https://github.com/termorey) in [#&#8203;8965](https://github.com/vitest-dev/vitest/issues/8965) [<samp>(9044d)</samp>](https://github.com/vitest-dev/vitest/commit/9044d9356)
- Incorrect error message for non-awaited `expect.element()`  -  by [@&#8203;StyleShit](https://github.com/StyleShit) in [#&#8203;8954](https://github.com/vitest-dev/vitest/issues/8954) [<samp>(9638d)</samp>](https://github.com/vitest-dev/vitest/commit/9638db0f3)
- **browser**: Cleanup frame-ancestors from CSP header at coverage middleware  -  by [@&#8203;userquin](https://github.com/userquin) in [#&#8203;8941](https://github.com/vitest-dev/vitest/issues/8941) [<samp>(1f730)</samp>](https://github.com/vitest-dev/vitest/commit/1f7303738)
- **deps**: Update all non-major dependencies  -  by [@&#8203;sheremet-va](https://github.com/sheremet-va) in [#&#8203;8636](https://github.com/vitest-dev/vitest/issues/8636) [<samp>(da8b9)</samp>](https://github.com/vitest-dev/vitest/commit/da8b93aa5)
- **forks**: Do not fail with Windows Defender enabled  -  by [@&#8203;sheremet-va](https://github.com/sheremet-va) in [#&#8203;8967](https://github.com/vitest-dev/vitest/issues/8967) [<samp>(c79f4)</samp>](https://github.com/vitest-dev/vitest/commit/c79f47c65)
- **runner**: Properly encode Uint8Array body in annotations  -  by [@&#8203;Livan-pro](https://github.com/Livan-pro) in [#&#8203;8951](https://github.com/vitest-dev/vitest/issues/8951) [<samp>(997ca)</samp>](https://github.com/vitest-dev/vitest/commit/997ca5a82)
- **spy**: Copy static properties if spy is initialised with `vi.fn()`, fix types for `vi.spyOn(obj, class)`  -  by [@&#8203;sheremet-va](https://github.com/sheremet-va) in [#&#8203;8956](https://github.com/vitest-dev/vitest/issues/8956) [<samp>(75e7f)</samp>](https://github.com/vitest-dev/vitest/commit/75e7fcc51)
- **webdriverio**: When no argument is passed to the .click interaction command, the webdriver command should also have no argument  -  by [@&#8203;julienw](https://github.com/julienw) in [#&#8203;8937](https://github.com/vitest-dev/vitest/issues/8937) [<samp>(069e6)</samp>](https://github.com/vitest-dev/vitest/commit/069e6db9b)

#####     [View changes on GitHub](https://github.com/vitest-dev/vitest/compare/v4.0.7...v4.0.8)

### [`v4.0.7`](https://github.com/vitest-dev/vitest/releases/tag/v4.0.7)

[Compare Source](https://github.com/vitest-dev/vitest/compare/v4.0.6...v4.0.7)

#####    🐞 Bug Fixes

- Bind `process` in case global is overwritten  -  by [@&#8203;AriPerkkio](https://github.com/AriPerkkio) in [#&#8203;8916](https://github.com/vitest-dev/vitest/issues/8916) [<samp>(6240d)</samp>](https://github.com/vitest-dev/vitest/commit/6240d51a6)
- Create environment once per worker with `isolate: false`  -  by [@&#8203;sheremet-va](https://github.com/sheremet-va) in [#&#8203;8915](https://github.com/vitest-dev/vitest/issues/8915) [<samp>(c9078)</samp>](https://github.com/vitest-dev/vitest/commit/c9078a26e)
- Add Locator as a possible element type in `toContainElement()` matcher  -  by [@&#8203;vitalybaev](https://github.com/vitalybaev) in [#&#8203;8910](https://github.com/vitest-dev/vitest/issues/8910) and [#&#8203;8927](https://github.com/vitest-dev/vitest/issues/8927) [<samp>(35a27)</samp>](https://github.com/vitest-dev/vitest/commit/35a27d4b3)
- **browser**: Inherit `isolate` option, deprecate `browser.isolate`/`browser.fileParallelism`  -  by [@&#8203;sheremet-va](https://github.com/sheremet-va) in [#&#8203;8890](https://github.com/vitest-dev/vitest/issues/8890) [<samp>(9d2b4)</samp>](https://github.com/vitest-dev/vitest/commit/9d2b4d501)
- **cli**: Parse `--execArgv` as array  -  by [@&#8203;AriPerkkio](https://github.com/AriPerkkio) in [#&#8203;8924](https://github.com/vitest-dev/vitest/issues/8924) [<samp>(751c3)</samp>](https://github.com/vitest-dev/vitest/commit/751c3926f)
- **jsdom**: Support `URL.createObjectURL`, `FormData.set(prop, blob)`  -  by [@&#8203;sheremet-va](https://github.com/sheremet-va) in [#&#8203;8935](https://github.com/vitest-dev/vitest/issues/8935) [<samp>(a1b73)</samp>](https://github.com/vitest-dev/vitest/commit/a1b7361ab)
- **pool**: Avoid `--require` argument when running in deno  -  by [@&#8203;pi0](https://github.com/pi0) in [#&#8203;8897](https://github.com/vitest-dev/vitest/issues/8897) [<samp>(d41fa)</samp>](https://github.com/vitest-dev/vitest/commit/d41fa742f)
- **typecheck**: Handle re-runs outside `tsc`  -  by [@&#8203;AriPerkkio](https://github.com/AriPerkkio) in [#&#8203;8920](https://github.com/vitest-dev/vitest/issues/8920) [<samp>(fdb2e)</samp>](https://github.com/vitest-dev/vitest/commit/fdb2e7982)

#####    🏎 Performance

- **pool**:
  - Sort test files by project by default  -  by [@&#8203;AriPerkkio](https://github.com/AriPerkkio) in [#&#8203;8914](https://github.com/vitest-dev/vitest/issues/8914) [<samp>(680a6)</samp>](https://github.com/vitest-dev/vitest/commit/680a612ea)
- **reporters**:
  - Optimize getting the tests stats  -  by [@&#8203;Connormiha](https://github.com/Connormiha) in [#&#8203;8908](https://github.com/vitest-dev/vitest/issues/8908) [<samp>(06d62)</samp>](https://github.com/vitest-dev/vitest/commit/06d6207fb)
  - Remove unnecessary `Array.from` call  -  by [@&#8203;Connormiha](https://github.com/Connormiha) in [#&#8203;8907](https://github.com/vitest-dev/vitest/issues/8907) [<samp>(b6014)</samp>](https://github.com/vitest-dev/vitest/commit/b60149b27)

#####     [View changes on GitHub](https://github.com/vitest-dev/vitest/compare/v4.0.6...v4.0.7)

### [`v4.0.6`](https://github.com/vitest-dev/vitest/releases/tag/v4.0.6)

[Compare Source](https://github.com/vitest-dev/vitest/compare/v4.0.5...v4.0.6)

#####    🐞 Bug Fixes

- Don't merge errors with different diffs for reporting  -  by [@&#8203;hi-ogawa](https://github.com/hi-ogawa) in [#&#8203;8871](https://github.com/vitest-dev/vitest/issues/8871) [<samp>(3e19f)</samp>](https://github.com/vitest-dev/vitest/commit/3e19f27d0)
- Do not throw when importing a type from an external package  -  by [@&#8203;sheremet-va](https://github.com/sheremet-va) in [#&#8203;8875](https://github.com/vitest-dev/vitest/issues/8875) [<samp>(7e6c3)</samp>](https://github.com/vitest-dev/vitest/commit/7e6c37ae5)
- Improve spying types  -  by [@&#8203;sheremet-va](https://github.com/sheremet-va) in [#&#8203;8878](https://github.com/vitest-dev/vitest/issues/8878) [<samp>(ca041)</samp>](https://github.com/vitest-dev/vitest/commit/ca041f51a)
- Reuse the same environment when `isolate` and `fileParallelism` are false  -  by [@&#8203;sheremet-va](https://github.com/sheremet-va) in [#&#8203;8889](https://github.com/vitest-dev/vitest/issues/8889) [<samp>(31706)</samp>](https://github.com/vitest-dev/vitest/commit/31706dfe5)
- **browser**:
  - Support module tracking  -  by [@&#8203;sheremet-va](https://github.com/sheremet-va) in [#&#8203;8877](https://github.com/vitest-dev/vitest/issues/8877) [<samp>(9e24a)</samp>](https://github.com/vitest-dev/vitest/commit/9e24a59f2)
  - Ensure setup files are re-evaluated on each test run  -  by [@&#8203;yjaaidi](https://github.com/yjaaidi) in [#&#8203;8883](https://github.com/vitest-dev/vitest/issues/8883) and [#&#8203;8884](https://github.com/vitest-dev/vitest/issues/8884) [<samp>(f50ea)</samp>](https://github.com/vitest-dev/vitest/commit/f50ea7a25)
- **coverage**:
  - Prevent filtering out virtual files before remapping to sources  -  by [@&#8203;AriPerkkio](https://github.com/AriPerkkio) in [#&#8203;8860](https://github.com/vitest-dev/vitest/issues/8860) [<samp>(e3b77)</samp>](https://github.com/vitest-dev/vitest/commit/e3b777550)
- **happy-dom**:
  - Properly teardown additional keys  -  by [@&#8203;sheremet-va](https://github.com/sheremet-va) in [#&#8203;8888](https://github.com/vitest-dev/vitest/issues/8888) [<samp>(10a06)</samp>](https://github.com/vitest-dev/vitest/commit/10a06d8c9)
- **jsdom**:
  - Pass down Node.js `FormData` to `Request`  -  by [@&#8203;sheremet-va](https://github.com/sheremet-va) in [#&#8203;8880](https://github.com/vitest-dev/vitest/issues/8880) [<samp>(197ca)</samp>](https://github.com/vitest-dev/vitest/commit/197caf2f9)

#####     [View changes on GitHub](https://github.com/vitest-dev/vitest/compare/v4.0.5...v4.0.6)

### [`v4.0.5`](https://github.com/vitest-dev/vitest/releases/tag/v4.0.5)

[Compare Source](https://github.com/vitest-dev/vitest/compare/v4.0.4...v4.0.5)

#####    🐞 Bug Fixes

- Respect `ssr.noExternal` when externalizing dependencies, fix Svelte and Astro  -  by [@&#8203;sheremet-va](https://github.com/sheremet-va) in [#&#8203;8862](https://github.com/vitest-dev/vitest/issues/8862) [<samp>(a4f86)</samp>](https://github.com/vitest-dev/vitest/commit/a4f86f1ba)
- Allow module in --config  -  by [@&#8203;sheremet-va](https://github.com/sheremet-va) in [#&#8203;8864](https://github.com/vitest-dev/vitest/issues/8864) [<samp>(b9521)</samp>](https://github.com/vitest-dev/vitest/commit/b9521e0c2)
- **browser**: Allow `Locator` type in selectOptions element parameter  -  by [@&#8203;rzzf](https://github.com/rzzf) and [@&#8203;sheremet-va](https://github.com/sheremet-va) in [#&#8203;8848](https://github.com/vitest-dev/vitest/issues/8848) [<samp>(7ee28)</samp>](https://github.com/vitest-dev/vitest/commit/7ee283c96)
- **module-runner**: Don't return node builtins for `getBuiltins` unconditionally  -  by [@&#8203;sapphi-red](https://github.com/sapphi-red) in [#&#8203;8863](https://github.com/vitest-dev/vitest/issues/8863) [<samp>(0e858)</samp>](https://github.com/vitest-dev/vitest/commit/0e858bab4)
- **pool**: Rename `groupId` to `groupOrder` in error message  -  by [@&#8203;Yohannfra](https://github.com/Yohannfra) in [#&#8203;8856](https://github.com/vitest-dev/vitest/issues/8856) [<samp>(b9aab)</samp>](https://github.com/vitest-dev/vitest/commit/b9aabf4e6)

#####    🏎 Performance

- Pass testfiles at once when `--no-isolate --maxWorkers=1`  -  by [@&#8203;AriPerkkio](https://github.com/AriPerkkio) in [#&#8203;8835](https://github.com/vitest-dev/vitest/issues/8835) [<samp>(584aa)</samp>](https://github.com/vitest-dev/vitest/commit/584aa7148)
- **expect**: Optimize checking the input type  -  by [@&#8203;Connormiha](https://github.com/Connormiha) in [#&#8203;8840](https://github.com/vitest-dev/vitest/issues/8840) [<samp>(06968)</samp>](https://github.com/vitest-dev/vitest/commit/0696898b4)

#####     [View changes on GitHub](https://github.com/vitest-dev/vitest/compare/v4.0.4...v4.0.5)

### [`v4.0.4`](https://github.com/vitest-dev/vitest/releases/tag/v4.0.4)

[Compare Source](https://github.com/vitest-dev/vitest/compare/v4.0.3...v4.0.4)

#####    🐞 Bug Fixes

- **browser**:
  - Correct typo  -  by [@&#8203;benmccann](https://github.com/benmccann) in [#&#8203;8796](https://github.com/vitest-dev/vitest/issues/8796) [<samp>(ede1f)</samp>](https://github.com/vitest-dev/vitest/commit/ede1f39d6)
  - Publish a missing context file for webdriverio  -  by [@&#8203;sheremet-va](https://github.com/sheremet-va) in [#&#8203;8824](https://github.com/vitest-dev/vitest/issues/8824) [<samp>(7c7b6)</samp>](https://github.com/vitest-dev/vitest/commit/7c7b6f0b1)
- **mocker**:
  - Support mocking builtins without `node:` prefix  -  by [@&#8203;sheremet-va](https://github.com/sheremet-va) in [#&#8203;8829](https://github.com/vitest-dev/vitest/issues/8829) [<samp>(06208)</samp>](https://github.com/vitest-dev/vitest/commit/06208d30b)
- **pool**:
  - Runner's error listener causing `MaxListenersExceededWarning`  -  by [@&#8203;AriPerkkio](https://github.com/AriPerkkio) in [#&#8203;8820](https://github.com/vitest-dev/vitest/issues/8820) [<samp>(d1bff)</samp>](https://github.com/vitest-dev/vitest/commit/d1bff3bb3)
  - Capture workers `stdio` to logger  -  by [@&#8203;AriPerkkio](https://github.com/AriPerkkio) in [#&#8203;8809](https://github.com/vitest-dev/vitest/issues/8809) [<samp>(fb95f)</samp>](https://github.com/vitest-dev/vitest/commit/fb95fc736)
- **spy**:
  - Allow classes in `vi.mocked` utility  -  by [@&#8203;sheremet-va](https://github.com/sheremet-va) in [#&#8203;8839](https://github.com/vitest-dev/vitest/issues/8839) [<samp>(f8756)</samp>](https://github.com/vitest-dev/vitest/commit/f87568d64)
- **worker**:
  - Rpc listener leak when `isolate: false`  -  by [@&#8203;AriPerkkio](https://github.com/AriPerkkio) in [#&#8203;8821](https://github.com/vitest-dev/vitest/issues/8821) [<samp>(573dc)</samp>](https://github.com/vitest-dev/vitest/commit/573dc06fe)

#####    🏎 Performance

- **utils**: Optimized reducer to avoid creating new objects  -  by [@&#8203;Connormiha](https://github.com/Connormiha) in [#&#8203;8818](https://github.com/vitest-dev/vitest/issues/8818) [<samp>(d19ce)</samp>](https://github.com/vitest-dev/vitest/commit/d19cece3a)

#####     [View changes on GitHub](https://github.com/vitest-dev/vitest/compare/v4.0.3...v4.0.4)

### [`v4.0.3`](https://github.com/vitest-dev/vitest/releases/tag/v4.0.3)

[Compare Source](https://github.com/vitest-dev/vitest/compare/v4.0.2...v4.0.3)

#####    🐞 Bug Fixes

- Preserve reporter options from config when CLI reporters override them  -  by [@&#8203;Copilot](https://github.com/Copilot) and **sheremet-va** in [#&#8203;8794](https://github.com/vitest-dev/vitest/issues/8794) [<samp>(15552)</samp>](https://github.com/vitest-dev/vitest/commit/155521a85)
- **browser**: More stable in-source testing validation  -  by [@&#8203;sheremet-va](https://github.com/sheremet-va) in [#&#8203;8793](https://github.com/vitest-dev/vitest/issues/8793) [<samp>(62297)</samp>](https://github.com/vitest-dev/vitest/commit/622977e61)
- **happy-dom**: Support fetch globals  -  by [@&#8203;sheremet-va](https://github.com/sheremet-va) in [#&#8203;8791](https://github.com/vitest-dev/vitest/issues/8791) [<samp>(0fb74)</samp>](https://github.com/vitest-dev/vitest/commit/0fb74bd3b)
- **init**: Use correct jsx/tsx extension  -  by [@&#8203;sheremet-va](https://github.com/sheremet-va) in [#&#8203;8792](https://github.com/vitest-dev/vitest/issues/8792) [<samp>(abc04)</samp>](https://github.com/vitest-dev/vitest/commit/abc046f95)

#####     [View changes on GitHub](https://github.com/vitest-dev/vitest/compare/v4.0.2...v4.0.3)

### [`v4.0.2`](https://github.com/vitest-dev/vitest/releases/tag/v4.0.2)

[Compare Source](https://github.com/vitest-dev/vitest/compare/v4.0.1...v4.0.2)

#####    🐞 Bug Fixes

- **browser**:
  - Don't print the deprecation notice in node\_modules  -  by [@&#8203;sheremet-va](https://github.com/sheremet-va) in [#&#8203;8779](https://github.com/vitest-dev/vitest/issues/8779) [<samp>(588f7)</samp>](https://github.com/vitest-dev/vitest/commit/588f76858)
- **pool**:
  - Assign envs before running tests to keep in sync with process.env  -  by [@&#8203;sheremet-va](https://github.com/sheremet-va) in [#&#8203;8769](https://github.com/vitest-dev/vitest/issues/8769) [<samp>(26ce8)</samp>](https://github.com/vitest-dev/vitest/commit/26ce88db6)
- **spy**:
  - Properly inherit implementation's `length`  -  by [@&#8203;sheremet-va](https://github.com/sheremet-va) in [#&#8203;8778](https://github.com/vitest-dev/vitest/issues/8778) [<samp>(d4c2b)</samp>](https://github.com/vitest-dev/vitest/commit/d4c2b280b)
  - Reset spies if both `restoreMocks` and `mockReset` are set in the config  -  by [@&#8203;sheremet-va](https://github.com/sheremet-va) in [#&#8203;8781](https://github.com/vitest-dev/vitest/issues/8781) [<samp>(2eedb)</samp>](https://github.com/vitest-dev/vitest/commit/2eedbce76)

#####     [View changes on GitHub](https://github.com/vitest-dev/vitest/compare/v4.0.1...v4.0.2)

### [`v4.0.1`](https://github.com/vitest-dev/vitest/releases/tag/v4.0.1)

[Compare Source](https://github.com/vitest-dev/vitest/compare/v4.0.0...v4.0.1)

#####    🐞 Bug Fixes

- Move the `getBuiltins` check  -  by [@&#8203;sheremet-va](https://github.com/sheremet-va) in [#&#8203;8765](https://github.com/vitest-dev/vitest/issues/8765) [<samp>(81000)</samp>](https://github.com/vitest-dev/vitest/commit/81000631d)
- **pool**: Don't teardown the communication channel too soon if something is running after the test  -  by [@&#8203;sheremet-va](https://github.com/sheremet-va) in [#&#8203;8767](https://github.com/vitest-dev/vitest/issues/8767) [<samp>(3fae7)</samp>](https://github.com/vitest-dev/vitest/commit/3fae73e2e)

#####     [View changes on GitHub](https://github.com/vitest-dev/vitest/compare/v4.0.0...v4.0.1)

### [`v4.0.0`](https://github.com/vitest-dev/vitest/releases/tag/v4.0.0)

[Compare Source](https://github.com/vitest-dev/vitest/compare/v3.2.4...v4.0.0)

Vitest 4.0 is out!

To stay updated, read our [blog post](https://vitest.dev/blog/vitest-4) and check the [migration guide](https://vitest.dev/guide/migration).

#####    🚨 Breaking Changes

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

#####    🚀 Features

- Provide entity to onConsoleLog  -  by [@&#8203;sheremet-va](https://github.com/sheremet-va) in [#&#8203;8159](https://github.com/vitest-dev/vitest/issues/8159) [<samp>(437d4)</samp>](https://github.com/vitest-dev/vitest/commit/437d461aa)
- Add `onUnhandledError` callback  -  by [@&#8203;sheremet-va](https://github.com/sheremet-va) in [#&#8203;8162](https://github.com/vitest-dev/vitest/issues/8162) [<samp>(924cb)</samp>](https://github.com/vitest-dev/vitest/commit/924cb6961)
- Add spy option to vi.mockObject  -  by [@&#8203;rChaoz](https://github.com/rChaoz) in [#&#8203;8285](https://github.com/vitest-dev/vitest/issues/8285) [<samp>(81d76)</samp>](https://github.com/vitest-dev/vitest/commit/81d7601e4)
- Don't use vite-node in coverage packages  -  by [@&#8203;sheremet-va](https://github.com/sheremet-va) [<samp>(ffdb4)</samp>](https://github.com/vitest-dev/vitest/commit/ffdb4d5fd)
- Clickable dashboard numbers  -  by [@&#8203;shairez](https://github.com/shairez) in [#&#8203;7406](https://github.com/vitest-dev/vitest/issues/7406) [<samp>(2344c)</samp>](https://github.com/vitest-dev/vitest/commit/2344c1f6e)
- Display test "path" when filtering  -  by [@&#8203;userquin](https://github.com/userquin) in [#&#8203;8547](https://github.com/vitest-dev/vitest/issues/8547) [<samp>(2e491)</samp>](https://github.com/vitest-dev/vitest/commit/2e4918954)
- Introduce separate packages for browser mode providers  -  by [@&#8203;sheremet-va](https://github.com/sheremet-va) in [#&#8203;8629](https://github.com/vitest-dev/vitest/issues/8629) [<samp>(0dc93)</samp>](https://github.com/vitest-dev/vitest/commit/0dc93ea98)
- Add hooks with type-safe extra context to TestAPI  -  by [@&#8203;ysfaran](https://github.com/ysfaran) in [#&#8203;8623](https://github.com/vitest-dev/vitest/issues/8623) [<samp>(6b21c)</samp>](https://github.com/vitest-dev/vitest/commit/6b21cfe55)
- Support `expect.assert` for type narrowing  -  by [@&#8203;sheremet-va](https://github.com/sheremet-va) in [#&#8203;8695](https://github.com/vitest-dev/vitest/issues/8695) [<samp>(fe589)</samp>](https://github.com/vitest-dev/vitest/commit/fe5895d2b)
- Add `displayAnnotations` option to `github-options`  -  by [@&#8203;sheremet-va](https://github.com/sheremet-va) in [#&#8203;8706](https://github.com/vitest-dev/vitest/issues/8706) [<samp>(4a66d)</samp>](https://github.com/vitest-dev/vitest/commit/4a66df625)
- Add schema validation matchers  -  by [@&#8203;zirkelc](https://github.com/zirkelc) in [#&#8203;8527](https://github.com/vitest-dev/vitest/issues/8527) [<samp>(c0b25)</samp>](https://github.com/vitest-dev/vitest/commit/c0b250e5c)
- Add a way to dump transformed content  -  by [@&#8203;sheremet-va](https://github.com/sheremet-va) in [#&#8203;8711](https://github.com/vitest-dev/vitest/issues/8711) [<samp>(931c0)</samp>](https://github.com/vitest-dev/vitest/commit/931c0ee63)
- **api**:
  - Expose `experimental_parseSpecifications`  -  by [@&#8203;sheremet-va](https://github.com/sheremet-va) in [#&#8203;8408](https://github.com/vitest-dev/vitest/issues/8408) [<samp>(fdeb2)</samp>](https://github.com/vitest-dev/vitest/commit/fdeb2f482)
  - Expose Vitest watcher  -  by [@&#8203;sheremet-va](https://github.com/sheremet-va) in [#&#8203;8413](https://github.com/vitest-dev/vitest/issues/8413) [<samp>(aaa6e)</samp>](https://github.com/vitest-dev/vitest/commit/aaa6e6512)
  - Add `enableCoverage` and `disableCoverage` methods  -  by [@&#8203;sheremet-va](https://github.com/sheremet-va) and [@&#8203;AriPerkkio](https://github.com/AriPerkkio) in [#&#8203;8412](https://github.com/vitest-dev/vitest/issues/8412) [<samp>(61eb7)</samp>](https://github.com/vitest-dev/vitest/commit/61eb7dd9c)
  - Add `getGlobalTestNamePattern` method  -  by [@&#8203;sheremet-va](https://github.com/sheremet-va) in [#&#8203;8438](https://github.com/vitest-dev/vitest/issues/8438) [<samp>(bdb70)</samp>](https://github.com/vitest-dev/vitest/commit/bdb7067f1)
  - Add `relativeModuleId` to `TestModule`  -  by [@&#8203;sheremet-va](https://github.com/sheremet-va) in [#&#8203;8505](https://github.com/vitest-dev/vitest/issues/8505) [<samp>(3be09)</samp>](https://github.com/vitest-dev/vitest/commit/3be0986aa)
  - Add `getSeed` method  -  by [@&#8203;sheremet-va](https://github.com/sheremet-va) in [#&#8203;8592](https://github.com/vitest-dev/vitest/issues/8592) [<samp>(438c4)</samp>](https://github.com/vitest-dev/vitest/commit/438c44e7f)
- **browser**:
  - Support `toBeInViewport` utility method to assert element is in viewport or not  -  by [@&#8203;Shinyaigeek](https://github.com/Shinyaigeek) in [#&#8203;8234](https://github.com/vitest-dev/vitest/issues/8234) [<samp>(ceed5)</samp>](https://github.com/vitest-dev/vitest/commit/ceed5b622)
  - Add qwik to the `vitest init` cli command  -  by [@&#8203;thejackshelton](https://github.com/thejackshelton) in [#&#8203;8330](https://github.com/vitest-dev/vitest/issues/8330) [<samp>(1638b)</samp>](https://github.com/vitest-dev/vitest/commit/1638b44e8)
  - Introduce `toMatchScreenshot` for Visual Regression Testing  -  by [@&#8203;macarie](https://github.com/macarie) in [#&#8203;8041](https://github.com/vitest-dev/vitest/issues/8041) [<samp>(d45f9)</samp>](https://github.com/vitest-dev/vitest/commit/d45f964c1)
  - Add `trackUnhandledErrors` option  -  by [@&#8203;sheremet-va](https://github.com/sheremet-va) in [#&#8203;8386](https://github.com/vitest-dev/vitest/issues/8386) [<samp>(c0ec0)</samp>](https://github.com/vitest-dev/vitest/commit/c0ec08a90)
  - Support iframe locator with playwright provider  -  by [@&#8203;sheremet-va](https://github.com/sheremet-va) in [#&#8203;8016](https://github.com/vitest-dev/vitest/issues/8016) [<samp>(57b2c)</samp>](https://github.com/vitest-dev/vitest/commit/57b2cca2e)
  - Add `length` property to locators, `toHaveLength` now accepts locators  -  by [@&#8203;sheremet-va](https://github.com/sheremet-va) in [#&#8203;8512](https://github.com/vitest-dev/vitest/issues/8512) [<samp>(2308c)</samp>](https://github.com/vitest-dev/vitest/commit/2308cbf13)
  - Support playwright tracing  -  by [@&#8203;sheremet-va](https://github.com/sheremet-va) in [#&#8203;8584](https://github.com/vitest-dev/vitest/issues/8584) [<samp>(1aac5)</samp>](https://github.com/vitest-dev/vitest/commit/1aac59cd2)
  - Expose `options` on `BrowserProviderOption`  -  by [@&#8203;sheremet-va](https://github.com/sheremet-va) in [#&#8203;8609](https://github.com/vitest-dev/vitest/issues/8609) [<samp>(0d0e5)</samp>](https://github.com/vitest-dev/vitest/commit/0d0e5cdf6)
  - Support `--inspect` option in webdriverio  -  by [@&#8203;sheremet-va](https://github.com/sheremet-va) in [#&#8203;8613](https://github.com/vitest-dev/vitest/issues/8613) [<samp>(38adc)</samp>](https://github.com/vitest-dev/vitest/commit/38adc86cf)
  - Support custom screenshot comparison algorithms  -  by [@&#8203;macarie](https://github.com/macarie) in [#&#8203;8687](https://github.com/vitest-dev/vitest/issues/8687) [<samp>(e63b1)</samp>](https://github.com/vitest-dev/vitest/commit/e63b17efc)
- **coverage**:
  - `autoUpdate` to support percentage formatting  -  by [@&#8203;Battjmo](https://github.com/Battjmo) and [@&#8203;AriPerkkio](https://github.com/AriPerkkio) in [#&#8203;8456](https://github.com/vitest-dev/vitest/issues/8456) [<samp>(99e01)</samp>](https://github.com/vitest-dev/vitest/commit/99e016bec)
- **expect**:
  - Support `toBeNullable` expect function to check provided value is nullish  -  by [@&#8203;Shinyaigeek](https://github.com/Shinyaigeek) and [@&#8203;sheremet-va](https://github.com/sheremet-va) in [#&#8203;8294](https://github.com/vitest-dev/vitest/issues/8294) [<samp>(eeec5)</samp>](https://github.com/vitest-dev/vitest/commit/eeec501de)
- **mocker**:
  - Add `automocker` entry  -  by [@&#8203;sheremet-va](https://github.com/sheremet-va) in [#&#8203;8301](https://github.com/vitest-dev/vitest/issues/8301) [<samp>(e9c92)</samp>](https://github.com/vitest-dev/vitest/commit/e9c928252)

#####    🐞 Bug Fixes

- Allow overriding globals in types  -  by [@&#8203;sheremet-va](https://github.com/sheremet-va) in [#&#8203;8215](https://github.com/vitest-dev/vitest/issues/8215) [<samp>(2248b)</samp>](https://github.com/vitest-dev/vitest/commit/2248b06d4)
- Remove unused dependencies  -  by [@&#8203;AriPerkkio](https://github.com/AriPerkkio) in [#&#8203;8184](https://github.com/vitest-dev/vitest/issues/8184) [<samp>(feadc)</samp>](https://github.com/vitest-dev/vitest/commit/feadc60af)
- Distribute test files to shards more evenly  -  by [@&#8203;Shinyaigeek](https://github.com/Shinyaigeek) and [@&#8203;AriPerkkio](https://github.com/AriPerkkio) in [#&#8203;8288](https://github.com/vitest-dev/vitest/issues/8288) [<samp>(7b489)</samp>](https://github.com/vitest-dev/vitest/commit/7b489959a)
- Use suite's timeout when `test.extend`  -  by [@&#8203;AriPerkkio](https://github.com/AriPerkkio) in [#&#8203;8278](https://github.com/vitest-dev/vitest/issues/8278) [<samp>(43977)</samp>](https://github.com/vitest-dev/vitest/commit/43977c2b8)
- Support snapshot with no object key sorting  -  by [@&#8203;hi-ogawa](https://github.com/hi-ogawa) and [@&#8203;sheremet-va](https://github.com/sheremet-va) in [#&#8203;8136](https://github.com/vitest-dev/vitest/issues/8136) [<samp>(e85e3)</samp>](https://github.com/vitest-dev/vitest/commit/e85e396f0)
- Annotation location always points to the test file  -  by [@&#8203;sheremet-va](https://github.com/sheremet-va) in [#&#8203;8315](https://github.com/vitest-dev/vitest/issues/8315) [<samp>(88071)</samp>](https://github.com/vitest-dev/vitest/commit/88071a8f2)
- Add `--changed` flag support to `vitest list` command  -  by [@&#8203;haakonjackfloat](https://github.com/haakonjackfloat) in [#&#8203;8270](https://github.com/vitest-dev/vitest/issues/8270) and [#&#8203;8272](https://github.com/vitest-dev/vitest/issues/8272) [<samp>(e71a5)</samp>](https://github.com/vitest-dev/vitest/commit/e71a5d0ec)
- Prevent rpc timeout on slow thread blocking synchronous methods  -  by [@&#8203;AriPerkkio](https://github.com/AriPerkkio) and [@&#8203;sheremet-va](https://github.com/sheremet-va) in [#&#8203;8297](https://github.com/vitest-dev/vitest/issues/8297) [<samp>(bea87)</samp>](https://github.com/vitest-dev/vitest/commit/bea874610)
- Forbid setting environment to `browser`  -  by [@&#8203;sheremet-va](https://github.com/sheremet-va) in [#&#8203;8334](https://github.com/vitest-dev/vitest/issues/8334) [<samp>(0417a)</samp>](https://github.com/vitest-dev/vitest/commit/0417a2c1a)
- Invalidate modules in all module graphs when the file is changed  -  by [@&#8203;sheremet-va](https://github.com/sheremet-va) in [#&#8203;8352](https://github.com/vitest-dev/vitest/issues/8352) [<samp>(94ab3)</samp>](https://github.com/vitest-dev/vitest/commit/94ab392b3)
- Screenshot masks with Playwright provider  -  by [@&#8203;macarie](https://github.com/macarie) in [#&#8203;8357](https://github.com/vitest-dev/vitest/issues/8357) [<samp>(459ef)</samp>]…

736-c41-2c1-e464fc974 added a commit to Swiss-Armed-Forces/Loom that referenced this pull request

Feb 21, 2026
chore(deps): update vitest (major)

This MR contains the following updates:

| Package | Type | Update | Change | OpenSSF |
|---|---|---|---|---|
| [vitest](https://vitest.dev) ([source](https://github.com/vitest-dev/vitest/tree/HEAD/packages/vitest)) | devDependencies | major | [`^3.2.4` → `^4.0.0`](https://renovatebot.com/diffs/npm/vitest/3.2.4/4.0.18) | [![OpenSSF Scorecard](https://api.securityscorecards.dev/projects/github.com/vitest-dev/vitest/badge)](https://securityscorecards.dev/viewer/?uri=github.com/vitest-dev/vitest) |

---

### Release Notes

<details>
<summary>vitest-dev/vitest (vitest)</summary>

### [`v4.0.18`](https://github.com/vitest-dev/vitest/releases/tag/v4.0.18)

[Compare Source](https://github.com/vitest-dev/vitest/compare/v4.0.17...v4.0.18)

#####    🚀 Experimental Features

- **experimental**: Add `onModuleRunner` hook to `worker.init`  -  by [@&#8203;sheremet-va](https://github.com/sheremet-va) in [#&#8203;9286](https://github.com/vitest-dev/vitest/issues/9286) [<samp>(ea837)</samp>](https://github.com/vitest-dev/vitest/commit/ea837de7d)

#####    🐞 Bug Fixes

- Use `meta.url` in `createRequire`  -  by [@&#8203;sheremet-va](https://github.com/sheremet-va) in [#&#8203;9441](https://github.com/vitest-dev/vitest/issues/9441) [<samp>(e0572)</samp>](https://github.com/vitest-dev/vitest/commit/e057281ca)
- **browser**: Hide injected data-testid attributes  -  by [@&#8203;sheremet-va](https://github.com/sheremet-va) in [#&#8203;9503](https://github.com/vitest-dev/vitest/issues/9503) [<samp>(f8989)</samp>](https://github.com/vitest-dev/vitest/commit/f89899cd8)
- **ui**: Process artifact attachments when generating HTML reporter  -  by [@&#8203;macarie](https://github.com/macarie) in [#&#8203;9472](https://github.com/vitest-dev/vitest/issues/9472) [<samp>(22543)</samp>](https://github.com/vitest-dev/vitest/commit/225435647)

#####     [View changes on GitHub](https://github.com/vitest-dev/vitest/compare/v4.0.17...v4.0.18)

### [`v4.0.17`](https://github.com/vitest-dev/vitest/releases/tag/v4.0.17)

[Compare Source](https://github.com/vitest-dev/vitest/compare/v4.0.16...v4.0.17)

#####    🚀 Experimental Features

- Support openTelemetry for browser mode  -  by [@&#8203;hi-ogawa](https://github.com/hi-ogawa) in [#&#8203;9180](https://github.com/vitest-dev/vitest/issues/9180) [<samp>(1ec3a)</samp>](https://github.com/vitest-dev/vitest/commit/1ec3a8b68)
- Support TRACEPARENT and TRACESTATE environment variables for OpenTelemetry context propagation  -  by [@&#8203;Copilot](https://github.com/Copilot), **hi-ogawa** and [@&#8203;hi-ogawa](https://github.com/hi-ogawa) in [#&#8203;9295](https://github.com/vitest-dev/vitest/issues/9295) [<samp>(876cb)</samp>](https://github.com/vitest-dev/vitest/commit/876cb84c2)

#####    🐞 Bug Fixes

- Improve asymmetric matcher diff readability by unwrapping container matchers  -  by [@&#8203;Copilot](https://github.com/Copilot), **sheremet-va**, **hi-ogawa** and [@&#8203;hi-ogawa](https://github.com/hi-ogawa) in [#&#8203;9330](https://github.com/vitest-dev/vitest/issues/9330) [<samp>(b2ec7)</samp>](https://github.com/vitest-dev/vitest/commit/b2ec724a8)
- Improve runner error when importing outside of test context  -  by [@&#8203;sheremet-va](https://github.com/sheremet-va) in [#&#8203;9335](https://github.com/vitest-dev/vitest/issues/9335) [<samp>(2dd3d)</samp>](https://github.com/vitest-dev/vitest/commit/2dd3dd839)
- Replace crypto.randomUUID to allow insecure environments (fix [#&#8203;9](https://github.com/vitest-dev/vitest/issues/9)…  -  by [@&#8203;plusgut](https://github.com/plusgut) in [#&#8203;9339](https://github.com/vitest-dev/vitest/issues/9339) and [#&#8203;9](https://github.com/vitest-dev/vitest/issues/9) [<samp>(e6a3f)</samp>](https://github.com/vitest-dev/vitest/commit/e6a3f8cc7)
- Handle null options in `addEventHandler` [#&#8203;9371](https://github.com/vitest-dev/vitest/issues/9371)  -  by [@&#8203;ThibautMarechal](https://github.com/ThibautMarechal) in [#&#8203;9372](https://github.com/vitest-dev/vitest/issues/9372) and [#&#8203;9371](https://github.com/vitest-dev/vitest/issues/9371) [<samp>(40841)</samp>](https://github.com/vitest-dev/vitest/commit/40841ff00)
- Typo in browser.provider error  -  by [@&#8203;deammer](https://github.com/deammer) in [#&#8203;9394](https://github.com/vitest-dev/vitest/issues/9394) [<samp>(4b67f)</samp>](https://github.com/vitest-dev/vitest/commit/4b67fc25a)
- **browser**:
  - Fix `process.env` and `import.meta.env` defines in inline project  -  by [@&#8203;hi-ogawa](https://github.com/hi-ogawa) in [#&#8203;9239](https://github.com/vitest-dev/vitest/issues/9239) [<samp>(b70c9)</samp>](https://github.com/vitest-dev/vitest/commit/b70c96121)
  - Fix upload File instance  -  by [@&#8203;hi-ogawa](https://github.com/hi-ogawa) in [#&#8203;9294](https://github.com/vitest-dev/vitest/issues/9294) [<samp>(b6778)</samp>](https://github.com/vitest-dev/vitest/commit/b67788c69)
  - Fix invalid project token for artifacts assets  -  by [@&#8203;hi-ogawa](https://github.com/hi-ogawa) in [#&#8203;9321](https://github.com/vitest-dev/vitest/issues/9321) [<samp>(caa7d)</samp>](https://github.com/vitest-dev/vitest/commit/caa7d73d4)
  - Log `ErrorEvent.message` when unhandled `ErrorEvent.error` is null  -  by [@&#8203;hi-ogawa](https://github.com/hi-ogawa) in [#&#8203;9322](https://github.com/vitest-dev/vitest/issues/9322) [<samp>(5d84e)</samp>](https://github.com/vitest-dev/vitest/commit/5d84eeb91)
  - Support `fileParallelism` on an instance  -  by [@&#8203;sheremet-va](https://github.com/sheremet-va) in [#&#8203;9328](https://github.com/vitest-dev/vitest/issues/9328) [<samp>(15006)</samp>](https://github.com/vitest-dev/vitest/commit/150065459)
- **coverage**:
  - Remove unnecessary `istanbul-lib-source-maps` usage  -  by [@&#8203;AriPerkkio](https://github.com/AriPerkkio) in [#&#8203;9344](https://github.com/vitest-dev/vitest/issues/9344) [<samp>(b0940)</samp>](https://github.com/vitest-dev/vitest/commit/b09405375)
  - Apply patch from [istanbuljs/istanbuljs#837](https://github.com/istanbuljs/istanbuljs/issues/837)  -  by [@&#8203;AriPerkkio](https://github.com/AriPerkkio) and **sapphi-red** in [#&#8203;9413](https://github.com/vitest-dev/vitest/issues/9413) and [#&#8203;837](https://github.com/vitest-dev/vitest/issues/837) [<samp>(e05ce)</samp>](https://github.com/vitest-dev/vitest/commit/e05cedbf4)
- **fsModuleCache**:
  - Don't store importers in cache  -  by [@&#8203;sheremet-va](https://github.com/sheremet-va) in [#&#8203;9422](https://github.com/vitest-dev/vitest/issues/9422) [<samp>(75136)</samp>](https://github.com/vitest-dev/vitest/commit/751364eec)
  - Add importers alongside importedModules  -  by [@&#8203;sheremet-va](https://github.com/sheremet-va) in [#&#8203;9423](https://github.com/vitest-dev/vitest/issues/9423) [<samp>(59f92)</samp>](https://github.com/vitest-dev/vitest/commit/59f92d403)
- **mocker**:
  - Fix mock transform with class  -  by [@&#8203;hi-ogawa](https://github.com/hi-ogawa) in [#&#8203;9421](https://github.com/vitest-dev/vitest/issues/9421) [<samp>(d390e)</samp>](https://github.com/vitest-dev/vitest/commit/d390eb527)
- **pool**:
  - Validate environment options when reusing the worker  -  by [@&#8203;sheremet-va](https://github.com/sheremet-va) in [#&#8203;9349](https://github.com/vitest-dev/vitest/issues/9349) [<samp>(a8a88)</samp>](https://github.com/vitest-dev/vitest/commit/a8a8836e3)
  - Handle worker start failures gracefully  -  by [@&#8203;AriPerkkio](https://github.com/AriPerkkio) in [#&#8203;9337](https://github.com/vitest-dev/vitest/issues/9337) [<samp>(200da)</samp>](https://github.com/vitest-dev/vitest/commit/200dadb32)
- **reporter**:
  - Report test module if it failed to run  -  by [@&#8203;sheremet-va](https://github.com/sheremet-va) in [#&#8203;9272](https://github.com/vitest-dev/vitest/issues/9272) [<samp>(c7888)</samp>](https://github.com/vitest-dev/vitest/commit/c78882985)
- **runner**:
  - Respect nested test.only within describe.only  -  by [@&#8203;Ujjwaljain16](https://github.com/Ujjwaljain16) in [#&#8203;9021](https://github.com/vitest-dev/vitest/issues/9021) and [#&#8203;9213](https://github.com/vitest-dev/vitest/issues/9213) [<samp>(55d5d)</samp>](https://github.com/vitest-dev/vitest/commit/55d5dad69)
- **typecheck**:
  - Improve error message when tsc outputs help text  -  by [@&#8203;Ujjwaljain16](https://github.com/Ujjwaljain16) in [#&#8203;9214](https://github.com/vitest-dev/vitest/issues/9214) [<samp>(7b10a)</samp>](https://github.com/vitest-dev/vitest/commit/7b10ab4cd)
- **ui**:
  - Detect gzip by magic numbers instead of Content-Type header in html reporter  -  by [@&#8203;Copilot](https://github.com/Copilot), **hi-ogawa** and [@&#8203;hi-ogawa](https://github.com/hi-ogawa) in [#&#8203;9278](https://github.com/vitest-dev/vitest/issues/9278) [<samp>(dd033)</samp>](https://github.com/vitest-dev/vitest/commit/dd0331632)
- **webdriverio**:
  - Fall back to WebDriver Classic [#&#8203;9244](https://github.com/vitest-dev/vitest/issues/9244)  -  by [@&#8203;JustasMonkev](https://github.com/JustasMonkev) in [#&#8203;9373](https://github.com/vitest-dev/vitest/issues/9373) and [#&#8203;9244](https://github.com/vitest-dev/vitest/issues/9244) [<samp>(c23dd)</samp>](https://github.com/vitest-dev/vitest/commit/c23dd11bd)

#####     [View changes on GitHub](https://github.com/vitest-dev/vitest/compare/v4.0.16...v4.0.17)

### [`v4.0.16`](https://github.com/vitest-dev/vitest/releases/tag/v4.0.16)

[Compare Source](https://github.com/vitest-dev/vitest/compare/v4.0.15...v4.0.16)

#####    🐞 Bug Fixes

- Fix browser mode default testTimeout back to 15 seconds  -  by [@&#8203;hi-ogawa](https://github.com/hi-ogawa) in [#&#8203;9167](https://github.com/vitest-dev/vitest/issues/9167) [<samp>(da0ad)</samp>](https://github.com/vitest-dev/vitest/commit/da0ade249)
- Avoid crashing on `process.versions` stub  -  by [@&#8203;AriPerkkio](https://github.com/AriPerkkio) in [#&#8203;9174](https://github.com/vitest-dev/vitest/issues/9174) [<samp>(78cfb)</samp>](https://github.com/vitest-dev/vitest/commit/78cfbf99a)
- Reject calling suite function inside test  -  by [@&#8203;hi-ogawa](https://github.com/hi-ogawa) in [#&#8203;9198](https://github.com/vitest-dev/vitest/issues/9198) [<samp>(1a259)</samp>](https://github.com/vitest-dev/vitest/commit/1a259c340)
- Allow inlining fully dynamic import  -  by [@&#8203;hi-ogawa](https://github.com/hi-ogawa) in [#&#8203;9137](https://github.com/vitest-dev/vitest/issues/9137) [<samp>(56851)</samp>](https://github.com/vitest-dev/vitest/commit/568513ca6)
- Fix module graph UI on html reporter with headless browser mode  -  by [@&#8203;hi-ogawa](https://github.com/hi-ogawa) in [#&#8203;9219](https://github.com/vitest-dev/vitest/issues/9219) [<samp>(60642)</samp>](https://github.com/vitest-dev/vitest/commit/60642b304)
- Log deprecated `test.poolOptions` if it's set  -  by [@&#8203;sheremet-va](https://github.com/sheremet-va) in [#&#8203;9226](https://github.com/vitest-dev/vitest/issues/9226) [<samp>(f7f6a)</samp>](https://github.com/vitest-dev/vitest/commit/f7f6aa8ba)
- **browser**:
  - Import `recordArtifact` from the vitest package  -  by [@&#8203;macarie](https://github.com/macarie) in [#&#8203;9186](https://github.com/vitest-dev/vitest/issues/9186) [<samp>(01c56)</samp>](https://github.com/vitest-dev/vitest/commit/01c56454d)
  - Fix `import.meta.env` define  -  by [@&#8203;hi-ogawa](https://github.com/hi-ogawa) in [#&#8203;9205](https://github.com/vitest-dev/vitest/issues/9205) [<samp>(01a9a)</samp>](https://github.com/vitest-dev/vitest/commit/01a9a58d9)
  - String formatting bug when including placeholders in console.log  -  by [@&#8203;michael-debs](https://github.com/michael-debs) and [@&#8203;hi-ogawa](https://github.com/hi-ogawa) in [#&#8203;9030](https://github.com/vitest-dev/vitest/issues/9030) and [#&#8203;9131](https://github.com/vitest-dev/vitest/issues/9131) [<samp>(84a30)</samp>](https://github.com/vitest-dev/vitest/commit/84a306210)
- **coverage**:
  - Istanbul untested files source maps are off  -  by [@&#8203;AriPerkkio](https://github.com/AriPerkkio) in [#&#8203;9208](https://github.com/vitest-dev/vitest/issues/9208) [<samp>(372e8)</samp>](https://github.com/vitest-dev/vitest/commit/372e86fde)
- **experimental**:
  - Export `setupEnvironment` for custom pools  -  by [@&#8203;AriPerkkio](https://github.com/AriPerkkio) in [#&#8203;9187](https://github.com/vitest-dev/vitest/issues/9187) [<samp>(5d26b)</samp>](https://github.com/vitest-dev/vitest/commit/5d26b87b0)

#####     [View changes on GitHub](https://github.com/vitest-dev/vitest/compare/v4.0.15...v4.0.16)

### [`v4.0.15`](https://github.com/vitest-dev/vitest/releases/tag/v4.0.15)

[Compare Source](https://github.com/vitest-dev/vitest/compare/v4.0.14...v4.0.15)

#####    🚀 Experimental Features

- **cache**: Add opt-out on a plugin level, fix internal root cache  -  by [@&#8203;sheremet-va](https://github.com/sheremet-va) in [#&#8203;9154](https://github.com/vitest-dev/vitest/issues/9154) [<samp>(a68f7)</samp>](https://github.com/vitest-dev/vitest/commit/a68f74e5e)
- **reporters**: Print import duration breakdown  -  by [@&#8203;sheremet-va](https://github.com/sheremet-va) in [#&#8203;9105](https://github.com/vitest-dev/vitest/issues/9105) [<samp>(122ff)</samp>](https://github.com/vitest-dev/vitest/commit/122ff321c)

#####    🐞 Bug Fixes

- Keep built-in id as is in bun and deno  -  by [@&#8203;sheremet-va](https://github.com/sheremet-va) in [#&#8203;9117](https://github.com/vitest-dev/vitest/issues/9117) [<samp>(075ab)</samp>](https://github.com/vitest-dev/vitest/commit/075ab3520)
- Use `optimizeDeps.rolldownOptions` to fix depreated warning + fix `ssr.external: true`  -  by [@&#8203;hi-ogawa](https://github.com/hi-ogawa) in [#&#8203;9121](https://github.com/vitest-dev/vitest/issues/9121) [<samp>(fd8bd)</samp>](https://github.com/vitest-dev/vitest/commit/fd8bd6dee)
- Fix external behavior with `deps.optimizer`  -  by [@&#8203;hi-ogawa](https://github.com/hi-ogawa) in [#&#8203;9125](https://github.com/vitest-dev/vitest/issues/9125) [<samp>(4c754)</samp>](https://github.com/vitest-dev/vitest/commit/4c75492cc)
- Very minor typo in "Chrome DevTools Protocol"  -  by [@&#8203;HowToTestFrontend](https://github.com/HowToTestFrontend) in [#&#8203;9146](https://github.com/vitest-dev/vitest/issues/9146) [<samp>(20997)</samp>](https://github.com/vitest-dev/vitest/commit/209976419)
- **browser**: Run `toMatchScreenshot` only once when used with `expect.element`  -  by [@&#8203;macarie](https://github.com/macarie) in [#&#8203;9132](https://github.com/vitest-dev/vitest/issues/9132) [<samp>(0d2e7)</samp>](https://github.com/vitest-dev/vitest/commit/0d2e7e3e2)
- **coverage**: Istanbul provider to not break source maps  -  by [@&#8203;AriPerkkio](https://github.com/AriPerkkio) in [#&#8203;9040](https://github.com/vitest-dev/vitest/issues/9040) [<samp>(e4ca9)</samp>](https://github.com/vitest-dev/vitest/commit/e4ca917f1)
- **deps**: Update dependency tinyexec to v1  -  in [#&#8203;9122](https://github.com/vitest-dev/vitest/issues/9122) [<samp>(fd786)</samp>](https://github.com/vitest-dev/vitest/commit/fd7860222)
- **docs**: Remove `--browser.provider` from docs  -  by [@&#8203;sheremet-va](https://github.com/sheremet-va) in [#&#8203;9115](https://github.com/vitest-dev/vitest/issues/9115) [<samp>(120b3)</samp>](https://github.com/vitest-dev/vitest/commit/120b3dac1)
- **expect**: Preserve `currentTestName` in extended matchers  -  by [@&#8203;macarie](https://github.com/macarie) in [#&#8203;9106](https://github.com/vitest-dev/vitest/issues/9106) [<samp>(e4345)</samp>](https://github.com/vitest-dev/vitest/commit/e43458e02)
- **pool**: Terminate workers on `CTRL+c` forceful exits  -  by [@&#8203;AriPerkkio](https://github.com/AriPerkkio) in [#&#8203;9140](https://github.com/vitest-dev/vitest/issues/9140) [<samp>(d57d8)</samp>](https://github.com/vitest-dev/vitest/commit/d57d8bf0a)
- **reporters**: Show project in github reporter  -  by [@&#8203;sheremet-va](https://github.com/sheremet-va) in [#&#8203;9138](https://github.com/vitest-dev/vitest/issues/9138) [<samp>(bb65e)</samp>](https://github.com/vitest-dev/vitest/commit/bb65e15c7)
- **spy**: Do not mock overriden method, if parent was automocked  -  by [@&#8203;sheremet-va](https://github.com/sheremet-va) in [#&#8203;9116](https://github.com/vitest-dev/vitest/issues/9116) [<samp>(1a246)</samp>](https://github.com/vitest-dev/vitest/commit/1a24607b4)
- **web-worker**: MessagePort objects passed to Worker.postMessage work when clone === "native"  -  by [@&#8203;whitphx](https://github.com/whitphx) in [#&#8203;9118](https://github.com/vitest-dev/vitest/issues/9118) [<samp>(deee8)</samp>](https://github.com/vitest-dev/vitest/commit/deee83e54)

#####     [View changes on GitHub](https://github.com/vitest-dev/vitest/compare/v4.0.14...v4.0.15)

### [`v4.0.14`](https://github.com/vitest-dev/vitest/releases/tag/v4.0.14)

[Compare Source](https://github.com/vitest-dev/vitest/compare/v4.0.13...v4.0.14)

#####    🚀 Experimental Features

- **browser**: Expose `utils.configurePrettyDOM`  -  by [@&#8203;sheremet-va](https://github.com/sheremet-va) in [#&#8203;9103](https://github.com/vitest-dev/vitest/issues/9103) [<samp>(2cc34)</samp>](https://github.com/vitest-dev/vitest/commit/2cc34e0d4)
- **runner**: Add full names to tasks  -  by [@&#8203;macarie](https://github.com/macarie) in [#&#8203;9087](https://github.com/vitest-dev/vitest/issues/9087) [<samp>(821aa)</samp>](https://github.com/vitest-dev/vitest/commit/821aa2002)
- **ui**: Add tabbed failure view for `toMatchScreenshot` with comparison slider  -  by [@&#8203;macarie](https://github.com/macarie) in [#&#8203;8813](https://github.com/vitest-dev/vitest/issues/8813) [<samp>(c37c2)</samp>](https://github.com/vitest-dev/vitest/commit/c37c2eb0b)

#####    🐞 Bug Fixes

- Externalize before caching  -  by [@&#8203;sheremet-va](https://github.com/sheremet-va) in [#&#8203;9077](https://github.com/vitest-dev/vitest/issues/9077) [<samp>(e1b2e)</samp>](https://github.com/vitest-dev/vitest/commit/e1b2e086a)
- Collect the duration of external imports  -  by [@&#8203;sheremet-va](https://github.com/sheremet-va) in [#&#8203;9097](https://github.com/vitest-dev/vitest/issues/9097) [<samp>(3326c)</samp>](https://github.com/vitest-dev/vitest/commit/3326cc9f4)
- Rename `collect` to `import`, remove `prepare`  -  by [@&#8203;sheremet-va](https://github.com/sheremet-va) in [#&#8203;9091](https://github.com/vitest-dev/vitest/issues/9091) [<samp>(1256b)</samp>](https://github.com/vitest-dev/vitest/commit/1256b5ca3)
- **browser**:
  - Unsubscribe `onCancel` on rpc destroy  -  by [@&#8203;AriPerkkio](https://github.com/AriPerkkio) in [#&#8203;9088](https://github.com/vitest-dev/vitest/issues/9088) [<samp>(f5b72)</samp>](https://github.com/vitest-dev/vitest/commit/f5b72374b)
  - Revert the viewport scaling in non-ui mode [#&#8203;9018](https://github.com/vitest-dev/vitest/issues/9018)  -  by [@&#8203;sheremet-va](https://github.com/sheremet-va) in [#&#8203;9072](https://github.com/vitest-dev/vitest/issues/9072) and [#&#8203;9018](https://github.com/vitest-dev/vitest/issues/9018) [<samp>(64502)</samp>](https://github.com/vitest-dev/vitest/commit/64502a2c4)
- **coverage**:
  - Invalidate circular modules correctly on rerun with coverage  -  by [@&#8203;aicest](https://github.com/aicest) in [#&#8203;9096](https://github.com/vitest-dev/vitest/issues/9096) [<samp>(6f22c)</samp>](https://github.com/vitest-dev/vitest/commit/6f22c675f)
- **expect**:
  - Allow function as standard schema  -  by [@&#8203;hi-ogawa](https://github.com/hi-ogawa) in [#&#8203;9099](https://github.com/vitest-dev/vitest/issues/9099) [<samp>(ed8a2)</samp>](https://github.com/vitest-dev/vitest/commit/ed8a2ebbd)
- **jsdom**:
  - Reuse abort signals if possible  -  by [@&#8203;sheremet-va](https://github.com/sheremet-va) in [#&#8203;9090](https://github.com/vitest-dev/vitest/issues/9090) [<samp>(2c468)</samp>](https://github.com/vitest-dev/vitest/commit/2c468ee95)
- **pool**:
  - Init `VITEST_POOL_ID` + `VITEST_WORKER_ID` before environment setup  -  by [@&#8203;AriPerkkio](https://github.com/AriPerkkio) in [#&#8203;9085](https://github.com/vitest-dev/vitest/issues/9085) [<samp>(37918)</samp>](https://github.com/vitest-dev/vitest/commit/379185b40)
- **web-worker**:
  - `postMessage` to send ports to workers  -  by [@&#8203;whitphx](https://github.com/whitphx) and [@&#8203;AriPerkkio](https://github.com/AriPerkkio) in [#&#8203;9078](https://github.com/vitest-dev/vitest/issues/9078) [<samp>(9d176)</samp>](https://github.com/vitest-dev/vitest/commit/9d1763d11)

#####    🏎 Performance

- Replace `debug` with `obug`  -  by [@&#8203;sxzz](https://github.com/sxzz) and [@&#8203;AriPerkkio](https://github.com/AriPerkkio) in [#&#8203;9057](https://github.com/vitest-dev/vitest/issues/9057) [<samp>(acc51)</samp>](https://github.com/vitest-dev/vitest/commit/acc5152b9)

#####     [View changes on GitHub](https://github.com/vitest-dev/vitest/compare/v4.0.13...v4.0.14)

### [`v4.0.13`](https://github.com/vitest-dev/vitest/releases/tag/v4.0.13)

[Compare Source](https://github.com/vitest-dev/vitest/compare/v4.0.12...v4.0.13)

#####    🐞 Bug Fixes

- **types**:
  - Don't use type from Vite 7.1  -  by [@&#8203;sheremet-va](https://github.com/sheremet-va) in [#&#8203;9071](https://github.com/vitest-dev/vitest/issues/9071) [<samp>(6356b)</samp>](https://github.com/vitest-dev/vitest/commit/6356b1d38)
  - Don't import node.js dependent types in vitest/browser  -  by [@&#8203;sheremet-va](https://github.com/sheremet-va) in [#&#8203;9068](https://github.com/vitest-dev/vitest/issues/9068) [<samp>(332af)</samp>](https://github.com/vitest-dev/vitest/commit/332afa0de)

#####    🏎 Performance

- Avoid fetchModule roundtrip if the module is cached  -  by [@&#8203;sheremet-va](https://github.com/sheremet-va) in [#&#8203;9075](https://github.com/vitest-dev/vitest/issues/9075) [<samp>(b27e0)</samp>](https://github.com/vitest-dev/vitest/commit/b27e002e5)
- **experimental**: If `fsCacheModule` is enabled, read from the memory when possible  -  by [@&#8203;sheremet-va](https://github.com/sheremet-va) in [#&#8203;9076](https://github.com/vitest-dev/vitest/issues/9076) [<samp>(6b9a1)</samp>](https://github.com/vitest-dev/vitest/commit/6b9a1b5b1)

#####     [View changes on GitHub](https://github.com/vitest-dev/vitest/compare/v4.0.12...v4.0.13)

### [`v4.0.12`](https://github.com/vitest-dev/vitest/releases/tag/v4.0.12)

[Compare Source](https://github.com/vitest-dev/vitest/compare/v4.0.11...v4.0.12)

#####    🐞 Bug Fixes

- Inherit `fsModuleCachePath` by default  -  by [@&#8203;sheremet-va](https://github.com/sheremet-va) in [#&#8203;9063](https://github.com/vitest-dev/vitest/issues/9063) [<samp>(9a8bc)</samp>](https://github.com/vitest-dev/vitest/commit/9a8bc78c5)
- Don't import from `@opentelemetry/api` in public types  -  by [@&#8203;sheremet-va](https://github.com/sheremet-va) in [#&#8203;9066](https://github.com/vitest-dev/vitest/issues/9066) [<samp>(e944a)</samp>](https://github.com/vitest-dev/vitest/commit/e944a37b7)

#####     [View changes on GitHub](https://github.com/vitest-dev/vitest/compare/v4.0.11...v4.0.12)

### [`v4.0.11`](https://github.com/vitest-dev/vitest/releases/tag/v4.0.11)

[Compare Source](https://github.com/vitest-dev/vitest/compare/v4.0.10...v4.0.11)

#####    🚀 Experimental Features

- **api**: Add extensible test artifact API  -  by [@&#8203;macarie](https://github.com/macarie) in [#&#8203;8987](https://github.com/vitest-dev/vitest/issues/8987) [<samp>(77292)</samp>](https://github.com/vitest-dev/vitest/commit/772923645)
  - See more at <https://vitest.dev/api/advanced/artifacts>
- **expect**: Provide `task` in `MatchState`  -  by [@&#8203;macarie](https://github.com/macarie) in [#&#8203;9022](https://github.com/vitest-dev/vitest/issues/9022) [<samp>(afd1f)</samp>](https://github.com/vitest-dev/vitest/commit/afd1f3e52)
- **experimental**: Support OpenTelemetry traces  -  by [@&#8203;sheremet-va](https://github.com/sheremet-va) in [#&#8203;8994](https://github.com/vitest-dev/vitest/issues/8994) [<samp>(d6d33)</samp>](https://github.com/vitest-dev/vitest/commit/d6d3359dd)
  - See more at <https://vitest.dev/guide/open-telemetry>

#####    🏎 Performance

- **experimental**: Add file system cache  -  by [@&#8203;sheremet-va](https://github.com/sheremet-va) in [#&#8203;9026](https://github.com/vitest-dev/vitest/issues/9026) [<samp>(1b147)</samp>](https://github.com/vitest-dev/vitest/commit/1b1473712)
  - See more at <https://vitest.dev/config/experimental#experimental-fsmodulecache>

#####     [View changes on GitHub](https://github.com/vitest-dev/vitest/compare/v4.0.10...v4.0.11)

### [`v4.0.10`](https://github.com/vitest-dev/vitest/releases/tag/v4.0.10)

[Compare Source](https://github.com/vitest-dev/vitest/compare/v4.0.9...v4.0.10)

#####    🐞 Bug Fixes

- Remove `onCancel` when worker is terminated  -  by [@&#8203;sheremet-va](https://github.com/sheremet-va) in [#&#8203;9033](https://github.com/vitest-dev/vitest/issues/9033) [<samp>(6d7f0)</samp>](https://github.com/vitest-dev/vitest/commit/6d7f0a99e)
- **browser**:
  - Don't scale the iframe if UI is disabled  -  by [@&#8203;sheremet-va](https://github.com/sheremet-va) in [#&#8203;9018](https://github.com/vitest-dev/vitest/issues/9018) [<samp>(5406e)</samp>](https://github.com/vitest-dev/vitest/commit/5406e8ea4)
  - Handle dependency stack traces with external source maps. Resolves: [#&#8203;9003](https://github.com/vitest-dev/vitest/issues/9003)  -  by [@&#8203;iclectic](https://github.com/iclectic) in [#&#8203;9016](https://github.com/vitest-dev/vitest/issues/9016) and [#&#8203;9003](https://github.com/vitest-dev/vitest/issues/9003) [<samp>(57ae5)</samp>](https://github.com/vitest-dev/vitest/commit/57ae547de)
- **bun**:
  - Parsing of stack trace for bun runtime  -  by [@&#8203;nazarhussain](https://github.com/nazarhussain) in [#&#8203;9032](https://github.com/vitest-dev/vitest/issues/9032) [<samp>(f3ec6)</samp>](https://github.com/vitest-dev/vitest/commit/f3ec6fcb0)
- **core**:
  - Prevent starting new run when cancelling  -  by [@&#8203;AriPerkkio](https://github.com/AriPerkkio) in [#&#8203;8991](https://github.com/vitest-dev/vitest/issues/8991) [<samp>(eb98d)</samp>](https://github.com/vitest-dev/vitest/commit/eb98dd8fd)
- **pool**:
  - Prevent writing to closed worker  -  by [@&#8203;AriPerkkio](https://github.com/AriPerkkio) and [@&#8203;sheremet-va](https://github.com/sheremet-va) in [#&#8203;9023](https://github.com/vitest-dev/vitest/issues/9023) [<samp>(042c6)</samp>](https://github.com/vitest-dev/vitest/commit/042c60c80)
- **reporters**:
  - Report correct test run duration at the end  -  by [@&#8203;sheremet-va](https://github.com/sheremet-va) in [#&#8203;8969](https://github.com/vitest-dev/vitest/issues/8969) [<samp>(bc3a6)</samp>](https://github.com/vitest-dev/vitest/commit/bc3a6921e)
- **ui**:
  - Use execution time from ws reporter (`onFinished`)  -  by [@&#8203;userquin](https://github.com/userquin) in [#&#8203;8975](https://github.com/vitest-dev/vitest/issues/8975) [<samp>(f56dc)</samp>](https://github.com/vitest-dev/vitest/commit/f56dc0cc4)

#####     [View changes on GitHub](https://github.com/vitest-dev/vitest/compare/v4.0.9...v4.0.10)

### [`v4.0.9`](https://github.com/vitest-dev/vitest/releases/tag/v4.0.9)

[Compare Source](https://github.com/vitest-dev/vitest/compare/v4.0.8...v4.0.9)

#####    🚀 Experimental Features

- **expect**: Add Set support to toBeOneOf  -  by [@&#8203;tim-we](https://github.com/tim-we) and [@&#8203;sheremet-va](https://github.com/sheremet-va) in [#&#8203;8906](https://github.com/vitest-dev/vitest/issues/8906) [<samp>(a415d)</samp>](https://github.com/vitest-dev/vitest/commit/a415d0375)

#####    🐞 Bug Fixes

- **browser**: Add favicon icons to the browser mode ui  -  by [@&#8203;userquin](https://github.com/userquin) in [#&#8203;8972](https://github.com/vitest-dev/vitest/issues/8972) [<samp>(353ee)</samp>](https://github.com/vitest-dev/vitest/commit/353ee5bbc)
- **forks**: Increase worker start timeout  -  by [@&#8203;AriPerkkio](https://github.com/AriPerkkio) in [#&#8203;9027](https://github.com/vitest-dev/vitest/issues/9027) [<samp>(5e750)</samp>](https://github.com/vitest-dev/vitest/commit/5e750f4ba)
- **jsdom**: Cloned request is an instance of `Request`  -  by [@&#8203;sheremet-va](https://github.com/sheremet-va) in [#&#8203;8985](https://github.com/vitest-dev/vitest/issues/8985) [<samp>(506a9)</samp>](https://github.com/vitest-dev/vitest/commit/506a9fd0f)
- **ui**: Collect file/suite/test duration correctly  -  by [@&#8203;userquin](https://github.com/userquin) in [#&#8203;8976](https://github.com/vitest-dev/vitest/issues/8976) [<samp>(8016d)</samp>](https://github.com/vitest-dev/vitest/commit/8016da886)

#####     [View changes on GitHub](https://github.com/vitest-dev/vitest/compare/v4.0.8...v4.0.9)

### [`v4.0.8`](https://github.com/vitest-dev/vitest/releases/tag/v4.0.8)

[Compare Source](https://github.com/vitest-dev/vitest/compare/v4.0.7...v4.0.8)

#####    🐞 Bug Fixes

- Workaround `noExternal` merging bug on Vite 6  -  by [@&#8203;hi-ogawa](https://github.com/hi-ogawa) in [#&#8203;8950](https://github.com/vitest-dev/vitest/issues/8950) [<samp>(bcb13)</samp>](https://github.com/vitest-dev/vitest/commit/bcb132fd4)
- Missed context.d.ts file  -  by [@&#8203;termorey](https://github.com/termorey) in [#&#8203;8965](https://github.com/vitest-dev/vitest/issues/8965) [<samp>(9044d)</samp>](https://github.com/vitest-dev/vitest/commit/9044d9356)
- Incorrect error message for non-awaited `expect.element()`  -  by [@&#8203;StyleShit](https://github.com/StyleShit) in [#&#8203;8954](https://github.com/vitest-dev/vitest/issues/8954) [<samp>(9638d)</samp>](https://github.com/vitest-dev/vitest/commit/9638db0f3)
- **browser**: Cleanup frame-ancestors from CSP header at coverage middleware  -  by [@&#8203;userquin](https://github.com/userquin) in [#&#8203;8941](https://github.com/vitest-dev/vitest/issues/8941) [<samp>(1f730)</samp>](https://github.com/vitest-dev/vitest/commit/1f7303738)
- **deps**: Update all non-major dependencies  -  by [@&#8203;sheremet-va](https://github.com/sheremet-va) in [#&#8203;8636](https://github.com/vitest-dev/vitest/issues/8636) [<samp>(da8b9)</samp>](https://github.com/vitest-dev/vitest/commit/da8b93aa5)
- **forks**: Do not fail with Windows Defender enabled  -  by [@&#8203;sheremet-va](https://github.com/sheremet-va) in [#&#8203;8967](https://github.com/vitest-dev/vitest/issues/8967) [<samp>(c79f4)</samp>](https://github.com/vitest-dev/vitest/commit/c79f47c65)
- **runner**: Properly encode Uint8Array body in annotations  -  by [@&#8203;Livan-pro](https://github.com/Livan-pro) in [#&#8203;8951](https://github.com/vitest-dev/vitest/issues/8951) [<samp>(997ca)</samp>](https://github.com/vitest-dev/vitest/commit/997ca5a82)
- **spy**: Copy static properties if spy is initialised with `vi.fn()`, fix types for `vi.spyOn(obj, class)`  -  by [@&#8203;sheremet-va](https://github.com/sheremet-va) in [#&#8203;8956](https://github.com/vitest-dev/vitest/issues/8956) [<samp>(75e7f)</samp>](https://github.com/vitest-dev/vitest/commit/75e7fcc51)
- **webdriverio**: When no argument is passed to the .click interaction command, the webdriver command should also have no argument  -  by [@&#8203;julienw](https://github.com/julienw) in [#&#8203;8937](https://github.com/vitest-dev/vitest/issues/8937) [<samp>(069e6)</samp>](https://github.com/vitest-dev/vitest/commit/069e6db9b)

#####     [View changes on GitHub](https://github.com/vitest-dev/vitest/compare/v4.0.7...v4.0.8)

### [`v4.0.7`](https://github.com/vitest-dev/vitest/releases/tag/v4.0.7)

[Compare Source](https://github.com/vitest-dev/vitest/compare/v4.0.6...v4.0.7)

#####    🐞 Bug Fixes

- Bind `process` in case global is overwritten  -  by [@&#8203;AriPerkkio](https://github.com/AriPerkkio) in [#&#8203;8916](https://github.com/vitest-dev/vitest/issues/8916) [<samp>(6240d)</samp>](https://github.com/vitest-dev/vitest/commit/6240d51a6)
- Create environment once per worker with `isolate: false`  -  by [@&#8203;sheremet-va](https://github.com/sheremet-va) in [#&#8203;8915](https://github.com/vitest-dev/vitest/issues/8915) [<samp>(c9078)</samp>](https://github.com/vitest-dev/vitest/commit/c9078a26e)
- Add Locator as a possible element type in `toContainElement()` matcher  -  by [@&#8203;vitalybaev](https://github.com/vitalybaev) in [#&#8203;8910](https://github.com/vitest-dev/vitest/issues/8910) and [#&#8203;8927](https://github.com/vitest-dev/vitest/issues/8927) [<samp>(35a27)</samp>](https://github.com/vitest-dev/vitest/commit/35a27d4b3)
- **browser**: Inherit `isolate` option, deprecate `browser.isolate`/`browser.fileParallelism`  -  by [@&#8203;sheremet-va](https://github.com/sheremet-va) in [#&#8203;8890](https://github.com/vitest-dev/vitest/issues/8890) [<samp>(9d2b4)</samp>](https://github.com/vitest-dev/vitest/commit/9d2b4d501)
- **cli**: Parse `--execArgv` as array  -  by [@&#8203;AriPerkkio](https://github.com/AriPerkkio) in [#&#8203;8924](https://github.com/vitest-dev/vitest/issues/8924) [<samp>(751c3)</samp>](https://github.com/vitest-dev/vitest/commit/751c3926f)
- **jsdom**: Support `URL.createObjectURL`, `FormData.set(prop, blob)`  -  by [@&#8203;sheremet-va](https://github.com/sheremet-va) in [#&#8203;8935](https://github.com/vitest-dev/vitest/issues/8935) [<samp>(a1b73)</samp>](https://github.com/vitest-dev/vitest/commit/a1b7361ab)
- **pool**: Avoid `--require` argument when running in deno  -  by [@&#8203;pi0](https://github.com/pi0) in [#&#8203;8897](https://github.com/vitest-dev/vitest/issues/8897) [<samp>(d41fa)</samp>](https://github.com/vitest-dev/vitest/commit/d41fa742f)
- **typecheck**: Handle re-runs outside `tsc`  -  by [@&#8203;AriPerkkio](https://github.com/AriPerkkio) in [#&#8203;8920](https://github.com/vitest-dev/vitest/issues/8920) [<samp>(fdb2e)</samp>](https://github.com/vitest-dev/vitest/commit/fdb2e7982)

#####    🏎 Performance

- **pool**:
  - Sort test files by project by default  -  by [@&#8203;AriPerkkio](https://github.com/AriPerkkio) in [#&#8203;8914](https://github.com/vitest-dev/vitest/issues/8914) [<samp>(680a6)</samp>](https://github.com/vitest-dev/vitest/commit/680a612ea)
- **reporters**:
  - Optimize getting the tests stats  -  by [@&#8203;Connormiha](https://github.com/Connormiha) in [#&#8203;8908](https://github.com/vitest-dev/vitest/issues/8908) [<samp>(06d62)</samp>](https://github.com/vitest-dev/vitest/commit/06d6207fb)
  - Remove unnecessary `Array.from` call  -  by [@&#8203;Connormiha](https://github.com/Connormiha) in [#&#8203;8907](https://github.com/vitest-dev/vitest/issues/8907) [<samp>(b6014)</samp>](https://github.com/vitest-dev/vitest/commit/b60149b27)

#####     [View changes on GitHub](https://github.com/vitest-dev/vitest/compare/v4.0.6...v4.0.7)

### [`v4.0.6`](https://github.com/vitest-dev/vitest/releases/tag/v4.0.6)

[Compare Source](https://github.com/vitest-dev/vitest/compare/v4.0.5...v4.0.6)

#####    🐞 Bug Fixes

- Don't merge errors with different diffs for reporting  -  by [@&#8203;hi-ogawa](https://github.com/hi-ogawa) in [#&#8203;8871](https://github.com/vitest-dev/vitest/issues/8871) [<samp>(3e19f)</samp>](https://github.com/vitest-dev/vitest/commit/3e19f27d0)
- Do not throw when importing a type from an external package  -  by [@&#8203;sheremet-va](https://github.com/sheremet-va) in [#&#8203;8875](https://github.com/vitest-dev/vitest/issues/8875) [<samp>(7e6c3)</samp>](https://github.com/vitest-dev/vitest/commit/7e6c37ae5)
- Improve spying types  -  by [@&#8203;sheremet-va](https://github.com/sheremet-va) in [#&#8203;8878](https://github.com/vitest-dev/vitest/issues/8878) [<samp>(ca041)</samp>](https://github.com/vitest-dev/vitest/commit/ca041f51a)
- Reuse the same environment when `isolate` and `fileParallelism` are false  -  by [@&#8203;sheremet-va](https://github.com/sheremet-va) in [#&#8203;8889](https://github.com/vitest-dev/vitest/issues/8889) [<samp>(31706)</samp>](https://github.com/vitest-dev/vitest/commit/31706dfe5)
- **browser**:
  - Support module tracking  -  by [@&#8203;sheremet-va](https://github.com/sheremet-va) in [#&#8203;8877](https://github.com/vitest-dev/vitest/issues/8877) [<samp>(9e24a)</samp>](https://github.com/vitest-dev/vitest/commit/9e24a59f2)
  - Ensure setup files are re-evaluated on each test run  -  by [@&#8203;yjaaidi](https://github.com/yjaaidi) in [#&#8203;8883](https://github.com/vitest-dev/vitest/issues/8883) and [#&#8203;8884](https://github.com/vitest-dev/vitest/issues/8884) [<samp>(f50ea)</samp>](https://github.com/vitest-dev/vitest/commit/f50ea7a25)
- **coverage**:
  - Prevent filtering out virtual files before remapping to sources  -  by [@&#8203;AriPerkkio](https://github.com/AriPerkkio) in [#&#8203;8860](https://github.com/vitest-dev/vitest/issues/8860) [<samp>(e3b77)</samp>](https://github.com/vitest-dev/vitest/commit/e3b777550)
- **happy-dom**:
  - Properly teardown additional keys  -  by [@&#8203;sheremet-va](https://github.com/sheremet-va) in [#&#8203;8888](https://github.com/vitest-dev/vitest/issues/8888) [<samp>(10a06)</samp>](https://github.com/vitest-dev/vitest/commit/10a06d8c9)
- **jsdom**:
  - Pass down Node.js `FormData` to `Request`  -  by [@&#8203;sheremet-va](https://github.com/sheremet-va) in [#&#8203;8880](https://github.com/vitest-dev/vitest/issues/8880) [<samp>(197ca)</samp>](https://github.com/vitest-dev/vitest/commit/197caf2f9)

#####     [View changes on GitHub](https://github.com/vitest-dev/vitest/compare/v4.0.5...v4.0.6)

### [`v4.0.5`](https://github.com/vitest-dev/vitest/releases/tag/v4.0.5)

[Compare Source](https://github.com/vitest-dev/vitest/compare/v4.0.4...v4.0.5)

#####    🐞 Bug Fixes

- Respect `ssr.noExternal` when externalizing dependencies, fix Svelte and Astro  -  by [@&#8203;sheremet-va](https://github.com/sheremet-va) in [#&#8203;8862](https://github.com/vitest-dev/vitest/issues/8862) [<samp>(a4f86)</samp>](https://github.com/vitest-dev/vitest/commit/a4f86f1ba)
- Allow module in --config  -  by [@&#8203;sheremet-va](https://github.com/sheremet-va) in [#&#8203;8864](https://github.com/vitest-dev/vitest/issues/8864) [<samp>(b9521)</samp>](https://github.com/vitest-dev/vitest/commit/b9521e0c2)
- **browser**: Allow `Locator` type in selectOptions element parameter  -  by [@&#8203;rzzf](https://github.com/rzzf) and [@&#8203;sheremet-va](https://github.com/sheremet-va) in [#&#8203;8848](https://github.com/vitest-dev/vitest/issues/8848) [<samp>(7ee28)</samp>](https://github.com/vitest-dev/vitest/commit/7ee283c96)
- **module-runner**: Don't return node builtins for `getBuiltins` unconditionally  -  by [@&#8203;sapphi-red](https://github.com/sapphi-red) in [#&#8203;8863](https://github.com/vitest-dev/vitest/issues/8863) [<samp>(0e858)</samp>](https://github.com/vitest-dev/vitest/commit/0e858bab4)
- **pool**: Rename `groupId` to `groupOrder` in error message  -  by [@&#8203;Yohannfra](https://github.com/Yohannfra) in [#&#8203;8856](https://github.com/vitest-dev/vitest/issues/8856) [<samp>(b9aab)</samp>](https://github.com/vitest-dev/vitest/commit/b9aabf4e6)

#####    🏎 Performance

- Pass testfiles at once when `--no-isolate --maxWorkers=1`  -  by [@&#8203;AriPerkkio](https://github.com/AriPerkkio) in [#&#8203;8835](https://github.com/vitest-dev/vitest/issues/8835) [<samp>(584aa)</samp>](https://github.com/vitest-dev/vitest/commit/584aa7148)
- **expect**: Optimize checking the input type  -  by [@&#8203;Connormiha](https://github.com/Connormiha) in [#&#8203;8840](https://github.com/vitest-dev/vitest/issues/8840) [<samp>(06968)</samp>](https://github.com/vitest-dev/vitest/commit/0696898b4)

#####     [View changes on GitHub](https://github.com/vitest-dev/vitest/compare/v4.0.4...v4.0.5)

### [`v4.0.4`](https://github.com/vitest-dev/vitest/releases/tag/v4.0.4)

[Compare Source](https://github.com/vitest-dev/vitest/compare/v4.0.3...v4.0.4)

#####    🐞 Bug Fixes

- **browser**:
  - Correct typo  -  by [@&#8203;benmccann](https://github.com/benmccann) in [#&#8203;8796](https://github.com/vitest-dev/vitest/issues/8796) [<samp>(ede1f)</samp>](https://github.com/vitest-dev/vitest/commit/ede1f39d6)
  - Publish a missing context file for webdriverio  -  by [@&#8203;sheremet-va](https://github.com/sheremet-va) in [#&#8203;8824](https://github.com/vitest-dev/vitest/issues/8824) [<samp>(7c7b6)</samp>](https://github.com/vitest-dev/vitest/commit/7c7b6f0b1)
- **mocker**:
  - Support mocking builtins without `node:` prefix  -  by [@&#8203;sheremet-va](https://github.com/sheremet-va) in [#&#8203;8829](https://github.com/vitest-dev/vitest/issues/8829) [<samp>(06208)</samp>](https://github.com/vitest-dev/vitest/commit/06208d30b)
- **pool**:
  - Runner's error listener causing `MaxListenersExceededWarning`  -  by [@&#8203;AriPerkkio](https://github.com/AriPerkkio) in [#&#8203;8820](https://github.com/vitest-dev/vitest/issues/8820) [<samp>(d1bff)</samp>](https://github.com/vitest-dev/vitest/commit/d1bff3bb3)
  - Capture workers `stdio` to logger  -  by [@&#8203;AriPerkkio](https://github.com/AriPerkkio) in [#&#8203;8809](https://github.com/vitest-dev/vitest/issues/8809) [<samp>(fb95f)</samp>](https://github.com/vitest-dev/vitest/commit/fb95fc736)
- **spy**:
  - Allow classes in `vi.mocked` utility  -  by [@&#8203;sheremet-va](https://github.com/sheremet-va) in [#&#8203;8839](https://github.com/vitest-dev/vitest/issues/8839) [<samp>(f8756)</samp>](https://github.com/vitest-dev/vitest/commit/f87568d64)
- **worker**:
  - Rpc listener leak when `isolate: false`  -  by [@&#8203;AriPerkkio](https://github.com/AriPerkkio) in [#&#8203;8821](https://github.com/vitest-dev/vitest/issues/8821) [<samp>(573dc)</samp>](https://github.com/vitest-dev/vitest/commit/573dc06fe)

#####    🏎 Performance

- **utils**: Optimized reducer to avoid creating new objects  -  by [@&#8203;Connormiha](https://github.com/Connormiha) in [#&#8203;8818](https://github.com/vitest-dev/vitest/issues/8818) [<samp>(d19ce)</samp>](https://github.com/vitest-dev/vitest/commit/d19cece3a)

#####     [View changes on GitHub](https://github.com/vitest-dev/vitest/compare/v4.0.3...v4.0.4)

### [`v4.0.3`](https://github.com/vitest-dev/vitest/releases/tag/v4.0.3)

[Compare Source](https://github.com/vitest-dev/vitest/compare/v4.0.2...v4.0.3)

#####    🐞 Bug Fixes

- Preserve reporter options from config when CLI reporters override them  -  by [@&#8203;Copilot](https://github.com/Copilot) and **sheremet-va** in [#&#8203;8794](https://github.com/vitest-dev/vitest/issues/8794) [<samp>(15552)</samp>](https://github.com/vitest-dev/vitest/commit/155521a85)
- **browser**: More stable in-source testing validation  -  by [@&#8203;sheremet-va](https://github.com/sheremet-va) in [#&#8203;8793](https://github.com/vitest-dev/vitest/issues/8793) [<samp>(62297)</samp>](https://github.com/vitest-dev/vitest/commit/622977e61)
- **happy-dom**: Support fetch globals  -  by [@&#8203;sheremet-va](https://github.com/sheremet-va) in [#&#8203;8791](https://github.com/vitest-dev/vitest/issues/8791) [<samp>(0fb74)</samp>](https://github.com/vitest-dev/vitest/commit/0fb74bd3b)
- **init**: Use correct jsx/tsx extension  -  by [@&#8203;sheremet-va](https://github.com/sheremet-va) in [#&#8203;8792](https://github.com/vitest-dev/vitest/issues/8792) [<samp>(abc04)</samp>](https://github.com/vitest-dev/vitest/commit/abc046f95)

#####     [View changes on GitHub](https://github.com/vitest-dev/vitest/compare/v4.0.2...v4.0.3)

### [`v4.0.2`](https://github.com/vitest-dev/vitest/releases/tag/v4.0.2)

[Compare Source](https://github.com/vitest-dev/vitest/compare/v4.0.1...v4.0.2)

#####    🐞 Bug Fixes

- **browser**:
  - Don't print the deprecation notice in node\_modules  -  by [@&#8203;sheremet-va](https://github.com/sheremet-va) in [#&#8203;8779](https://github.com/vitest-dev/vitest/issues/8779) [<samp>(588f7)</samp>](https://github.com/vitest-dev/vitest/commit/588f76858)
- **pool**:
  - Assign envs before running tests to keep in sync with process.env  -  by [@&#8203;sheremet-va](https://github.com/sheremet-va) in [#&#8203;8769](https://github.com/vitest-dev/vitest/issues/8769) [<samp>(26ce8)</samp>](https://github.com/vitest-dev/vitest/commit/26ce88db6)
- **spy**:
  - Properly inherit implementation's `length`  -  by [@&#8203;sheremet-va](https://github.com/sheremet-va) in [#&#8203;8778](https://github.com/vitest-dev/vitest/issues/8778) [<samp>(d4c2b)</samp>](https://github.com/vitest-dev/vitest/commit/d4c2b280b)
  - Reset spies if both `restoreMocks` and `mockReset` are set in the config  -  by [@&#8203;sheremet-va](https://github.com/sheremet-va) in [#&#8203;8781](https://github.com/vitest-dev/vitest/issues/8781) [<samp>(2eedb)</samp>](https://github.com/vitest-dev/vitest/commit/2eedbce76)

#####     [View changes on GitHub](https://github.com/vitest-dev/vitest/compare/v4.0.1...v4.0.2)

### [`v4.0.1`](https://github.com/vitest-dev/vitest/releases/tag/v4.0.1)

[Compare Source](https://github.com/vitest-dev/vitest/compare/v4.0.0...v4.0.1)

#####    🐞 Bug Fixes

- Move the `getBuiltins` check  -  by [@&#8203;sheremet-va](https://github.com/sheremet-va) in [#&#8203;8765](https://github.com/vitest-dev/vitest/issues/8765) [<samp>(81000)</samp>](https://github.com/vitest-dev/vitest/commit/81000631d)
- **pool**: Don't teardown the communication channel too soon if something is running after the test  -  by [@&#8203;sheremet-va](https://github.com/sheremet-va) in [#&#8203;8767](https://github.com/vitest-dev/vitest/issues/8767) [<samp>(3fae7)</samp>](https://github.com/vitest-dev/vitest/commit/3fae73e2e)

#####     [View changes on GitHub](https://github.com/vitest-dev/vitest/compare/v4.0.0...v4.0.1)

### [`v4.0.0`](https://github.com/vitest-dev/vitest/releases/tag/v4.0.0)

[Compare Source](https://github.com/vitest-dev/vitest/compare/v3.2.4...v4.0.0)

Vitest 4.0 is out!

To stay updated, read our [blog post](https://vitest.dev/blog/vitest-4) and check the [migration guide](https://vitest.dev/guide/migration).

#####    🚨 Breaking Changes

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

#####    🚀 Features

- Provide entity to onConsoleLog  -  by [@&#8203;sheremet-va](https://github.com/sheremet-va) in [#&#8203;8159](https://github.com/vitest-dev/vitest/issues/8159) [<samp>(437d4)</samp>](https://github.com/vitest-dev/vitest/commit/437d461aa)
- Add `onUnhandledError` callback  -  by [@&#8203;sheremet-va](https://github.com/sheremet-va) in [#&#8203;8162](https://github.com/vitest-dev/vitest/issues/8162) [<samp>(924cb)</samp>](https://github.com/vitest-dev/vitest/commit/924cb6961)
- Add spy option to vi.mockObject  -  by [@&#8203;rChaoz](https://github.com/rChaoz) in [#&#8203;8285](https://github.com/vitest-dev/vitest/issues/8285) [<samp>(81d76)</samp>](https://github.com/vitest-dev/vitest/commit/81d7601e4)
- Don't use vite-node in coverage packages  -  by [@&#8203;sheremet-va](https://github.com/sheremet-va) [<samp>(ffdb4)</samp>](https://github.com/vitest-dev/vitest/commit/ffdb4d5fd)
- Clickable dashboard numbers  -  by [@&#8203;shairez](https://github.com/shairez) in [#&#8203;7406](https://github.com/vitest-dev/vitest/issues/7406) [<samp>(2344c)</samp>](https://github.com/vitest-dev/vitest/commit/2344c1f6e)
- Display test "path" when filtering  -  by [@&#8203;userquin](https://github.com/userquin) in [#&#8203;8547](https://github.com/vitest-dev/vitest/issues/8547) [<samp>(2e491)</samp>](https://github.com/vitest-dev/vitest/commit/2e4918954)
- Introduce separate packages for browser mode providers  -  by [@&#8203;sheremet-va](https://github.com/sheremet-va) in [#&#8203;8629](https://github.com/vitest-dev/vitest/issues/8629) [<samp>(0dc93)</samp>](https://github.com/vitest-dev/vitest/commit/0dc93ea98)
- Add hooks with type-safe extra context to TestAPI  -  by [@&#8203;ysfaran](https://github.com/ysfaran) in [#&#8203;8623](https://github.com/vitest-dev/vitest/issues/8623) [<samp>(6b21c)</samp>](https://github.com/vitest-dev/vitest/commit/6b21cfe55)
- Support `expect.assert` for type narrowing  -  by [@&#8203;sheremet-va](https://github.com/sheremet-va) in [#&#8203;8695](https://github.com/vitest-dev/vitest/issues/8695) [<samp>(fe589)</samp>](https://github.com/vitest-dev/vitest/commit/fe5895d2b)
- Add `displayAnnotations` option to `github-options`  -  by [@&#8203;sheremet-va](https://github.com/sheremet-va) in [#&#8203;8706](https://github.com/vitest-dev/vitest/issues/8706) [<samp>(4a66d)</samp>](https://github.com/vitest-dev/vitest/commit/4a66df625)
- Add schema validation matchers  -  by [@&#8203;zirkelc](https://github.com/zirkelc) in [#&#8203;8527](https://github.com/vitest-dev/vitest/issues/8527) [<samp>(c0b25)</samp>](https://github.com/vitest-dev/vitest/commit/c0b250e5c)
- Add a way to dump transformed content  -  by [@&#8203;sheremet-va](https://github.com/sheremet-va) in [#&#8203;8711](https://github.com/vitest-dev/vitest/issues/8711) [<samp>(931c0)</samp>](https://github.com/vitest-dev/vitest/commit/931c0ee63)
- **api**:
  - Expose `experimental_parseSpecifications`  -  by [@&#8203;sheremet-va](https://github.com/sheremet-va) in [#&#8203;8408](https://github.com/vitest-dev/vitest/issues/8408) [<samp>(fdeb2)</samp>](https://github.com/vitest-dev/vitest/commit/fdeb2f482)
  - Expose Vitest watcher  -  by [@&#8203;sheremet-va](https://github.com/sheremet-va) in [#&#8203;8413](https://github.com/vitest-dev/vitest/issues/8413) [<samp>(aaa6e)</samp>](https://github.com/vitest-dev/vitest/commit/aaa6e6512)
  - Add `enableCoverage` and `disableCoverage` methods  -  by [@&#8203;sheremet-va](https://github.com/sheremet-va) and [@&#8203;AriPerkkio](https://github.com/AriPerkkio) in [#&#8203;8412](https://github.com/vitest-dev/vitest/issues/8412) [<samp>(61eb7)</samp>](https://github.com/vitest-dev/vitest/commit/61eb7dd9c)
  - Add `getGlobalTestNamePattern` method  -  by [@&#8203;sheremet-va](https://github.com/sheremet-va) in [#&#8203;8438](https://github.com/vitest-dev/vitest/issues/8438) [<samp>(bdb70)</samp>](https://github.com/vitest-dev/vitest/commit/bdb7067f1)
  - Add `relativeModuleId` to `TestModule`  -  by [@&#8203;sheremet-va](https://github.com/sheremet-va) in [#&#8203;8505](https://github.com/vitest-dev/vitest/issues/8505) [<samp>(3be09)</samp>](https://github.com/vitest-dev/vitest/commit/3be0986aa)
  - Add `getSeed` method  -  by [@&#8203;sheremet-va](https://github.com/sheremet-va) in [#&#8203;8592](https://github.com/vitest-dev/vitest/issues/8592) [<samp>(438c4)</samp>](https://github.com/vitest-dev/vitest/commit/438c44e7f)
- **browser**:
  - Support `toBeInViewport` utility method to assert element is in viewport or not  -  by [@&#8203;Shinyaigeek](https://github.com/Shinyaigeek) in [#&#8203;8234](https://github.com/vitest-dev/vitest/issues/8234) [<samp>(ceed5)</samp>](https://github.com/vitest-dev/vitest/commit/ceed5b622)
  - Add qwik to the `vitest init` cli command  -  by [@&#8203;thejackshelton](https://github.com/thejackshelton) in [#&#8203;8330](https://github.com/vitest-dev/vitest/issues/8330) [<samp>(1638b)</samp>](https://github.com/vitest-dev/vitest/commit/1638b44e8)
  - Introduce `toMatchScreenshot` for Visual Regression Testing  -  by [@&#8203;macarie](https://github.com/macarie) in [#&#8203;8041](https://github.com/vitest-dev/vitest/issues/8041) [<samp>(d45f9)</samp>](https://github.com/vitest-dev/vitest/commit/d45f964c1)
  - Add `trackUnhandledErrors` option  -  by [@&#8203;sheremet-va](https://github.com/sheremet-va) in [#&#8203;8386](https://github.com/vitest-dev/vitest/issues/8386) [<samp>(c0ec0)</samp>](https://github.com/vitest-dev/vitest/commit/c0ec08a90)
  - Support iframe locator with playwright provider  -  by [@&#8203;sheremet-va](https://github.com/sheremet-va) in [#&#8203;8016](https://github.com/vitest-dev/vitest/issues/8016) [<samp>(57b2c)</samp>](https://github.com/vitest-dev/vitest/commit/57b2cca2e)
  - Add `length` property to locators, `toHaveLength` now accepts locators  -  by [@&#8203;sheremet-va](https://github.com/sheremet-va) in [#&#8203;8512](https://github.com/vitest-dev/vitest/issues/8512) [<samp>(2308c)</samp>](https://github.com/vitest-dev/vitest/commit/2308cbf13)
  - Support playwright tracing  -  by [@&#8203;sheremet-va](https://github.com/sheremet-va) in [#&#8203;8584](https://github.com/vitest-dev/vitest/issues/8584) [<samp>(1aac5)</samp>](https://github.com/vitest-dev/vitest/commit/1aac59cd2)
  - Expose `options` on `BrowserProviderOption`  -  by [@&#8203;sheremet-va](https://github.com/sheremet-va) in [#&#8203;8609](https://github.com/vitest-dev/vitest/issues/8609) [<samp>(0d0e5)</samp>](https://github.com/vitest-dev/vitest/commit/0d0e5cdf6)
  - Support `--inspect` option in webdriverio  -  by [@&#8203;sheremet-va](https://github.com/sheremet-va) in [#&#8203;8613](https://github.com/vitest-dev/vitest/issues/8613) [<samp>(38adc)</samp>](https://github.com/vitest-dev/vitest/commit/38adc86cf)
  - Support custom screenshot comparison algorithms  -  by [@&#8203;macarie](https://github.com/macarie) in [#&#8203;8687](https://github.com/vitest-dev/vitest/issues/8687) [<samp>(e63b1)</samp>](https://github.com/vitest-dev/vitest/commit/e63b17efc)
- **coverage**:
  - `autoUpdate` to support percentage formatting  -  by [@&#8203;Battjmo](https://github.com/Battjmo) and [@&#8203;AriPerkkio](https://github.com/AriPerkkio) in [#&#8203;8456](https://github.com/vitest-dev/vitest/issues/8456) [<samp>(99e01)</samp>](https://github.com/vitest-dev/vitest/commit/99e016bec)
- **expect**:
  - Support `toBeNullable` expect function to check provided value is nullish  -  by [@&#8203;Shinyaigeek](https://github.com/Shinyaigeek) and [@&#8203;sheremet-va](https://github.com/sheremet-va) in [#&#8203;8294](https://github.com/vitest-dev/vitest/issues/8294) [<samp>(eeec5)</samp>](https://github.com/vitest-dev/vitest/commit/eeec501de)
- **mocker**:
  - Add `automocker` entry  -  by [@&#8203;sheremet-va](https://github.com/sheremet-va) in [#&#8203;8301](https://github.com/vitest-dev/vitest/issues/8301) [<samp>(e9c92)</samp>](https://github.com/vitest-dev/vitest/commit/e9c928252)

#####    🐞 Bug Fixes

- Allow overriding globals in types  -  by [@&#8203;sheremet-va](https://github.com/sheremet-va) in [#&#8203;8215](https://github.com/vitest-dev/vitest/issues/8215) [<samp>(2248b)</samp>](https://github.com/vitest-dev/vitest/commit/2248b06d4)
- Remove unused dependencies  -  by [@&#8203;AriPerkkio](https://github.com/AriPerkkio) in [#&#8203;8184](https://github.com/vitest-dev/vitest/issues/8184) [<samp>(feadc)</samp>](https://github.com/vitest-dev/vitest/commit/feadc60af)
- Distribute test files to shards more evenly  -  by [@&#8203;Shinyaigeek](https://github.com/Shinyaigeek) and [@&#8203;AriPerkkio](https://github.com/AriPerkkio) in [#&#8203;8288](https://github.com/vitest-dev/vitest/issues/8288) [<samp>(7b489)</samp>](https://github.com/vitest-dev/vitest/commit/7b489959a)
- Use suite's timeout when `test.extend`  -  by [@&#8203;AriPerkkio](https://github.com/AriPerkkio) in [#&#8203;8278](https://github.com/vitest-dev/vitest/issues/8278) [<samp>(43977)</samp>](https://github.com/vitest-dev/vitest/commit/43977c2b8)
- Support snapshot with no object key sorting  -  by [@&#8203;hi-ogawa](https://github.com/hi-ogawa) and [@&#8203;sheremet-va](https://github.com/sheremet-va) in [#&#8203;8136](https://github.com/vitest-dev/vitest/issues/8136) [<samp>(e85e3)</samp>](https://github.com/vitest-dev/vitest/commit/e85e396f0)
- Annotation location always points to the test file  -  by [@&#8203;sheremet-va](https://github.com/sheremet-va) in [#&#8203;8315](https://github.com/vitest-dev/vitest/issues/8315) [<samp>(88071)</samp>](https://github.com/vitest-dev/vitest/commit/88071a8f2)
- Add `--changed` flag support to `vitest list` command  -  by [@&#8203;haakonjackfloat](https://github.com/haakonjackfloat) in [#&#8203;8270](https://github.com/vitest-dev/vitest/issues/8270) and [#&#8203;8272](https://github.com/vitest-dev/vitest/issues/8272) [<samp>(e71a5)</samp>](https://github.com/vitest-dev/vitest/commit/e71a5d0ec)
- Prevent rpc timeout on slow thread blocking synchronous methods  -  by [@&#8203;AriPerkkio](https://github.com/AriPerkkio) and [@&#8203;sheremet-va](https://github.com/sheremet-va) in [#&#8203;8297](https://github.com/vitest-dev/vitest/issues/8297) [<samp>(bea87)</samp>](https://github.com/vitest-dev/vitest/commit/bea874610)
- Forbid setting environment to `browser`  -  by [@&#8203;sheremet-va](https://github.com/sheremet-va) in [#&#8203;8334](https://github.com/vitest-dev/vitest/issues/8334) [<samp>(0417a)</samp>](https://github.com/vitest-dev/vitest/commit/0417a2c1a)
- Invalidate modules in all module graphs when the file is changed  -  by [@&#8203;sheremet-va](https://github.com/sheremet-va) in [#&#8203;8352](https://github.com/vitest-dev/vitest/issues/8352) [<samp>(94ab3)</samp>](https://github.com/vitest-dev/vitest/commit/94ab392b3)
- Screenshot masks with Playwright provider  -  by [@&#8203;macarie](https://github.com/macarie) in [#&#8203;8357](https://git…