Skip to content

Commit d4640d8

Browse files
authored
feat(vitest): update to vitest 4.0 (#760)
1 parent fba83c4 commit d4640d8

File tree

2 files changed

+18
-19
lines changed

2 files changed

+18
-19
lines changed

.changeset/fifty-boats-double.md

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
---
2+
'sv': patch
3+
---
4+
5+
feat(vitest): update to vitest `4.0`
6+
7+
- removing `@vitest/browser` in favor of `@vitest/browser-playwright`
8+
- run browser tests in headless mode

packages/addons/vitest-addon/index.ts

Lines changed: 10 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
import { dedent, defineAddon, defineAddonOptions } from '@sveltejs/cli-core';
2-
import { array, imports, object, vite } from '@sveltejs/cli-core/js';
2+
import { array, imports, object, functions, vite } from '@sveltejs/cli-core/js';
33
import { parseJson, parseScript } from '@sveltejs/cli-core/parsers';
44

55
const options = defineAddonOptions()
@@ -25,11 +25,11 @@ export default defineAddon({
2525
const unitTesting = options.usages.includes('unit');
2626
const componentTesting = options.usages.includes('component');
2727

28-
sv.devDependency('vitest', '^3.2.4');
28+
sv.devDependency('vitest', '^4.0.5');
2929

3030
if (componentTesting) {
31-
sv.devDependency('@vitest/browser', '^3.2.4');
32-
sv.devDependency('vitest-browser-svelte', '^1.1.0');
31+
sv.devDependency('@vitest/browser-playwright', '^4.0.5');
32+
sv.devDependency('vitest-browser-svelte', '^2.0.1');
3333
sv.devDependency('playwright', '^1.56.1');
3434
}
3535

@@ -71,7 +71,7 @@ export default defineAddon({
7171
if (content) return content;
7272

7373
return dedent`
74-
import { page } from '@vitest/browser/context';
74+
import { page } from 'vitest/browser';
7575
import { describe, expect, it } from 'vitest';
7676
import { render } from 'vitest-browser-svelte';
7777
${kit ? "import Page from './+page.svelte';" : "import App from './App.svelte';"}
@@ -86,15 +86,6 @@ export default defineAddon({
8686
});
8787
`;
8888
});
89-
90-
sv.file(`vitest-setup-client.${ext}`, (content) => {
91-
if (content) return content;
92-
93-
return dedent`
94-
/// <reference types="@vitest/browser/matchers" />
95-
/// <reference types="@vitest/browser/providers/playwright" />
96-
`;
97-
});
9889
}
9990

10091
sv.file(files.viteConfig, (content) => {
@@ -104,15 +95,13 @@ export default defineAddon({
10495
extends: `./${files.viteConfig}`,
10596
test: {
10697
name: 'client',
107-
environment: 'browser',
10898
browser: {
10999
enabled: true,
110-
provider: 'playwright',
111-
instances: [{ browser: 'chromium' }]
100+
provider: functions.createCall({ name: 'playwright', args: [] }),
101+
instances: [{ browser: 'chromium', headless: true }]
112102
},
113103
include: ['src/**/*.svelte.{test,spec}.{js,ts}'],
114-
exclude: ['src/lib/server/**'],
115-
setupFiles: [`./vitest-setup-client.${ext}`]
104+
exclude: ['src/lib/server/**']
116105
}
117106
});
118107

@@ -146,6 +135,8 @@ export default defineAddon({
146135
if (unitTesting) array.append(workspaceArray, serverObjectExpression);
147136

148137
// Manage imports
138+
if (componentTesting)
139+
imports.addNamed(ast, { imports: ['playwright'], from: '@vitest/browser-playwright' });
149140
const importName = 'defineConfig';
150141
const { statement, alias } = imports.find(ast, { name: importName, from: 'vite' });
151142
if (statement) {

0 commit comments

Comments
 (0)