Skip to content

Conversation

@AriPerkkio
Copy link
Member

@AriPerkkio AriPerkkio commented Feb 13, 2025

Description

Allow users to define thread count in browser mode. This is useful when you don't want to allocate all CPUs to Vitest, see linked issue.

import { defineConfig } from "vitest/config";

export default defineConfig({
  test: {
    minWorkers: 4,
    maxWorkers: 4,

    browser: {
      enabled: true,
      headless: true,
      provider: "playwright",
      instances: [{ browser: "chromium" }],
    },
  },
});

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.

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:.

@AriPerkkio
Copy link
Member Author

I'm not that familiar with Browser Mode's parallelism. Any reason why maxWorkers isn't used when resolving the value? It's already checking availableParallelism and os.cpu() so I think this makes sense.

@netlify
Copy link

netlify bot commented Feb 13, 2025

Deploy Preview for vitest-dev ready!

Built without sensitive environment variables

Name Link
🔨 Latest commit 299dcec
🔍 Latest deploy log https://app.netlify.com/sites/vitest-dev/deploys/67ae05db76266a0008d85926
😎 Deploy Preview https://deploy-preview-7483--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 site configuration.

@sheremet-va
Copy link
Member

I'm not that familiar with Browser Mode's parallelism. Any reason why maxWorkers isn't used when resolving the value? It's already checking availableParallelism and os.cpu() so I think this makes sense.

There is no reason, really. The issue is that parallelization is just not optimized at all, we still have the experimental tabs parallelization.

@AriPerkkio AriPerkkio merged commit adbb25a into vitest-dev:main Feb 13, 2025
13 checks passed
@AriPerkkio AriPerkkio deleted the fix/browser-max-workers branch February 13, 2025 15:10
renovate bot added a commit to mmkal/expect-type that referenced this pull request Feb 18, 2025
##### [v3.0.6](https://github.com/vitest-dev/vitest/releases/tag/v3.0.6)

#####    🐞 Bug Fixes

