Skip to content
Merged
Show file tree
Hide file tree
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 8 additions & 0 deletions .changeset/fifty-boats-double.md
Original file line number Diff line number Diff line change
@@ -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
29 changes: 10 additions & 19 deletions packages/addons/vitest-addon/index.ts
Original file line number Diff line number Diff line change
@@ -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()
Expand All @@ -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');
}

Expand Down Expand Up @@ -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';"}
Expand All @@ -86,15 +86,6 @@ export default defineAddon({
});
`;
});

sv.file(`vitest-setup-client.${ext}`, (content) => {
if (content) return content;

return dedent`
/// <reference types="@vitest/browser/matchers" />
/// <reference types="@vitest/browser/providers/playwright" />
`;
});
}

sv.file(files.viteConfig, (content) => {
Expand All @@ -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/**']
}
});

Expand Down Expand Up @@ -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) {
Expand Down
Loading