Skip to content

Commit dd51567

Browse files
committed
chore(vitest): migrate to vitest browser mode
1 parent 21591ac commit dd51567

17 files changed

Lines changed: 264 additions & 36 deletions

File tree

package.json

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -63,7 +63,6 @@
6363
"@vitest/browser-playwright": "^4.0.17",
6464
"@vitest/coverage-istanbul": "4.1.10",
6565
"eslint": "^10.8.1",
66-
"jsdom": "^27.2.0",
6766
"knip": "^6.32.0",
6867
"markdown-link-extractor": "^4.0.3",
6968
"nx": "^23.1.1",

packages/angular-form/tests/test-setup.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
import '@analogjs/vitest-angular/setup-snapshots'
22
import '@testing-library/jest-dom/vitest'
3+
import '@angular/compiler'
34

45
import { NgModule, provideZonelessChangeDetection } from '@angular/core'
56
import {

packages/angular-form/vite.config.ts

Lines changed: 22 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
import { defineConfig } from 'vitest/config'
22
import angular from '@analogjs/vite-plugin-angular'
33
import tsconfigPaths from 'vite-tsconfig-paths'
4+
import { playwright } from '@vitest/browser-playwright'
45
import packageJson from './package.json'
56

67
const tsconfigPath = 'tsconfig.spec.json'
@@ -10,12 +11,32 @@ export default defineConfig(({ mode }) => ({
1011
tsconfigPaths({ projects: [tsconfigPath] }),
1112
angular({ tsconfig: tsconfigPath }),
1213
],
14+
optimizeDeps: {
15+
include: [
16+
'@angular/compiler',
17+
'@angular/core',
18+
'@angular/core/testing',
19+
'@angular/common',
20+
'@angular/platform-browser',
21+
'@angular/platform-browser-dynamic',
22+
'@angular/platform-browser-dynamic/testing',
23+
'@analogjs/vitest-angular/setup-snapshots',
24+
'@testing-library/angular',
25+
'@testing-library/jest-dom/vitest',
26+
],
27+
},
1328
test: {
1429
name: packageJson.name,
1530
dir: './tests',
1631
watch: false,
17-
environment: 'jsdom',
1832
setupFiles: ['./tests/test-setup.ts'],
33+
browser: {
34+
enabled: true,
35+
provider: playwright(
36+
process.env.CI ? { launchOptions: { channel: 'chrome' } } : {},
37+
),
38+
instances: [{ browser: 'chromium', headless: true }],
39+
},
1940
coverage: { enabled: true, provider: 'istanbul', include: ['src/**/*'] },
2041
typecheck: { enabled: true },
2142
globals: true,

packages/form-core/vitest.config.ts

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,24 @@
11
import { defineConfig } from 'vitest/config'
2+
import { playwright } from '@vitest/browser-playwright'
23
import packageJson from './package.json' with { type: 'json' }
34

45
export default defineConfig({
6+
optimizeDeps: {
7+
include: ['@tanstack/store', '@tanstack/pacer-lite'],
8+
},
59
test: {
610
name: packageJson.name,
711
dir: './',
812
watch: false,
9-
environment: 'jsdom',
1013
setupFiles: ['./tests/test-setup.ts'],
1114
globals: true,
15+
browser: {
16+
enabled: true,
17+
provider: playwright(
18+
process.env.CI ? { launchOptions: { channel: 'chrome' } } : {},
19+
),
20+
instances: [{ browser: 'chromium', headless: true }],
21+
},
1222
coverage: {
1323
enabled: true,
1424
provider: 'istanbul',

packages/lit-form/vite.config.ts

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,24 @@
11
import { defineConfig } from 'vitest/config'
2+
import { playwright } from '@vitest/browser-playwright'
23
import packageJson from './package.json'
34

45
export default defineConfig({
6+
optimizeDeps: {
7+
include: ['lit', '@tanstack/lit-store', '@tanstack/form-core'],
8+
},
59
test: {
610
name: packageJson.name,
711
dir: './tests',
812
watch: false,
9-
environment: 'jsdom',
1013
globals: true,
1114
setupFiles: ['./tests/setup.ts'],
15+
browser: {
16+
enabled: true,
17+
provider: playwright(
18+
process.env.CI ? { launchOptions: { channel: 'chrome' } } : {},
19+
),
20+
instances: [{ browser: 'chromium', headless: true }],
21+
},
1222
coverage: { enabled: true, provider: 'istanbul', include: ['src/**/*'] },
1323
typecheck: { enabled: true },
1424
},

packages/preact-form/vitest.config.ts

Lines changed: 19 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,34 @@
11
import { defineConfig } from 'vitest/config'
22
import preact from '@preact/preset-vite'
3+
import { playwright } from '@vitest/browser-playwright'
34
import packageJson from './package.json' with { type: 'json' }
45

56
export default defineConfig({
67
plugins: [preact()],
8+
optimizeDeps: {
9+
include: [
10+
'@testing-library/jest-dom/vitest',
11+
'@testing-library/preact',
12+
'@testing-library/user-event',
13+
'preact',
14+
'preact/hooks',
15+
'preact/compat',
16+
'@tanstack/preact-store',
17+
],
18+
},
719
test: {
820
name: packageJson.name,
921
dir: './tests',
1022
watch: false,
11-
environment: 'jsdom',
1223
setupFiles: ['./tests/test-setup.ts'],
1324
globals: true,
25+
browser: {
26+
enabled: true,
27+
provider: playwright(
28+
process.env.CI ? { launchOptions: { channel: 'chrome' } } : {},
29+
),
30+
instances: [{ browser: 'chromium', headless: true }],
31+
},
1432
coverage: {
1533
enabled: true,
1634
provider: 'istanbul',

packages/react-form-devtools/vite.config.ts

Lines changed: 20 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,35 @@
11
import { defineConfig, mergeConfig } from 'vitest/config'
22
import { tanstackViteConfig } from '@tanstack/vite-config'
33
import react from '@vitejs/plugin-react'
4+
import { playwright } from '@vitest/browser-playwright'
45
import packageJson from './package.json'
56

67
const config = defineConfig({
78
plugins: [react()],
9+
optimizeDeps: {
10+
include: [
11+
'@testing-library/jest-dom/vitest',
12+
'@testing-library/react',
13+
'react',
14+
'react-dom',
15+
'react-dom/client',
16+
'@tanstack/devtools',
17+
'@tanstack/devtools-utils/react',
18+
],
19+
},
820
test: {
921
name: packageJson.name,
1022
dir: './tests',
1123
watch: false,
12-
environment: 'jsdom',
24+
globals: true,
1325
setupFiles: ['./tests/test-setup.ts'],
26+
browser: {
27+
enabled: true,
28+
provider: playwright(
29+
process.env.CI ? { launchOptions: { channel: 'chrome' } } : {},
30+
),
31+
instances: [{ browser: 'chromium', headless: true }],
32+
},
1433
typecheck: { enabled: true },
1534
},
1635
})

packages/react-form-nextjs/vite.config.ts

Lines changed: 18 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,33 @@
11
import { defineConfig, mergeConfig } from 'vitest/config'
22
import { tanstackViteConfig } from '@tanstack/vite-config'
33
import react from '@vitejs/plugin-react'
4+
import { playwright } from '@vitest/browser-playwright'
45
import packageJson from './package.json'
56

67
const config = defineConfig({
78
plugins: [react()],
9+
optimizeDeps: {
10+
include: [
11+
'@testing-library/jest-dom/vitest',
12+
'@testing-library/react',
13+
'react',
14+
'react-dom',
15+
'react-dom/client',
16+
],
17+
},
818
test: {
919
name: packageJson.name,
1020
dir: './tests',
1121
watch: false,
12-
environment: 'jsdom',
22+
globals: true,
1323
setupFiles: ['./tests/test-setup.ts'],
24+
browser: {
25+
enabled: true,
26+
provider: playwright(
27+
process.env.CI ? { launchOptions: { channel: 'chrome' } } : {},
28+
),
29+
instances: [{ browser: 'chromium', headless: true }],
30+
},
1431
coverage: { enabled: true, provider: 'istanbul', include: ['src/**/*'] },
1532
typecheck: { enabled: true },
1633
},

packages/react-form-start/vite.config.ts

Lines changed: 28 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,43 @@
11
import { defineConfig, mergeConfig } from 'vitest/config'
22
import { tanstackViteConfig } from '@tanstack/vite-config'
33
import react from '@vitejs/plugin-react'
4+
import { playwright } from '@vitest/browser-playwright'
45
import packageJson from './package.json'
56

67
const config = defineConfig({
78
plugins: [react()],
9+
optimizeDeps: {
10+
include: [
11+
'@testing-library/jest-dom/vitest',
12+
'@testing-library/react',
13+
'react',
14+
'react-dom',
15+
'react-dom/client',
16+
'devalue',
17+
'decode-formdata',
18+
],
19+
// `@tanstack/react-start` (and its `/server` entry) are always mocked via
20+
// `vi.mock` in tests/start.spec.ts. The real packages pull in
21+
// `@tanstack/start-server-core`, which uses virtual specifiers
22+
// (`#tanstack-router-entry`, `#tanstack-start-entry`) that are only ever
23+
// resolved by TanStack Start's own Vite plugin inside a real app. Vite's
24+
// dependency-optimization scan does not understand `vi.mock` and will
25+
// eagerly try (and fail) to pre-bundle them unless excluded here.
26+
exclude: ['@tanstack/react-start', '@tanstack/react-start/server'],
27+
},
828
test: {
929
name: packageJson.name,
1030
dir: './tests',
1131
watch: false,
12-
environment: 'jsdom',
32+
globals: true,
1333
setupFiles: ['./tests/test-setup.ts'],
34+
browser: {
35+
enabled: true,
36+
provider: playwright(
37+
process.env.CI ? { launchOptions: { channel: 'chrome' } } : {},
38+
),
39+
instances: [{ browser: 'chromium', headless: true }],
40+
},
1441
coverage: { enabled: true, provider: 'istanbul', include: ['src/**/*'] },
1542
typecheck: { enabled: true },
1643
},

packages/react-form/tests/test-setup.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,5 +5,5 @@ import { cleanup, configure } from '@testing-library/react'
55
afterEach(() => cleanup())
66

77
configure({
8-
reactStrictMode: process.env.VITEST_REACT_STRICT_MODE === 'true',
8+
reactStrictMode: import.meta.env.VITEST_REACT_STRICT_MODE === 'true',
99
})

0 commit comments

Comments
 (0)