Skip to content

Commit 76b82e5

Browse files
committed
fix(browser): support @testing-library/vue in browser mode out of the box
1 parent 087fa87 commit 76b82e5

File tree

2 files changed

+26
-16
lines changed

2 files changed

+26
-16
lines changed

packages/browser/src/node/index.ts

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
import { fileURLToPath } from 'node:url'
22
import { readFile } from 'node:fs/promises'
3+
import { createRequire } from 'node:module'
34
import { basename, join, resolve } from 'pathe'
45
import sirv from 'sirv'
56
import type { ViteDevServer } from 'vite'
@@ -209,6 +210,31 @@ export default (project: WorkspaceProject, base = '/'): Plugin[] => {
209210
},
210211
BrowserContext(project),
211212
DynamicImport(),
213+
// TODO: remove this when @testing-library/vue supports ESM
214+
{
215+
name: 'vitest:browser:support-vue-testing-library',
216+
config() {
217+
return {
218+
optimizeDeps: {
219+
esbuildOptions: {
220+
plugins: [
221+
{
222+
name: 'test-utils-rewrite',
223+
setup(build) {
224+
const _require = createRequire(import.meta.url)
225+
build.onResolve({ filter: /@vue\/test-utils/ }, (args) => {
226+
// resolve to CJS instead of the browser because the browser version expects a global Vue object
227+
const resolved = _require.resolve(args.path, { paths: [args.importer] })
228+
return { path: resolved }
229+
})
230+
},
231+
},
232+
],
233+
},
234+
},
235+
}
236+
},
237+
},
212238
]
213239
}
214240

packages/ui/vite.config.ts

Lines changed: 0 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,3 @@
1-
import { createRequire } from 'node:module'
21
import { resolve } from 'pathe'
32
import type { UserConfig } from 'vite'
43
import { defineConfig } from 'vite'
@@ -87,21 +86,6 @@ export const config: UserConfig = {
8786
'vue',
8887
'@vue/test-utils',
8988
],
90-
esbuildOptions: {
91-
plugins: [
92-
{
93-
name: 'test-utils-rewrite',
94-
setup(build) {
95-
const _require = createRequire(import.meta.url)
96-
build.onResolve({ filter: /@vue\/test-utils/ }, (args) => {
97-
// resolve to CJS instead of the browser because the browser version expects a global Vue object
98-
const resolved = _require.resolve(args.path, { paths: [args.importer] })
99-
return { path: resolved }
100-
})
101-
},
102-
},
103-
],
104-
},
10589
},
10690
test: {
10791
browser: {

0 commit comments

Comments
 (0)