Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

feat!: support running tests using VM context #3203

Merged
merged 87 commits into from
Aug 1, 2023

Conversation

sheremet-va
Copy link
Member

@sheremet-va sheremet-va commented Apr 17, 2023

aka bring all Jest (V8) bugs into Vitest

The idea is to have a separate pool that will spawn workers with tinypool, but they will not be isolated. Isolation is introduced by vm.createContext inside the worker. For this, we need to implement our own import handling. I think we should keep our __vitest_ssr_import__ because it is the only way to support both ESM/CJS in the same file in wrongly bundled dependencies.

This is an optional pool! You need to opt-in to use it:

  • via CLI argument: --experimental-vm-threads (this will throw an error, if you use --threads or --browser at the same time)

  • via config option:

    export default {
      test: {
        experimentalVmThreads: true,
      }
    }
  • run only a subset of files using this pool with poolMatchGlob

    export default {
      test: {
        threads: true,
        // all test files will be running like they did before,
        // except for the tests in "fast-leaking-tests" directory 
        poolMatchGlob: [
          ['**/fast-leaking-tests/*.spec.ts', 'experimentalVmThreads'],
        ]
      }
    }

You also cannot disable isolation when using experimentalVm, because this doesn't make sense with this pool. If you don't need isolation, use threads or child_process directly.

