import { sveltekit } from '@sveltejs/kit/vite'; import tailwindcss from '@tailwindcss/vite'; import { playwright } from '@vitest/browser-playwright'; import { defineConfig } from 'vitest/config'; import type { IncomingMessage, ServerResponse } from 'http'; import type { Plugin, PreviewServer, ViteDevServer } from 'vite'; const addHeaders = (res: ServerResponse) => { res.setHeader('Access-Control-Allow-Origin', '*'); res.setHeader('Access-Control-Allow-Methods', 'GET'); res.setHeader('Cross-Origin-Opener-Policy', 'same-origin'); res.setHeader('Cross-Origin-Embedder-Policy', 'require-corp'); }; const viteServerConfig = (): Plugin => ({ name: 'add-headers', configureServer: (server: ViteDevServer) => { server.middlewares.use((_req: IncomingMessage, res: ServerResponse, next: () => void) => { addHeaders(res); next(); }); }, configurePreviewServer: (server: PreviewServer) => { server.middlewares.use((_req: IncomingMessage, res: ServerResponse, next: () => void) => { addHeaders(res); next(); }); } }); export default defineConfig({ plugins: [tailwindcss(), sveltekit(), viteServerConfig()], test: { expect: { requireAssertions: true }, projects: [ { extends: './vite.config.ts', test: { name: 'client', browser: { enabled: true, provider: playwright(), instances: [{ browser: 'chromium', headless: true }] }, include: ['src/**/*.svelte.{test,spec}.{js,ts}'], exclude: ['src/lib/server/**'] } }, { extends: './vite.config.ts', test: { name: 'server', environment: 'node', include: ['src/**/*.{test,spec}.{js,ts}'], exclude: ['src/**/*.svelte.{test,spec}.{js,ts}'] } } ] } });