diff --git a/.changeset/vitest-5-shared-server-projects.md b/.changeset/vitest-5-shared-server-projects.md new file mode 100644 index 0000000..62889bb --- /dev/null +++ b/.changeset/vitest-5-shared-server-projects.md @@ -0,0 +1,5 @@ +--- +'@solidjs/vite-plugin': patch +--- + +Vitest 5 inline projects get the plugin's test configuration again (#369). Vitest 5 defaults `test.sharedViteServer` to `true`, so an inline project that only changes `test` options reuses the root Vite server and resolves its options from the raw root `test` block, without running the plugin's `config` hook. Such projects lost everything the hook injects: a `test.environment: 'node'` project kept the root's `browser` condition (`isServer` was `false`), and jsdom projects lost the `@testing-library/jest-dom` setup file and the `solid-js` `server.deps` handling. When the root config declares `test.projects` and leaves `test.sharedViteServer` unset, the plugin now sets it to `false` so every project resolves its own Vite config, as it did under Vitest 4. An explicit `sharedViteServer` value is respected. diff --git a/README.md b/README.md index 68b757c..41c5034 100644 --- a/README.md +++ b/README.md @@ -1045,6 +1045,8 @@ test: { }, ``` +The posture is chosen while each project resolves its own Vite config. Vitest 5 lets inline projects reuse the root Vite server instead (`test.sharedViteServer`, on by default), which skips that step, so the plugin sets `sharedViteServer: false` when the root config declares `test.projects`. Setting the option yourself overrides this; with `true`, every shared project runs with the root config's posture and without the injected `jest-dom` setup file. + # Credits - [solid-js](https://github.com/solidjs/solid) diff --git a/src/index.ts b/src/index.ts index f4d6687..f522ec2 100644 --- a/src/index.ts +++ b/src/index.ts @@ -1192,6 +1192,11 @@ export default function solidPlugin(options: Partial = {}): Plugin[] { test.environment = 'jsdom'; } + // Vitest 5 inline projects reuse the root server and never run this hook (#369). + if (userTest.projects && userTest.sharedViteServer === undefined) { + test.sharedViteServer = false; + } + if (serverTestPosture) { // The worker pool is shared across the whole vitest workspace and // imports externalized deps natively with `--conditions` derived