vm has a notable memory leak problem, so we are also introducing experimentalVmWorkerMemoryLimit option (works like Jest's workerIdleMemoryLimit to destroy the worker before it reaches this point. It is set to max_heap/number_of_workers by default. You might have better performance if you tweak this value manually.

--experimental-vm-child-process (experimentalVmChildProcess) will be implemented in a separate PR.

Pros:

  • Tests go brrrrr (fast)

Cons:


Breaking changes:

  • the environment is now loaded via the native Node.js mechanism, it should be transformed before the file is passed down to Vitest
  • all environments always require transformMode (web or ssr). If transform mode is not specified, it will throw an error
  • "VitestExecutor" is moved from "vitest/node" to "vitest/execute" entry point

@stackblitz
Copy link

stackblitz bot commented Apr 17, 2023

Review PR in StackBlitz Codeflow Run & review this pull request in StackBlitz Codeflow.

@sheremet-va sheremet-va marked this pull request as draft April 17, 2023 21:49
@ghiscoding
Copy link
Contributor

will that help with --no-threads (child process) which is extremely slow on Windows? or is that unrelated?

@sheremet-va
Copy link
Member Author

will that help with --no-threads (child process) which is extremely slow on Windows? or is that unrelated?

If you need speed, don't use no-threads

Current version of this PR uses only workers to run tests in parallel. Will probably add a way to run child_process also.

@ghiscoding
Copy link
Contributor

ghiscoding commented Apr 18, 2023

If you need speed, don't use no-threads

Yeah I wish but in Lerna-Lite (a fork of Lerna), it uses a ton of process.chdir(cwd) and child process and it seems that --no-threads is the only way to go about it (as per #1436)

Current version of this PR uses only workers to run tests in parallel. Will probably add a way to run child_process also.

that would be really nice and I wonder if that would help with my opened issue #3129 that I still have and found no fix yet (apart from not running the test one at a time). I did migrate from Jest to Vitest regardless

@silverwind
Copy link
Contributor

With this third runner environment option, I wonder if the config should be refactored to replace threads with something like runner: 'worker_threads' | 'child_process' | 'vm' as I it seems they are mutually exclusive, or can they be combined?

@sheremet-va
Copy link
Member Author

With this third runner environment option, I wonder if the config should be refactored to replace threads with something like runner: 'worker_threads' | 'child_process' | 'vm' as I it seems they are mutually exclusive, or can they be combined?

Yes, I've been thinking about a similar approach. But technically it should also contain "browser". The list might be:

  • threads
  • child_process
  • browser
  • experimentalVmThreads
  • experimentalVmChildProcess

We decided against it for now to keep the same API. The --experimental-vm-threads --threads will throw an error.

@silverwind
Copy link
Contributor

What's a browser environment? Some integration with playwright? 😆

@sheremet-va
Copy link
Member Author

What's a browser environment? Some integration with playwright? 😆

https://vitest.dev/guide/browser.html

@silverwind
Copy link
Contributor

Thanks, that does sound awesome indeed to be finally able to stop fighting jsdom 👍

@sheremet-va
Copy link
Member Author

I think we also need to implement child_process pool to reuse it for vm-child-process and child_process pools 🤔

@netlify
Copy link

netlify bot commented Jul 6, 2023

Deploy Preview for fastidious-cascaron-4ded94 canceled.

Name Link
🔨 Latest commit 82ae1a6
🔍 Latest deploy log https://app.netlify.com/sites/fastidious-cascaron-4ded94/deploys/64c7ee70227853000826f971

@sheremet-va sheremet-va changed the title feat: support running tests using VM context feat!: support running tests using VM context Jul 11, 2023
This was referenced Dec 4, 2023
renovate bot added a commit to kamilkisiela/dependency-graph that referenced this pull request Jul 2, 2024
[![Mend
Renovate](https://app.renovatebot.com/images/banner.svg)](https://renovatebot.com)

This PR contains the following updates:

| Package | Change | Age | Adoption | Passing | Confidence |
|---|---|---|---|---|---|
| [vitest](https://togithub.com/vitest-dev/vitest)
([source](https://togithub.com/vitest-dev/vitest/tree/HEAD/packages/vitest))
| [`0.32.2` ->
`0.34.6`](https://renovatebot.com/diffs/npm/vitest/0.32.2/0.34.6) |
[![age](https://developer.mend.io/api/mc/badges/age/npm/vitest/0.34.6?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/vitest/0.34.6?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/vitest/0.32.2/0.34.6?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/vitest/0.32.2/0.34.6?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|

---

### Release Notes

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

###
[`v0.34.6`](https://togithub.com/vitest-dev/vitest/releases/tag/v0.34.6)

[Compare
Source](https://togithub.com/vitest-dev/vitest/compare/v0.34.5...v0.34.6)

#####    🐞 Bug Fixes

- Overwrite global URL with environment's  -  by
[@&#8203;sheremet-va](https://togithub.com/sheremet-va) in
[vitest-dev/vitest#4164
[<samp>(cbe13)</samp>](https://togithub.com/vitest-dev/vitest/commit/cbe133da)
- Correctly resolve external dependencies loaded by custom environments
 -  by [@&#8203;sheremet-va](https://togithub.com/sheremet-va) in
[vitest-dev/vitest#4196
[<samp>(e3408)</samp>](https://togithub.com/vitest-dev/vitest/commit/e340802f)
- **runner**: The fixture of `test.extend` should be init once time in
all test  -  by [@&#8203;Dunqing](https://togithub.com/Dunqing) in
[vitest-dev/vitest#4168
[<samp>(730b2)</samp>](https://togithub.com/vitest-dev/vitest/commit/730b29ec)

#####     [View changes on
GitHub](https://togithub.com/vitest-dev/vitest/compare/v0.34.5...v0.34.6)

###
[`v0.34.5`](https://togithub.com/vitest-dev/vitest/releases/tag/v0.34.5)

[Compare
Source](https://togithub.com/vitest-dev/vitest/compare/v0.34.4...v0.34.5)

#####    🚀 Features

-   **config**:
- Add `diff` option  -  by
[@&#8203;fenghan34](https://togithub.com/fenghan34) and
[@&#8203;sheremet-va](https://togithub.com/sheremet-va) in
[vitest-dev/vitest#4063
[<samp>(b50cf)</samp>](https://togithub.com/vitest-dev/vitest/commit/b50cf7ad)
-   **coverage**:
- Add `coverage['100']` to istanbul provider  -  by
[@&#8203;marcelobotega](https://togithub.com/marcelobotega) in
[vitest-dev/vitest#4109
[<samp>(a7e09)</samp>](https://togithub.com/vitest-dev/vitest/commit/a7e09939)
-   **vitest**:
- Support `vi.waitFor` method  -  by
[@&#8203;Dunqing](https://togithub.com/Dunqing) and
[@&#8203;sheremet-va](https://togithub.com/sheremet-va) in
[vitest-dev/vitest#4113
[<samp>(d79cb)</samp>](https://togithub.com/vitest-dev/vitest/commit/d79cb44b)
- Allow using unprocessed environment files  -  by
[@&#8203;sheremet-va](https://togithub.com/sheremet-va) in
[vitest-dev/vitest#4098
[<samp>(1aee1)</samp>](https://togithub.com/vitest-dev/vitest/commit/1aee13af)
- Support `vi.waitUntil` method  -  by
[@&#8203;Dunqing](https://togithub.com/Dunqing) and
[@&#8203;sheremet-va](https://togithub.com/sheremet-va) in
[vitest-dev/vitest#4129
[<samp>(e0ac9)</samp>](https://togithub.com/vitest-dev/vitest/commit/e0ac97cf)

#####    🐞 Bug Fixes

- Update HappyDOMOptions to be compatible with v12  -  by
[@&#8203;anthonyblond](https://togithub.com/anthonyblond) in
[vitest-dev/vitest#4135
[<samp>(e8797)</samp>](https://togithub.com/vitest-dev/vitest/commit/e8797534)
- Print value shape when .resolves and .rejects fails  -  by
[@&#8203;sheremet-va](https://togithub.com/sheremet-va) in
[vitest-dev/vitest#4137
[<samp>(e649d)</samp>](https://togithub.com/vitest-dev/vitest/commit/e649d78f)
-   **docs**:
- Fix lint errors on onConsoleLog example  -  by
[@&#8203;marcelobotega](https://togithub.com/marcelobotega) in
[vitest-dev/vitest#4116
[<samp>(ba1e7)</samp>](https://togithub.com/vitest-dev/vitest/commit/ba1e7335)
-   **expect**:
- Improve the error message when nothing is thrown when testing
`toThrow`  -  by [@&#8203;Dunqing](https://togithub.com/Dunqing) in
[vitest-dev/vitest#3979
[<samp>(725a0)</samp>](https://togithub.com/vitest-dev/vitest/commit/725a0146)
-   **happy-dom**:
- Catch errors in happy-dom  -  by
[@&#8203;capricorn86](https://togithub.com/capricorn86) in
[vitest-dev/vitest#4140
[<samp>(c21c0)</samp>](https://togithub.com/vitest-dev/vitest/commit/c21c0efa)
-   **runner**:
- Restore leading space in `testNamePattern`  -  by
[@&#8203;segrey](https://togithub.com/segrey) in
[vitest-dev/vitest#4103
and
[vitest-dev/vitest#4104
[<samp>(3c305)</samp>](https://togithub.com/vitest-dev/vitest/commit/3c305857)
- `test.extend` doesn't work in hooks without test  -  by
[@&#8203;Dunqing](https://togithub.com/Dunqing) in
[vitest-dev/vitest#4065
[<samp>(175c7)</samp>](https://togithub.com/vitest-dev/vitest/commit/175c752d)
-   **snapshot**:
- Support mix of normal/with placeholders snapshots  -  by
[@&#8203;RobertPechaCZ](https://togithub.com/RobertPechaCZ) in
[vitest-dev/vitest#4118
[<samp>(01e01)</samp>](https://togithub.com/vitest-dev/vitest/commit/01e01bfc)
-   **ui**:
- Correctly render ansi diff  -  by
[@&#8203;so1ve](https://togithub.com/so1ve) and
[@&#8203;sheremet-va](https://togithub.com/sheremet-va) in
[vitest-dev/vitest#3810
[<samp>(8c315)</samp>](https://togithub.com/vitest-dev/vitest/commit/8c3152fa)
-   **vite-node**:
- Export `SourceMapInput` to fix CYCLIC_CROSS_CHUNK_REEXPORT  -  by
[@&#8203;Dunqing](https://togithub.com/Dunqing) in
[vitest-dev/vitest#4128
[<samp>(ca70a)</samp>](https://togithub.com/vitest-dev/vitest/commit/ca70a779)
- Align vite dependency version with vitest  -  by
[@&#8203;sheremet-va](https://togithub.com/sheremet-va)
[<samp>(90ff8)</samp>](https://togithub.com/vitest-dev/vitest/commit/90ff899b)
-   **vitest**:
- Rerun tests if a file loaded with query changes  -  by
[@&#8203;sheremet-va](https://togithub.com/sheremet-va) in
[vitest-dev/vitest#4130
[<samp>(a084c)</samp>](https://togithub.com/vitest-dev/vitest/commit/a084ceaf)
- Inject "define" in workspaces  -  by
[@&#8203;sheremet-va](https://togithub.com/sheremet-va) in
[vitest-dev/vitest#4096
[<samp>(b4d5a)</samp>](https://togithub.com/vitest-dev/vitest/commit/b4d5ae23)

#####    🏎 Performance

- Use lazy require in vm pool  -  by
[@&#8203;sheremet-va](https://togithub.com/sheremet-va) in
[vitest-dev/vitest#4136
[<samp>(21ba4)</samp>](https://togithub.com/vitest-dev/vitest/commit/21ba4935)

#####     [View changes on
GitHub](https://togithub.com/vitest-dev/vitest/compare/v0.34.4...v0.34.5)

###
[`v0.34.4`](https://togithub.com/vitest-dev/vitest/releases/tag/v0.34.4)

[Compare
Source](https://togithub.com/vitest-dev/vitest/compare/v0.34.3...v0.34.4)

#####    🐞 Bug Fixes

- Resolving dep optimizer issues with workspace  -  by
[@&#8203;thebanjomatic](https://togithub.com/thebanjomatic) in
[vitest-dev/vitest#4036
[<samp>(0c13c)</samp>](https://togithub.com/vitest-dev/vitest/commit/0c13c39c)
- Don't process config file twice  -  by
[@&#8203;sheremet-va](https://togithub.com/sheremet-va) in
[vitest-dev/vitest#4077
[<samp>(a84a8)</samp>](https://togithub.com/vitest-dev/vitest/commit/a84a8e05)
-   **coverage**:
- Log info only when terminal reporter is used  -  by
[@&#8203;AriPerkkio](https://togithub.com/AriPerkkio) in
[vitest-dev/vitest#4027
[<samp>(9f043)</samp>](https://togithub.com/vitest-dev/vitest/commit/9f04386b)
-   **happy-dom**:
- Use the nodejs console in happy-dom v11  -  by
[@&#8203;capricorn86](https://togithub.com/capricorn86) in
[vitest-dev/vitest#4090
[<samp>(59434)</samp>](https://togithub.com/vitest-dev/vitest/commit/59434189)
-   **runner**:
- Incorrect test name pattern matching  -  by
[@&#8203;Dunqing](https://togithub.com/Dunqing) in
[vitest-dev/vitest#4071
[<samp>(b5bf3)</samp>](https://togithub.com/vitest-dev/vitest/commit/b5bf3290)
-   **vite-node**:
- Check more precisely for root/base paths  -  by
[@&#8203;danielroe](https://togithub.com/danielroe) in
[vitest-dev/vitest#4049
[<samp>(80741)</samp>](https://togithub.com/vitest-dev/vitest/commit/807418fa)
-   **vitest**:
- "vi" doesn't rely on context  -  by
[@&#8203;sheremet-va](https://togithub.com/sheremet-va) in
[vitest-dev/vitest#4031
[<samp>(0d0f3)</samp>](https://togithub.com/vitest-dev/vitest/commit/0d0f35f6)
- Only override ssr.optimizer instead of the whole ssr object  -  by
[@&#8203;sheremet-va](https://togithub.com/sheremet-va) in
[vitest-dev/vitest#4080
[<samp>(410bc)</samp>](https://togithub.com/vitest-dev/vitest/commit/410bc454)
- Don't start the server when optimizer is enabled  -  by
[@&#8203;sheremet-va](https://togithub.com/sheremet-va) in
[vitest-dev/vitest#4095
[<samp>(00e81)</samp>](https://togithub.com/vitest-dev/vitest/commit/00e81122)
- Set SSR env only when transformMode is ssr  -  by
[@&#8203;sheremet-va](https://togithub.com/sheremet-va) in
[vitest-dev/vitest#4083
[<samp>(f8ea7)</samp>](https://togithub.com/vitest-dev/vitest/commit/f8ea716a)
- Show error when calling API on files that user has no access to  -  by
[@&#8203;sheremet-va](https://togithub.com/sheremet-va) in
[vitest-dev/vitest#4085
[<samp>(8b39c)</samp>](https://togithub.com/vitest-dev/vitest/commit/8b39c117)
-   **web-worker**:
- Don't rely on browser API when it's not provided  -  by
[@&#8203;sheremet-va](https://togithub.com/sheremet-va) in
[vitest-dev/vitest#4014
[<samp>(e78a4)</samp>](https://togithub.com/vitest-dev/vitest/commit/e78a449d)

#####     [View changes on
GitHub](https://togithub.com/vitest-dev/vitest/compare/v0.34.3...v0.34.4)

###
[`v0.34.3`](https://togithub.com/vitest-dev/vitest/releases/tag/v0.34.3)

[Compare
Source](https://togithub.com/vitest-dev/vitest/compare/v0.34.2...v0.34.3)

#####    🚀 Features

- **coverage**: Add `allowExternal` option  -  by
[@&#8203;vojvodics](https://togithub.com/vojvodics) and
[@&#8203;AriPerkkio](https://togithub.com/AriPerkkio) in
[vitest-dev/vitest#3894
[<samp>(c03fa)</samp>](https://togithub.com/vitest-dev/vitest/commit/c03faa22)
- **vitest**: Export all reporters in `vitest/reporters`  -  by
[@&#8203;Dunqing](https://togithub.com/Dunqing) and
[@&#8203;sheremet-va](https://togithub.com/sheremet-va) in
[vitest-dev/vitest#3980
[<samp>(5704b)</samp>](https://togithub.com/vitest-dev/vitest/commit/5704b341)

#####    🐞 Bug Fixes

- Should remove mockPath from callstack whether success or failed  -  by
[@&#8203;miserylee](https://togithub.com/miserylee) and **lijifei** in
[vitest-dev/vitest#3971
[<samp>(5eb85)</samp>](https://togithub.com/vitest-dev/vitest/commit/5eb8561c)
- Add workspace config files to default coverage excludes  -  by
[@&#8203;FelixGraf](https://togithub.com/FelixGraf) and
[@&#8203;AriPerkkio](https://togithub.com/AriPerkkio) in
[vitest-dev/vitest#3973
[<samp>(20263)</samp>](https://togithub.com/vitest-dev/vitest/commit/20263d9d)
- Report file error as a <failure> on JUnit  -  by
[@&#8203;3c1u](https://togithub.com/3c1u) in
[vitest-dev/vitest#3997
[<samp>(00c43)</samp>](https://togithub.com/vitest-dev/vitest/commit/00c432fa)
- **jsdom**: Correctly resolve buffer on typed arrays  -  by
[@&#8203;sheremet-va](https://togithub.com/sheremet-va) in
[vitest-dev/vitest#3998
[<samp>(b42cf)</samp>](https://togithub.com/vitest-dev/vitest/commit/b42cf36e)
- **ui**: Use web hash history in ui  -  by
[@&#8203;segevfiner](https://togithub.com/segevfiner) and
[@&#8203;sheremet-va](https://togithub.com/sheremet-va) in
[vitest-dev/vitest#3481
and
[vitest-dev/vitest#3487
[<samp>(8caab)</samp>](https://togithub.com/vitest-dev/vitest/commit/8caabaa1)
- **vite-node**: Inline HMR types  -  by
[@&#8203;sheremet-va](https://togithub.com/sheremet-va) in
[vitest-dev/vitest#3993
[<samp>(dff60)</samp>](https://togithub.com/vitest-dev/vitest/commit/dff60e82)
- **vitest**: Correctly resolve optimizer status  -  by
[@&#8203;sheremet-va](https://togithub.com/sheremet-va) in
[vitest-dev/vitest#3992
[<samp>(74dc5)</samp>](https://togithub.com/vitest-dev/vitest/commit/74dc5967)

#####     [View changes on
GitHub](https://togithub.com/vitest-dev/vitest/compare/v0.34.2...v0.34.3)

###
[`v0.34.2`](https://togithub.com/vitest-dev/vitest/releases/tag/v0.34.2)

[Compare
Source](https://togithub.com/vitest-dev/vitest/compare/v0.34.1...v0.34.2)

#####    🚀 Features

- Allow importing CSS and assets inside external dependencies when using
`--experimental-vm-threads`  -  by
[@&#8203;sheremet-va](https://togithub.com/sheremet-va) in
[vitest-dev/vitest#3880
[<samp>(f4e6e)</samp>](https://togithub.com/vitest-dev/vitest/commit/f4e6e99f)
- **vitest**: Allow calling `ctx.skip()` inside the running test  -  by
[@&#8203;sheremet-va](https://togithub.com/sheremet-va) in
[vitest-dev/vitest#3966
[<samp>(5c88d)</samp>](https://togithub.com/vitest-dev/vitest/commit/5c88d8e5)

#####    🐞 Bug Fixes

- Don't bundle utils' source-map entry  -  by
[@&#8203;sheremet-va](https://togithub.com/sheremet-va) in
[vitest-dev/vitest#3865
[<samp>(a08e5)</samp>](https://togithub.com/vitest-dev/vitest/commit/a08e5993)
- Reduce the memory consumption when running --experimental-vm-threads
 -  by [@&#8203;sheremet-va](https://togithub.com/sheremet-va) in
[vitest-dev/vitest#3872
[<samp>(d1a08)</samp>](https://togithub.com/vitest-dev/vitest/commit/d1a08c88)
- Indicator position of error message  -  by
[@&#8203;fenghan34](https://togithub.com/fenghan34) in
[vitest-dev/vitest#3855
[<samp>(3e1e7)</samp>](https://togithub.com/vitest-dev/vitest/commit/3e1e7a1f)
- Don't crash when using --experimental-vm-threads, interop CJS default
inside node_modules  -  by
[@&#8203;sheremet-va](https://togithub.com/sheremet-va) in
[vitest-dev/vitest#3876
[<samp>(0c53e)</samp>](https://togithub.com/vitest-dev/vitest/commit/0c53e098)
- Don't crash if total memory is not supported  -  by
[@&#8203;sheremet-va](https://togithub.com/sheremet-va) in
[vitest-dev/vitest#3879
[<samp>(7d1f8)</samp>](https://togithub.com/vitest-dev/vitest/commit/7d1f86b8)
- Check memory and limit value  -  by
[@&#8203;sheremet-va](https://togithub.com/sheremet-va)
[<samp>(f8dfb)</samp>](https://togithub.com/vitest-dev/vitest/commit/f8dfbd38)
- Update module warning as it is moved into server config  -  by
[@&#8203;jellyfishgh](https://togithub.com/jellyfishgh) in
[vitest-dev/vitest#3931
[<samp>(3a3eb)</samp>](https://togithub.com/vitest-dev/vitest/commit/3a3eb22c)
- Define process variable and using import.meta.env together did not
work  -  by [@&#8203;Dunqing](https://togithub.com/Dunqing) in
[vitest-dev/vitest#3944
[<samp>(e73ca)</samp>](https://togithub.com/vitest-dev/vitest/commit/e73ca9ed)
- Correctly resolve config in a workspace  -  by
[@&#8203;sheremet-va](https://togithub.com/sheremet-va) in
[vitest-dev/vitest#3947
[<samp>(1c08d)</samp>](https://togithub.com/vitest-dev/vitest/commit/1c08d5da)
- Don't crash when calling useFakeTimers in VM pool  -  by
[@&#8203;sheremet-va](https://togithub.com/sheremet-va) in
[vitest-dev/vitest#3958
[<samp>(91fe4)</samp>](https://togithub.com/vitest-dev/vitest/commit/91fe4853)
- Restrict access to file system via API  -  by
[@&#8203;sheremet-va](https://togithub.com/sheremet-va) in
[vitest-dev/vitest#3956
[<samp>(bcb41)</samp>](https://togithub.com/vitest-dev/vitest/commit/bcb41e51)
- Typo of mocks plugin name  -  by
[@&#8203;antfu](https://togithub.com/antfu)
[<samp>(3073b)</samp>](https://togithub.com/vitest-dev/vitest/commit/3073b9a2)
- Build not generated `execute.d.ts`  -  by
[@&#8203;btea](https://togithub.com/btea) in
[vitest-dev/vitest#3970
[<samp>(0f8e6)</samp>](https://togithub.com/vitest-dev/vitest/commit/0f8e60b7)
-   **css**:
- Don't mock css-module if `?inline` query is specified  -  by
[@&#8203;thebanjomatic](https://togithub.com/thebanjomatic) and **Adam
Hines** in
[vitest-dev/vitest#3952
[<samp>(3891d)</samp>](https://togithub.com/vitest-dev/vitest/commit/3891d055)
-   **expect**:
- Correctly show async matcher diff  -  by
[@&#8203;sheremet-va](https://togithub.com/sheremet-va) in
[vitest-dev/vitest#3960
[<samp>(9423b)</samp>](https://togithub.com/vitest-dev/vitest/commit/9423b6f8)
-   **snapshots**:
- Update inline snapshot correctly  -  by
[@&#8203;fenghan34](https://togithub.com/fenghan34) in
[vitest-dev/vitest#3887
[<samp>(7b740)</samp>](https://togithub.com/vitest-dev/vitest/commit/7b740a27)
-   **ui**:
- Incorrect duration time in vitest ui  -  by
[@&#8203;Dunqing](https://togithub.com/Dunqing) in
[vitest-dev/vitest#3945
[<samp>(35139)</samp>](https://togithub.com/vitest-dev/vitest/commit/351399f2)
- Add support for ui coverage with subdir option  -  by
[@&#8203;userquin](https://togithub.com/userquin) in
[vitest-dev/vitest#3917
[<samp>(6ecfc)</samp>](https://togithub.com/vitest-dev/vitest/commit/6ecfc4e1)
-   **vitest**:
- Use esm module resolution to resolve env  -  by
[@&#8203;danielroe](https://togithub.com/danielroe) in
[vitest-dev/vitest#3951
[<samp>(edb32)</samp>](https://togithub.com/vitest-dev/vitest/commit/edb322fe)
- Allow rewriting process.env.NODE_MODE when using web transform mode
 -  by [@&#8203;sheremet-va](https://togithub.com/sheremet-va) in
[vitest-dev/vitest#3957
[<samp>(eca4b)</samp>](https://togithub.com/vitest-dev/vitest/commit/eca4b87f)
- Only consider cwd when using glob  -  by
[@&#8203;g-plane](https://togithub.com/g-plane) in
[vitest-dev/vitest#3802
and
[vitest-dev/vitest#3949
[<samp>(15b4f)</samp>](https://togithub.com/vitest-dev/vitest/commit/15b4fd6d)
- Pass environmentOptions to happy-dom integration  -  by
[@&#8203;sheremet-va](https://togithub.com/sheremet-va) and **Raul de
Melo** in
[vitest-dev/vitest#3972
[<samp>(6a0cb)</samp>](https://togithub.com/vitest-dev/vitest/commit/6a0cb647)
-   **web**:
- Correctly resolve assets in new URL  -  by
[@&#8203;sheremet-va](https://togithub.com/sheremet-va) in
[vitest-dev/vitest#3950
[<samp>(a428f)</samp>](https://togithub.com/vitest-dev/vitest/commit/a428f8d4)

#####    🏎 Performance

- **dot-renderer**: Speed up getTests  -  by
[@&#8203;gtm-nayan](https://togithub.com/gtm-nayan) in
[vitest-dev/vitest#3923
[<samp>(e9404)</samp>](https://togithub.com/vitest-dev/vitest/commit/e94044d7)

#####     [View changes on
GitHub](https://togithub.com/vitest-dev/vitest/compare/v0.34.1...v0.34.2)

###
[`v0.34.1`](https://togithub.com/vitest-dev/vitest/releases/tag/v0.34.1)

[Compare
Source](https://togithub.com/vitest-dev/vitest/compare/v0.34.0...v0.34.1)

#####    🐞 Bug Fixes

- Pass `--experimental-vm-worker-memory-limit` to `tinypool`  -  by
[@&#8203;AriPerkkio](https://togithub.com/AriPerkkio) in
[vitest-dev/vitest#3856
[<samp>(3c67a)</samp>](https://togithub.com/vitest-dev/vitest/commit/3c67a4cb)

#####     [View changes on
GitHub](https://togithub.com/vitest-dev/vitest/compare/v0.34.0...v0.34.1)

###
[`v0.34.0`](https://togithub.com/vitest-dev/vitest/releases/tag/v0.34.0)

[Compare
Source](https://togithub.com/vitest-dev/vitest/compare/v0.33.0...v0.34.0)

#####    🚨 Breaking Changes

- Transform mode affects only test files, not regular files  -  by
[@&#8203;sheremet-va](https://togithub.com/sheremet-va) in
[vitest-dev/vitest#3491
[<samp>(9608b)</samp>](https://togithub.com/vitest-dev/vitest/commit/9608bf72)
- `transformMode` is now moved to `server.transformMode`. This option is
highly discouraged to use. If you need to change the transform mode, use
the new option `testTransformMode` instead to control the mode based on
the running test, not the current file path. By default, tests with
`jsdom` or `happy-dom` use `web` transform mode, and tests using `node`
or `edge` environment use `ssr` mode. If you have a custom environment,
it should provide `transformMode` property.
- Custom environment now should be processed before Vitest can consume
it. It means that you cannot specify a path to a TS file or use import
paths that should be processed by Vite.
- Disable `coverage.reportOnFailure` by default  -  by
[@&#8203;AriPerkkio](https://togithub.com/AriPerkkio) in
[vitest-dev/vitest#3615
[<samp>(0c6f6)</samp>](https://togithub.com/vitest-dev/vitest/commit/0c6f624f)
- Remove `@vitest/coverage-c8` package  -  by
[@&#8203;AriPerkkio](https://togithub.com/AriPerkkio) in
[vitest-dev/vitest#3614
[<samp>(a90d6)</samp>](https://togithub.com/vitest-dev/vitest/commit/a90d64fe)
- `@vitest/coverage-c8` is no longer supported. Please, use
`@vitest/coverage-v8` instead.
- Support running tests using VM context  -  by
[@&#8203;sheremet-va](https://togithub.com/sheremet-va) and
[@&#8203;dammy001](https://togithub.com/dammy001) in
[vitest-dev/vitest#3203
[<samp>(b0929)</samp>](https://togithub.com/vitest-dev/vitest/commit/b0929852)
- To address speed issues in some applications, Vitest now provides
`experimentalVmThreads` pool to run your tests using VM Sandboxes
environment. Make sure you understand [all
pitfalls](https://vitest.dev/config/#experimentalvmthreads) of this pool
before opening an issue.
- Introduce `server` option  -  by
[@&#8203;fenghan34](https://togithub.com/fenghan34) and
[@&#8203;sheremet-va](https://togithub.com/sheremet-va) in
[vitest-dev/vitest#3725
[<samp>(dc4fa)</samp>](https://togithub.com/vitest-dev/vitest/commit/dc4faf64)
- Most of `deps.` options are now moved to `server.deps` with a
deprecation warning. Please, consider using `deps.optimizer` instead of
`deps.inline`/`deps.external`. Ideally, we would like to move away from
using `server.deps.inline` altogether.
- **vite-node**: Make CLI arguments parsing behavior consistent with
node/tsx/ts-node  -  by [@&#8203;rxliuli](https://togithub.com/rxliuli)
in
[vitest-dev/vitest#3574
[<samp>(1cd4e)</samp>](https://togithub.com/vitest-dev/vitest/commit/1cd4eb0f)
- You now have to provide CLI arguments before the entry point. For
example, instead of `vite-node index.ts --watch`, you now have to do
`vite-node --watch index.ts`.
- Add preact example, remove optimizer experimental status, enable by
default  -  by [@&#8203;sheremet-va](https://togithub.com/sheremet-va)
and [@&#8203;eryue0220](https://togithub.com/eryue0220) in
[vitest-dev/vitest#3854
[<samp>(4b946)</samp>](https://togithub.com/vitest-dev/vitest/commit/4b946ca9)
- `deps.optimizer` is now enabled by default. This means that Vitest
will bundle specified dependencies before running your tests. This field
inherits options from `optimizeDeps` and `ssr.optimizeDeps` which are
populated by other plugins (like, Svelte).

#####    🚀 Features

- Support `describe.sequential`  -  by
[@&#8203;fenghan34](https://togithub.com/fenghan34) and
[@&#8203;dammy001](https://togithub.com/dammy001) in
[vitest-dev/vitest#3771
[<samp>(86934)</samp>](https://togithub.com/vitest-dev/vitest/commit/8693449b)
- Support config junit reporter className with env  -  by
[@&#8203;InfiniteXyy](https://togithub.com/InfiniteXyy) in
[vitest-dev/vitest#3808
[<samp>(e8bc4)</samp>](https://togithub.com/vitest-dev/vitest/commit/e8bc46b6)
- Running vitest with `--related --watch` reruns non-affected tests if
they were changed during a run  -  by
[@&#8203;sheremet-va](https://togithub.com/sheremet-va) in
[vitest-dev/vitest#3844
[<samp>(c9aea)</samp>](https://togithub.com/vitest-dev/vitest/commit/c9aeac4c)

#####    🐞 Bug Fixes

- Isolate workers between envs and workspaces  -  by
[@&#8203;AriPerkkio](https://togithub.com/AriPerkkio)
[<samp>(ed4e0)</samp>](https://togithub.com/vitest-dev/vitest/commit/ed4e0424)
- Modify condition  -  by [@&#8203;btea](https://togithub.com/btea)
[<samp>(a78e6)</samp>](https://togithub.com/vitest-dev/vitest/commit/a78e6bd0)
- Module Graph view is blocking the Console view  -  by
[@&#8203;g4rry420](https://togithub.com/g4rry420)
[<samp>(3b5f9)</samp>](https://togithub.com/vitest-dev/vitest/commit/3b5f96bc)
- Port the latest `defineConfig` type from vite  -  by
[@&#8203;sodatea](https://togithub.com/sodatea) in
[vitest-dev/vitest#3804
[<samp>(9c8e3)</samp>](https://togithub.com/vitest-dev/vitest/commit/9c8e3083)
- Don't overwrite Node.js URL global  -  by
[@&#8203;sheremet-va](https://togithub.com/sheremet-va) in
[vitest-dev/vitest#3828
[<samp>(cdab4)</samp>](https://togithub.com/vitest-dev/vitest/commit/cdab4651)
- ForceRerunTriggers correctly triggers a rerun  -  by
[@&#8203;sheremet-va](https://togithub.com/sheremet-va) in
[vitest-dev/vitest#3829
[<samp>(17988)</samp>](https://togithub.com/vitest-dev/vitest/commit/17988e51)
-   **browser**:
- Don't inline magic-string and estree-walker  -  by
[@&#8203;sheremet-va](https://togithub.com/sheremet-va) in
[vitest-dev/vitest#3726
[<samp>(ee937)</samp>](https://togithub.com/vitest-dev/vitest/commit/ee93762a)
- Multi-suite coverage  -  by
[@&#8203;elby22](https://togithub.com/elby22) in
[vitest-dev/vitest#3806
[<samp>(5de9a)</samp>](https://togithub.com/vitest-dev/vitest/commit/5de9af26)
-   **core**:
- DataView comparison does not work in `toStrictEqual`  -  by
[@&#8203;Dunqing](https://togithub.com/Dunqing)
[<samp>(52aef)</samp>](https://togithub.com/vitest-dev/vitest/commit/52aef92e)
-   **coverage**:
- V8 provider to pick source maps without url query params  -  by
[@&#8203;AriPerkkio](https://togithub.com/AriPerkkio) in
[vitest-dev/vitest#3784
[<samp>(280e6)</samp>](https://togithub.com/vitest-dev/vitest/commit/280e6745)
- Update `istanbul-lib-instrument` to v6 to fix vulnerable dependency
 -  by [@&#8203;AriPerkkio](https://togithub.com/AriPerkkio) in
[vitest-dev/vitest#3814
[<samp>(f3bd9)</samp>](https://togithub.com/vitest-dev/vitest/commit/f3bd9102)
- Exclude vite virtual modules by default  -  by
[@&#8203;AriPerkkio](https://togithub.com/AriPerkkio) in
[vitest-dev/vitest#3794
[<samp>(3c851)</samp>](https://togithub.com/vitest-dev/vitest/commit/3c851872)
-   **node**:
- Guard error info  -  by [@&#8203;btea](https://togithub.com/btea)
[<samp>(88b39)</samp>](https://togithub.com/vitest-dev/vitest/commit/88b39758)
-   **vite-node**:
- Always treat node_modules as modulesDirectory  -  by
[@&#8203;sheremet-va](https://togithub.com/sheremet-va) in
[vitest-dev/vitest#3830
[<samp>(51ab8)</samp>](https://togithub.com/vitest-dev/vitest/commit/51ab8d6c)
- Normalize drive letter to keep the same reference to a module  -  by
[@&#8203;sheremet-va](https://togithub.com/sheremet-va) in
[vitest-dev/vitest#3836
[<samp>(45521)</samp>](https://togithub.com/vitest-dev/vitest/commit/45521859)
- Correctly resolve hmr filepath  -  by
[@&#8203;sheremet-va](https://togithub.com/sheremet-va) in
[vitest-dev/vitest#3834
[<samp>(711a6)</samp>](https://togithub.com/vitest-dev/vitest/commit/711a6249)
-   **watch**:
- Clear screen on all terminals  -  by
[@&#8203;AriPerkkio](https://togithub.com/AriPerkkio) in
[vitest-dev/vitest#3661
[<samp>(8bd26)</samp>](https://togithub.com/vitest-dev/vitest/commit/8bd26b01)

#####    🏎 Performance

- Deprecate deps.registerNodeLoader  -  by
[@&#8203;sheremet-va](https://togithub.com/sheremet-va)
[<samp>(7f45b)</samp>](https://togithub.com/vitest-dev/vitest/commit/7f45bf2d)
- This option was introduced to support aliasing inside external
packages. Please, use `deps.optimizer.web` instead. If you test Node.js
applications, consider adding external packages to `server.deps.inline`.

#####     [View changes on
GitHub](https://togithub.com/vitest-dev/vitest/compare/v0.33.0...v0.34.0)

###
[`v0.33.0`](https://togithub.com/vitest-dev/vitest/releases/tag/v0.33.0)

[Compare
Source](https://togithub.com/vitest-dev/vitest/compare/v0.32.4...v0.33.0)

#####    🚨 Breaking Changes

- Revert default include patterns  -  by
[@&#8203;so1ve](https://togithub.com/so1ve)
[#&#8203;3729](https://togithub.com/vitest-dev/vitest/issues/3729)
- `0.32.0` changed the default `include` globs to be compatible with
Jest. After a discussion with the community, we are reverting this
change because it turned out to be non-intuitive.

#####    🐞 Bug Fixes

- Add missing JSDom living keys  -  by
[@&#8203;DerZade](https://togithub.com/DerZade) in
[vitest-dev/vitest#3702
[<samp>(83a86)</samp>](https://togithub.com/vitest-dev/vitest/commit/83a86a75)
-   **vite-node**:
- Don't fail when importing Promise module  -  by
[@&#8203;sheremet-va](https://togithub.com/sheremet-va)
[<samp>(08192)</samp>](https://togithub.com/vitest-dev/vitest/commit/0819275a)
- Allow importing node:test  -  by
[@&#8203;sheremet-va](https://togithub.com/sheremet-va)
[<samp>(db22c)</samp>](https://togithub.com/vitest-dev/vitest/commit/db22c677)

#####     [View changes on
GitHub](https://togithub.com/vitest-dev/vitest/compare/v0.32.4...v0.33.0)

###
[`v0.32.4`](https://togithub.com/vitest-dev/vitest/releases/tag/v0.32.4)

[Compare
Source](https://togithub.com/vitest-dev/vitest/compare/v0.32.3...v0.32.4)

#####    🐞 Bug Fixes

- **browser**: Correctly optimize CJS dependencies  -  by
[@&#8203;sheremet-va](https://togithub.com/sheremet-va)
[<samp>(3d090)</samp>](https://togithub.com/vitest-dev/vitest/commit/3d0908e7)

#####     [View changes on
GitHub](https://togithub.com/vitest-dev/vitest/compare/v0.32.3...v0.32.4)

###
[`v0.32.3`](https://togithub.com/vitest-dev/vitest/releases/tag/v0.32.3)

[Compare
Source](https://togithub.com/vitest-dev/vitest/compare/v0.32.2...v0.32.3)

#####    🚀 Features

- Add `concurrent` option to `sequence` config  -  by
[@&#8203;fenghan34](https://togithub.com/fenghan34) and
[@&#8203;sheremet-va](https://togithub.com/sheremet-va) in
[vitest-dev/vitest#3604
[<samp>(f427f)</samp>](https://togithub.com/vitest-dev/vitest/commit/f427f004)
- Introduce global configuration for retry setting  -  by
[@&#8203;imentu](https://togithub.com/imentu) and
[@&#8203;sheremet-va](https://togithub.com/sheremet-va) in
[vitest-dev/vitest#3598
and
[vitest-dev/vitest#3603
[<samp>(9a117)</samp>](https://togithub.com/vitest-dev/vitest/commit/9a117627)
- Don't rely on util package in
[@&#8203;vitest/utils](https://togithub.com/vitest/utils)  -  by
[@&#8203;sheremet-va](https://togithub.com/sheremet-va) in
[vitest-dev/vitest#3685
[<samp>(f91da)</samp>](https://togithub.com/vitest-dev/vitest/commit/f91da484)
- Support accessing other fixtures in fixture function  -  by
[@&#8203;fenghan34](https://togithub.com/fenghan34) in
[vitest-dev/vitest#3651
[<samp>(1621c)</samp>](https://togithub.com/vitest-dev/vitest/commit/1621cc63)
- Support use function/class as `bench` name  -  by
[@&#8203;fenghan34](https://togithub.com/fenghan34) in
[vitest-dev/vitest#3711
[<samp>(a749a)</samp>](https://togithub.com/vitest-dev/vitest/commit/a749a6c0)
- **reporters**: Show full test suite when testing 1 spec file at a time
 -  by [@&#8203;Dunqing](https://togithub.com/Dunqing) in
[vitest-dev/vitest#3543
[<samp>(7531c)</samp>](https://togithub.com/vitest-dev/vitest/commit/7531c292)
- **runner**: Support `test.extend`  -  by
[@&#8203;fenghan34](https://togithub.com/fenghan34) in
[vitest-dev/vitest#3554
[<samp>(2db1a)</samp>](https://togithub.com/vitest-dev/vitest/commit/2db1a737)

#####    🐞 Bug Fixes

- Remove "concordance" from dependencies list  -  by
[@&#8203;sheremet-va](https://togithub.com/sheremet-va) in
[vitest-dev/vitest#3597
[<samp>(969dc)</samp>](https://togithub.com/vitest-dev/vitest/commit/969dcc14)
- Show diff correctly  -  by
[@&#8203;sheremet-va](https://togithub.com/sheremet-va) in
[vitest-dev/vitest#3620
[<samp>(73dd4)</samp>](https://togithub.com/vitest-dev/vitest/commit/73dd4ab5)
- Util import  -  by [@&#8203;fubhy](https://togithub.com/fubhy) in
[vitest-dev/vitest#3621
[<samp>(2fb4c)</samp>](https://togithub.com/vitest-dev/vitest/commit/2fb4ceff)
- Compat with frozen Math  -  by
[@&#8203;turadg](https://togithub.com/turadg) in
[vitest-dev/vitest#3527
[<samp>(0db67)</samp>](https://togithub.com/vitest-dev/vitest/commit/0db67098)
- `CTRL+C` to terminate run  -  by
[@&#8203;AriPerkkio](https://togithub.com/AriPerkkio) in
[vitest-dev/vitest#3642
[<samp>(fa663)</samp>](https://togithub.com/vitest-dev/vitest/commit/fa6637d3)
- Run mode stuck in TTY terminals  -  by
[@&#8203;AriPerkkio](https://togithub.com/AriPerkkio) in
[vitest-dev/vitest#3690
[<samp>(141a8)</samp>](https://togithub.com/vitest-dev/vitest/commit/141a86ac)
- Use first stack frame in json reporter  -  by
[@&#8203;tim-smart](https://togithub.com/tim-smart) in
[vitest-dev/vitest#3645
[<samp>(80ea7)</samp>](https://togithub.com/vitest-dev/vitest/commit/80ea7ef6)
- Print actual number for `toBeCalledTimes`  -  by
[@&#8203;antfu](https://togithub.com/antfu) in
[vitest-dev/vitest#3696
[<samp>(d3640)</samp>](https://togithub.com/vitest-dev/vitest/commit/d3640437)
-   **benchmark**:
- Don't fail when running correct benchmarks  -  by
[@&#8203;sheremet-va](https://togithub.com/sheremet-va) in
[vitest-dev/vitest#3629
[<samp>(edad9)</samp>](https://togithub.com/vitest-dev/vitest/commit/edad9b19)
-   **browser**:
- Correctly print diff  -  by
[@&#8203;sheremet-va](https://togithub.com/sheremet-va) in
[vitest-dev/vitest#3627
[<samp>(d756e)</samp>](https://togithub.com/vitest-dev/vitest/commit/d756ee24)
- Esm injector doesn't replace class expressions  -  by
[@&#8203;sheremet-va](https://togithub.com/sheremet-va) in
[vitest-dev/vitest#3641
[<samp>(5c0ac)</samp>](https://togithub.com/vitest-dev/vitest/commit/5c0ac4ad)
- Transform superclass identifier  -  by
[@&#8203;sheremet-va](https://togithub.com/sheremet-va) in
[vitest-dev/vitest#3681
[<samp>(a1e04)</samp>](https://togithub.com/vitest-dev/vitest/commit/a1e043bd)
-   **coverage**:
- `v8` to prevent crash on dynamic CJS files  -  by
[@&#8203;AriPerkkio](https://togithub.com/AriPerkkio) in
[vitest-dev/vitest#3657
[<samp>(40f18)</samp>](https://togithub.com/vitest-dev/vitest/commit/40f18a07)
-   **runner**:
- Make the default value of `retry` and `repeats` 0  -  by
[@&#8203;Dunqing](https://togithub.com/Dunqing) in
[vitest-dev/vitest#3638
[<samp>(6d146)</samp>](https://togithub.com/vitest-dev/vitest/commit/6d146d16)
-   **utils**:
- Respect all flags in format function  -  by
[@&#8203;sheremet-va](https://togithub.com/sheremet-va) in
[vitest-dev/vitest#3695
[<samp>(91e16)</samp>](https://togithub.com/vitest-dev/vitest/commit/91e1650e)
-   **watch**:
- Cancel using `h` key  -  by
[@&#8203;AriPerkkio](https://togithub.com/AriPerkkio) in
[vitest-dev/vitest#3618
[<samp>(60c36)</samp>](https://togithub.com/vitest-dev/vitest/commit/60c36faf)

#####     [View changes on
GitHub](https://togithub.com/vitest-dev/vitest/compare/v0.32.2...v0.32.3)

</details>

---

### Configuration

📅 **Schedule**: Branch creation - "after 10pm,before 6:00am" in timezone
Europe/Warsaw, Automerge - At any time (no schedule defined).

🚦 **Automerge**: Enabled.

♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the
rebase/retry checkbox.

🔕 **Ignore**: Close this PR and you won't be reminded about this update
again.

---

- [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check
this box

---

This PR has been generated by [Mend
Renovate](https://www.mend.io/free-developer-tools/renovate/). View
repository job log
[here](https://developer.mend.io/github/kamilkisiela/dependency-graph).

<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiIzNS4xNDQuMiIsInVwZGF0ZWRJblZlciI6IjM3LjgxLjMiLCJ0YXJnZXRCcmFuY2giOiJtYXN0ZXIifQ==-->

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

6 participants