-   Fix `getMockedSystemTime` for `useFakeTimer`  -  by [@hi-ogawa](https://github.com/hi-ogawa) in vitest-dev/vitest#7405 [<samp>(03912)</samp>](vitest-dev/vitest@03912b43)
-   Compat for jest-image-snapshot  -  by [@hi-ogawa](https://github.com/hi-ogawa) in vitest-dev/vitest#7390 [<samp>(9542b)</samp>](vitest-dev/vitest@9542b699)
-   Ensure project names are readable in dark terminals  -  by [@rgrove](https://github.com/rgrove) in vitest-dev/vitest#7371 [<samp>(bb94c)</samp>](vitest-dev/vitest@bb94c19f)
-   Exclude `queueMicrotask` from default fake timers to not break node fetch  -  by [@hi-ogawa](https://github.com/hi-ogawa) in vitest-dev/vitest#7505 [<samp>(167a9)</samp>](vitest-dev/vitest@167a98d7)
-   **browser**:
    -   Fix mocking modules out of root  -  by [@hi-ogawa](https://github.com/hi-ogawa) in vitest-dev/vitest#7415 [<samp>(d3acb)</samp>](vitest-dev/vitest@d3acbd8b)
    -   Fix `toHaveClass` typing  -  by [@hi-ogawa](https://github.com/hi-ogawa) in vitest-dev/vitest#7383 [<samp>(7ef23)</samp>](vitest-dev/vitest@7ef238c0)
    -   Relax locator selectors methods  -  by [@sheremet-va](https://github.com/sheremet-va) in vitest-dev/vitest#7422 [<samp>(1b8c5)</samp>](vitest-dev/vitest@1b8c5c9e)
    -   Resolve thread count from `maxWorkers`  -  by [@AriPerkkio](https://github.com/AriPerkkio) in vitest-dev/vitest#7483 [<samp>(adbb2)</samp>](vitest-dev/vitest@adbb25ab)
    -   Cleanup timeout on resolve and give more information in the error  -  by [@sheremet-va](https://github.com/sheremet-va) in vitest-dev/vitest#7487 [<samp>(5a45a)</samp>](vitest-dev/vitest@5a45a7ca)
-   **coverage**:
    -   `vite-node` to pass correct execution wrapper offset  -  by [@AriPerkkio](https://github.com/AriPerkkio) in vitest-dev/vitest#7417 [<samp>(1f2e5)</samp>](vitest-dev/vitest@1f2e5552)
    -   Preserve moduleExecutionInfo in non-isolated runs  -  by [@AriPerkkio](https://github.com/AriPerkkio) in vitest-dev/vitest#7486 [<samp>(f31a0)</samp>](vitest-dev/vitest@f31a07bb)
-   **deps**:
    -   Update all non-major dependencies  -  by [@hi-ogawa](https://github.com/hi-ogawa) in vitest-dev/vitest#7363 [<samp>(e348b)</samp>](vitest-dev/vitest@e348bd4c)
    -   Update all non-major dependencies  -  by [@hi-ogawa](https://github.com/hi-ogawa) in vitest-dev/vitest#7507 [<samp>(6cc40)</samp>](vitest-dev/vitest@6cc408d6)
-   **init**:
    -   Invalid browser config  -  by [@AriPerkkio](https://github.com/AriPerkkio) in vitest-dev/vitest#7475 [<samp>(8fe64)</samp>](vitest-dev/vitest@8fe641b4)
-   **reporters**:
    -   Render tasks in tree when in TTY  -  by [@AriPerkkio](https://github.com/AriPerkkio) in vitest-dev/vitest#7503 [<samp>(027ce)</samp>](vitest-dev/vitest@027ce9bb)
-   **vite-node**:
    -   Remove fake first line mapping on Vite 6  -  by [@hi-ogawa](https://github.com/hi-ogawa) in vitest-dev/vitest#7124 [<samp>(b9973)</samp>](vitest-dev/vitest@b997355b)
-   **watch**:
    -   Properly remove cache after removing existing test files  -  by [@soc221b](https://github.com/soc221b) in vitest-dev/vitest#7399 [<samp>(01a59)</samp>](vitest-dev/vitest@01a59721)
-   **workspace**:
    -   Forward `inspect` related cli options  -  by [@AriPerkkio](https://github.com/AriPerkkio) in vitest-dev/vitest#7373 [<samp>(ed15b)</samp>](vitest-dev/vitest@ed15b5b3)

#####     [View changes on GitHub](vitest-dev/vitest@v3.0.5...v3.0.6)
jelmore1674 pushed a commit to jelmore1674/build-changelog that referenced this pull request Mar 19, 2025
This PR contains the following updates:

| Package | Type | Update | Change |
|---|---|---|---|
| [@vitest/coverage-v8](https://github.com/vitest-dev/vitest/tree/main/packages/coverage-v8#readme) ([source](https://github.com/vitest-dev/vitest/tree/HEAD/packages/coverage-v8)) | devDependencies | patch | [`3.0.5` -> `3.0.7`](https://renovatebot.com/diffs/npm/@vitest%2fcoverage-v8/3.0.5/3.0.7) |
| [vitest](https://github.com/vitest-dev/vitest) ([source](https://github.com/vitest-dev/vitest/tree/HEAD/packages/vitest)) | devDependencies | patch | [`3.0.5` -> `3.0.7`](https://renovatebot.com/diffs/npm/vitest/3.0.5/3.0.7) |

---

### Release Notes

<details>
<summary>vitest-dev/vitest (@&#8203;vitest/coverage-v8)</summary>

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

[Compare Source](vitest-dev/vitest@v3.0.6...v3.0.7)

#####    🐞 Bug Fixes

-   **browser**: Support webdriverio 9  -  by [@&#8203;sheremet-va](https://github.com/sheremet-va) in vitest-dev/vitest#7553 [<samp>(b1949)</samp>](vitest-dev/vitest@b1949c97)
-   **deps**: Update all non-major dependencies  -  in vitest-dev/vitest#7543 [<samp>(365ff)</samp>](vitest-dev/vitest@365ffe6b)
-   **expect**: Correct generic MatchersObject this type in expect.extend  -  by [@&#8203;Workingstiff-s](https://github.com/Workingstiff-s) in vitest-dev/vitest#7526 [<samp>(d5765)</samp>](vitest-dev/vitest@d5765f71)
-   **mocker**: Include more modules to prefix-only module list  -  by [@&#8203;btea](https://github.com/btea) in vitest-dev/vitest#7524 [<samp>(a12ec)</samp>](vitest-dev/vitest@a12ec008)
-   **spy**: Clear/reset/restore mocks in stack order  -  by [@&#8203;hi-ogawa](https://github.com/hi-ogawa) in vitest-dev/vitest#7499 [<samp>(f7100)</samp>](vitest-dev/vitest@f71004ff)

#####    🏎 Performance

-   **browser**: Do wdio context switching only once per file  -  by [@&#8203;sheremet-va](https://github.com/sheremet-va) in vitest-dev/vitest#7549 [<samp>(aaa58)</samp>](vitest-dev/vitest@aaa58556)

#####     [View changes on GitHub](vitest-dev/vitest@v3.0.6...v3.0.7)

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

[Compare Source](vitest-dev/vitest@v3.0.5...v3.0.6)

#####    🐞 Bug Fixes

-   Fix `getMockedSystemTime` for `useFakeTimer`  -  by [@&#8203;hi-ogawa](https://github.com/hi-ogawa) in vitest-dev/vitest#7405 [<samp>(03912)</samp>](vitest-dev/vitest@03912b43)
-   Compat for jest-image-snapshot  -  by [@&#8203;hi-ogawa](https://github.com/hi-ogawa) in vitest-dev/vitest#7390 [<samp>(9542b)</samp>](vitest-dev/vitest@9542b699)
-   Ensure project names are readable in dark terminals  -  by [@&#8203;rgrove](https://github.com/rgrove) in vitest-dev/vitest#7371 [<samp>(bb94c)</samp>](vitest-dev/vitest@bb94c19f)
-   Exclude `queueMicrotask` from default fake timers to not break node fetch  -  by [@&#8203;hi-ogawa](https://github.com/hi-ogawa) in vitest-dev/vitest#7505 [<samp>(167a9)</samp>](vitest-dev/vitest@167a98d7)
-   **browser**:
    -   Fix mocking modules out of root  -  by [@&#8203;hi-ogawa](https://github.com/hi-ogawa) in vitest-dev/vitest#7415 [<samp>(d3acb)</samp>](vitest-dev/vitest@d3acbd8b)
    -   Fix `toHaveClass` typing  -  by [@&#8203;hi-ogawa](https://github.com/hi-ogawa) in vitest-dev/vitest#7383 [<samp>(7ef23)</samp>](vitest-dev/vitest@7ef238c0)
    -   Relax locator selectors methods  -  by [@&#8203;sheremet-va](https://github.com/sheremet-va) in vitest-dev/vitest#7422 [<samp>(1b8c5)</samp>](vitest-dev/vitest@1b8c5c9e)
    -   Resolve thread count from `maxWorkers`  -  by [@&#8203;AriPerkkio](https://github.com/AriPerkkio) in vitest-dev/vitest#7483 [<samp>(adbb2)</samp>](vitest-dev/vitest@adbb25ab)
    -   Cleanup timeout on resolve and give more information in the error  -  by [@&#8203;sheremet-va](https://github.com/sheremet-va) in vitest-dev/vitest#7487 [<samp>(5a45a)</samp>](vitest-dev/vitest@5a45a7ca)
-   **coverage**:
    -   `vite-node` to pass correct execution wrapper offset  -  by [@&#8203;AriPerkkio](https://github.com/AriPerkkio) in vitest-dev/vitest#7417 [<samp>(1f2e5)</samp>](vitest-dev/vitest@1f2e5552)
    -   Preserve moduleExecutionInfo in non-isolated runs  -  by [@&#8203;AriPerkkio](https://github.com/AriPerkkio) in vitest-dev/vitest#7486 [<samp>(f31a0)</samp>](vitest-dev/vitest@f31a07bb)
-   **deps**:
    -   Update all non-major dependencies  -  by [@&#8203;hi-ogawa](https://github.com/hi-ogawa) in vitest-dev/vitest#7363 [<samp>(e348b)</samp>](vitest-dev/vitest@e348bd4c)
    -   Update all non-major dependencies  -  by [@&#8203;hi-ogawa](https://github.com/hi-ogawa) in vitest-dev/vitest#7507 [<samp>(6cc40)</samp>](vitest-dev/vitest@6cc408d6)
-   **init**:
    -   Invalid browser config  -  by [@&#8203;AriPerkkio](https://github.com/AriPerkkio) in vitest-dev/vitest#7475 [<samp>(8fe64)</samp>](vitest-dev/vitest@8fe641b4)
-   **reporters**:
    -   Render tasks in tree when in TTY  -  by [@&#8203;AriPerkkio](https://github.com/AriPerkkio) in vitest-dev/vitest#7503 [<samp>(027ce)</samp>](vitest-dev/vitest@027ce9bb)
-   **vite-node**:
    -   Remove fake first line mapping on Vite 6  -  by [@&#8203;hi-ogawa](https://github.com/hi-ogawa) in vitest-dev/vitest#7124 [<samp>(b9973)</samp>](vitest-dev/vitest@b997355b)
-   **watch**:
    -   Properly remove cache after removing existing test files  -  by [@&#8203;soc221b](https://github.com/soc221b) in vitest-dev/vitest#7399 [<samp>(01a59)</samp>](vitest-dev/vitest@01a59721)
-   **workspace**:
    -   Forward `inspect` related cli options  -  by [@&#8203;AriPerkkio](https://github.com/AriPerkkio) in vitest-dev/vitest#7373 [<samp>(ed15b)</samp>](vitest-dev/vitest@ed15b5b3)

#####     [View changes on GitHub](vitest-dev/vitest@v3.0.5...v3.0.6)

</details>

---

### Configuration

📅 **Schedule**: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined).

🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied.

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

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

---

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

---

This PR has been generated by [Renovate Bot](https://github.com/renovatebot/renovate).
<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiIzOS4xNjQuMSIsInVwZGF0ZWRJblZlciI6IjM5LjE2NC4xIiwidGFyZ2V0QnJhbmNoIjoibWFpbiIsImxhYmVscyI6W119-->

Reviewed-on: https://gitea.justinelmore.dev/jelmore1674/build-changelog/pulls/91
Co-authored-by: Renovate Bot <[email protected]>
Co-committed-by: Renovate Bot <[email protected]>
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.

Browser mode does not follow maxWorkers

2 participants