From cac05b30d84ab75b5592590c1f48e333d833823d Mon Sep 17 00:00:00 2001 From: Daniel Roe Date: Tue, 1 Jul 2025 11:21:45 +0100 Subject: [PATCH 1/4] refactor(config)!: drop support for `vitest` < v3.2 --- package.json | 2 +- src/config.ts | 10 +++++----- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/package.json b/package.json index 974c711d2..c3333105d 100644 --- a/package.json +++ b/package.json @@ -130,7 +130,7 @@ "happy-dom": "^9.10.9 || ^10.0.0 || ^11.0.0 || ^12.0.0 || ^13.0.0 || ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 || ^18.0.0", "jsdom": "^22.0.0 || ^23.0.0 || ^24.0.0 || ^25.0.0 || ^26.0.0", "playwright-core": "^1.43.1", - "vitest": "^0.34.6 || ^1.0.0 || ^2.0.0 || ^3.0.0" + "vitest": "^3.2.0" }, "peerDependenciesMeta": { "@cucumber/cucumber": { diff --git a/src/config.ts b/src/config.ts index 30f46337c..75ed93229 100644 --- a/src/config.ts +++ b/src/config.ts @@ -245,16 +245,16 @@ export function defineVitestConfig(config: ViteUserConfig & { test?: VitestConfi return resolvedConfig } - if ('workspace' in resolvedConfig.test) { + if ('workspace' in resolvedConfig.test || 'projects' in resolvedConfig.test) { throw new Error( - 'The `workspace` option is not supported with `defineVitestConfig`. Instead, use `defineVitestProject` to define each workspace project that uses the Nuxt environment.', + 'The `projects` option is not supported with `defineVitestConfig`. Instead, use `defineVitestProject` to define each workspace project that uses the Nuxt environment.', ) } const defaultEnvironment = resolvedConfig.test.environment || 'node' if (defaultEnvironment !== 'nuxt') { - resolvedConfig.test.workspace = [] - resolvedConfig.test.workspace.push({ + resolvedConfig.test.projects = [] + resolvedConfig.test.projects.push({ extends: true, test: { name: 'nuxt', @@ -265,7 +265,7 @@ export function defineVitestConfig(config: ViteUserConfig & { test?: VitestConfi ], }, }) - resolvedConfig.test.workspace.push({ + resolvedConfig.test.projects.push({ extends: true, test: { name: defaultEnvironment, From ea0f4d35c04652969eb2ad14154e1361159ee572 Mon Sep 17 00:00:00 2001 From: Daniel Roe Date: Tue, 1 Jul 2025 11:46:14 +0100 Subject: [PATCH 2/4] fix: test vitest version before using 'projects' --- src/config.ts | 16 +++++++++++++--- 1 file changed, 13 insertions(+), 3 deletions(-) diff --git a/src/config.ts b/src/config.ts index 75ed93229..860cf44d5 100644 --- a/src/config.ts +++ b/src/config.ts @@ -253,8 +253,18 @@ export function defineVitestConfig(config: ViteUserConfig & { test?: VitestConfi const defaultEnvironment = resolvedConfig.test.environment || 'node' if (defaultEnvironment !== 'nuxt') { - resolvedConfig.test.projects = [] - resolvedConfig.test.projects.push({ + const key = 'projects' in resolvedConfig.test + ? 'projects' + : 'workspace' in resolvedConfig.test + ? 'workspace' + : await import('vitest/package.json').then((r) => { + const [major, minor] = r.version.split('.') + return Number.parseInt(major, 10) > 3 || (Number.parseInt(major, 10) === 3 && Number.parseInt(minor, 10) >= 2) + }) + ? 'projects' + : 'workspace' + resolvedConfig.test[key] = [] + resolvedConfig.test[key].push({ extends: true, test: { name: 'nuxt', @@ -265,7 +275,7 @@ export function defineVitestConfig(config: ViteUserConfig & { test?: VitestConfi ], }, }) - resolvedConfig.test.projects.push({ + resolvedConfig.test[key].push({ extends: true, test: { name: defaultEnvironment, From 50e54e3e79ab3aa6a0e6218e40808dbe17e1caf9 Mon Sep 17 00:00:00 2001 From: Daniel Roe Date: Tue, 1 Jul 2025 11:51:38 +0100 Subject: [PATCH 3/4] fix: add import attribute --- src/config.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/config.ts b/src/config.ts index 860cf44d5..68756d1aa 100644 --- a/src/config.ts +++ b/src/config.ts @@ -257,7 +257,7 @@ export function defineVitestConfig(config: ViteUserConfig & { test?: VitestConfi ? 'projects' : 'workspace' in resolvedConfig.test ? 'workspace' - : await import('vitest/package.json').then((r) => { + : await import('vitest/package.json', { with: { type: 'json' } }).then((r) => { const [major, minor] = r.version.split('.') return Number.parseInt(major, 10) > 3 || (Number.parseInt(major, 10) === 3 && Number.parseInt(minor, 10) >= 2) }) From f814a06eebf3ba91ff151ca04c76f8be84a8a937 Mon Sep 17 00:00:00 2001 From: Daniel Roe Date: Tue, 1 Jul 2025 11:52:30 +0100 Subject: [PATCH 4/4] chore: dedefault --- src/config.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/config.ts b/src/config.ts index 68756d1aa..25f2f7cd0 100644 --- a/src/config.ts +++ b/src/config.ts @@ -258,7 +258,7 @@ export function defineVitestConfig(config: ViteUserConfig & { test?: VitestConfi : 'workspace' in resolvedConfig.test ? 'workspace' : await import('vitest/package.json', { with: { type: 'json' } }).then((r) => { - const [major, minor] = r.version.split('.') + const [major, minor] = (r.default || r).version.split('.') return Number.parseInt(major, 10) > 3 || (Number.parseInt(major, 10) === 3 && Number.parseInt(minor, 10) >= 2) }) ? 'projects'