This check doesn't guarantee that passing '@testing-library/jest-dom/vitest' as setupFiles to Vitest is safe.
The current check:
|
: ['@testing-library/jest-dom/vitest', '@testing-library/jest-dom/extend-expect'].find( |
|
(path) => { |
|
try { |
|
require.resolve(path); |
|
return true; |
|
} catch (e) { |
|
return false; |
|
} |
|
}, |
|
); |
only verifies that eslint-plugin-solid itself can resolve @testing-library/jest-dom/vitest.
It does not guarantee that Vitest can safely use it as a setupFiles entry.
Problem
In my project (using pnpm), I hit a false positive:
storybook depends directly on @testing-library/jest-dom.
storybook-solidjs-vite depends on vite-plugin-solid
vite-plugin-solid lists @testing-library/jest-dom as an optional peer dependency.
- Because of
pnpm’s virtual store, both end up colocated such that require.resolve("@testing-library/jest-dom/vitest") from vite-plugin-solid succeeds.
However, my project itself doesn’t depend on @testing-library/jest-dom, since I only use Vitest with vite-plugin-solid for reactivity tests (no DOM tests).
When Vitest parses the config, it can resolve vite-plugin-solid, but it cannot resolve the automatically added @testing-library/jest-dom/vitest import. This breaks the setup.
Minimal Reproduction
- Create an empty project
pnpm init
pnpm add -D vitest vite vite-plugin-solid
- Add a vitest.config.js with
export default defineConfig({
plugins: [solid()],
test: {
environment: "node",
},
});
And a simple test file (it should run).
- Reinstall dependencies, this time with a transitive dependency on @testing-library/jest-dom:
pnpm add -D storybook storybook-solidjs-vite
- Run the test, it should now fail with "Failed to load url .../@testing-library/jest-dom/vitest".
This check doesn't guarantee that passing
'@testing-library/jest-dom/vitest'as setupFiles to Vitest is safe.The current check:
vite-plugin-solid/src/index.ts
Lines 182 to 191 in 904b25b
only verifies that
eslint-plugin-soliditself can resolve@testing-library/jest-dom/vitest.It does not guarantee that Vitest can safely use it as a
setupFilesentry.Problem
In my project (using
pnpm), I hit a false positive:storybookdepends directly on@testing-library/jest-dom.storybook-solidjs-vitedepends onvite-plugin-solidvite-plugin-solidlists@testing-library/jest-domas an optional peer dependency.pnpm’s virtual store, both end up colocated such thatrequire.resolve("@testing-library/jest-dom/vitest")fromvite-plugin-solidsucceeds.However, my project itself doesn’t depend on
@testing-library/jest-dom, since I only use Vitest withvite-plugin-solidfor reactivity tests (no DOM tests).When Vitest parses the config, it can resolve
vite-plugin-solid, but it cannot resolve the automatically added@testing-library/jest-dom/vitestimport. This breaks the setup.Minimal Reproduction
And a simple test file (it should run).