Skip to content

Comments

fix(pool): terminate workers on CTRL+c forceful exits#9140

Merged
sheremet-va merged 4 commits intovitest-dev:mainfrom
AriPerkkio:fix/hanging-workers
Dec 2, 2025
Merged

fix(pool): terminate workers on CTRL+c forceful exits#9140
sheremet-va merged 4 commits intovitest-dev:mainfrom
AriPerkkio:fix/hanging-workers

Conversation

@AriPerkkio
Copy link
Member

@AriPerkkio AriPerkkio commented Dec 1, 2025

Description

Resolves #9123

Please don't delete this checklist! Before submitting the PR, please make sure you do the following:

  • It's really useful if your PR references an issue where it is discussed ahead of time. If the feature is substantial or introduces breaking changes without a discussion, PR might be closed.
  • Ideally, include a test that fails without this PR but passes with it.
  • Please, don't make changes to pnpm-lock.yaml unless you introduce a new test example.
  • Please check Allow edits by maintainers to make review process faster. Note that this option is not available for repositories that are owned by Github organizations.

Tests

  • Run the tests with pnpm test:ci.

Documentation

  • If you introduce new functionality, document it. You can run documentation with pnpm run docs command.

Changesets

  • Changes in changelog are generated from PR name. Please, make sure that it explains your changes in an understandable manner. Please, prefix changeset messages with feat:, fix:, perf:, docs:, or chore:.

@netlify
Copy link

netlify bot commented Dec 1, 2025

Deploy Preview for vitest-dev ready!

Built without sensitive environment variables

Name Link
🔨 Latest commit 44b0995
🔍 Latest deploy log https://app.netlify.com/projects/vitest-dev/deploys/692daa7f43f6f90008822514
😎 Deploy Preview https://deploy-preview-9140--vitest-dev.netlify.app
📱 Preview on mobile
Toggle QR Code...

QR Code

Use your smartphone camera to open QR code link.

To edit notification comments on pull requests, go to your Netlify project configuration.

@AriPerkkio AriPerkkio marked this pull request as ready for review December 1, 2025 20:40
Copy link
Contributor

@hi-ogawa hi-ogawa left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Looks good to me.

With execSync example #9123 (comment), CTRL+c x 2 seems to leave sleep 10s process becoming zombie, but I guess this is expected?

@AriPerkkio
Copy link
Member Author

AriPerkkio commented Dec 2, 2025

With execSync example #9123 (comment), CTRL+c x 2 seems to leave sleep 10s process becoming zombie, but I guess this is expected?

Yes. These changes will make sure the Vitest test runner worker is terminated. If the worker side is not fully blocked, I would expect Node to pass kill signals to any running code. execSync however blocks everything so there's nothing to do.

Minimal repro without Vitest. Top terminal runs the command, middle terminal shows processes matching example name, bottom terminal shows processes matching sleep command. Notice how example nested is left zombie after example main and example child terminate:

node-zombies.webm
repro code
import { execSync, fork } from "node:child_process";
import { setTimeout } from "node:timers/promises";
import { fileURLToPath } from "node:url";

const isMainThread = process.send === undefined;
const isChildProcess = process.send !== undefined;
const isNestedChildProcess = process.env.NESTED_CHILD_PROCESS;

if (isMainThread) {
  process.title = "example main";
  const child = fork(fileURLToPath(import.meta.url));

  await setTimeout(2_000);
  console.log("Terminating child process")
  child.kill();
}

if (isChildProcess && !isNestedChildProcess) {
  process.title = "example child";
  fork(fileURLToPath(import.meta.url), { env: { NESTED_CHILD_PROCESS: '1' }});
}

if (isNestedChildProcess) {
  process.title = "example nested";
  execSync("sleep 10s");
}

@sheremet-va sheremet-va merged commit d57d8bf into vitest-dev:main Dec 2, 2025
14 of 16 checks passed
@AriPerkkio AriPerkkio deleted the fix/hanging-workers branch December 2, 2025 12:11
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…
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Cancelling with CTRL+c leaves zombie processes of forks workers

3 participants