diff --git a/.changeset/fifty-boats-double.md b/.changeset/fifty-boats-double.md new file mode 100644 index 000000000..b2584b6b1 --- /dev/null +++ b/.changeset/fifty-boats-double.md @@ -0,0 +1,8 @@ +--- +'sv': patch +--- + +feat(vitest): update to vitest `4.0` + +- removing `@vitest/browser` in favor of `@vitest/browser-playwright` +- run browser tests in headless mode diff --git a/packages/addons/vitest-addon/index.ts b/packages/addons/vitest-addon/index.ts index a352ecac7..e963de423 100644 --- a/packages/addons/vitest-addon/index.ts +++ b/packages/addons/vitest-addon/index.ts @@ -1,5 +1,5 @@ import { dedent, defineAddon, defineAddonOptions } from '@sveltejs/cli-core'; -import { array, imports, object, vite } from '@sveltejs/cli-core/js'; +import { array, imports, object, functions, vite } from '@sveltejs/cli-core/js'; import { parseJson, parseScript } from '@sveltejs/cli-core/parsers'; const options = defineAddonOptions() @@ -25,11 +25,11 @@ export default defineAddon({ const unitTesting = options.usages.includes('unit'); const componentTesting = options.usages.includes('component'); - sv.devDependency('vitest', '^3.2.4'); + sv.devDependency('vitest', '^4.0.5'); if (componentTesting) { - sv.devDependency('@vitest/browser', '^3.2.4'); - sv.devDependency('vitest-browser-svelte', '^1.1.0'); + sv.devDependency('@vitest/browser-playwright', '^4.0.5'); + sv.devDependency('vitest-browser-svelte', '^2.0.1'); sv.devDependency('playwright', '^1.56.1'); } @@ -71,7 +71,7 @@ export default defineAddon({ if (content) return content; return dedent` - import { page } from '@vitest/browser/context'; + import { page } from 'vitest/browser'; import { describe, expect, it } from 'vitest'; import { render } from 'vitest-browser-svelte'; ${kit ? "import Page from './+page.svelte';" : "import App from './App.svelte';"} @@ -86,15 +86,6 @@ export default defineAddon({ }); `; }); - - sv.file(`vitest-setup-client.${ext}`, (content) => { - if (content) return content; - - return dedent` - /// - /// - `; - }); } sv.file(files.viteConfig, (content) => { @@ -104,15 +95,13 @@ export default defineAddon({ extends: `./${files.viteConfig}`, test: { name: 'client', - environment: 'browser', browser: { enabled: true, - provider: 'playwright', - instances: [{ browser: 'chromium' }] + provider: functions.createCall({ name: 'playwright', args: [] }), + instances: [{ browser: 'chromium', headless: true }] }, include: ['src/**/*.svelte.{test,spec}.{js,ts}'], - exclude: ['src/lib/server/**'], - setupFiles: [`./vitest-setup-client.${ext}`] + exclude: ['src/lib/server/**'] } }); @@ -146,6 +135,8 @@ export default defineAddon({ if (unitTesting) array.append(workspaceArray, serverObjectExpression); // Manage imports + if (componentTesting) + imports.addNamed(ast, { imports: ['playwright'], from: '@vitest/browser-playwright' }); const importName = 'defineConfig'; const { statement, alias } = imports.find(ast, { name: importName, from: 'vite' }); if (statement) {