import { paraglideVitePlugin } from '@inlang/paraglide-js'; import devtoolsJson from 'vite-plugin-devtools-json'; import tailwindcss from '@tailwindcss/vite'; import { defineConfig } from 'vitest/config'; import { playwright } from '@vitest/browser-playwright'; import { sveltekit } from '@sveltejs/kit/vite'; export default defineConfig({ optimizeDeps: { include: ['pdfjs-dist', '@tiptap/core', '@tiptap/starter-kit', '@tiptap/extension-mention'] }, server: { host: '0.0.0.0', // Erlaubt Zugriff von außen port: 5173, // Standard SvelteKit Port // Proxy für API-Aufrufe während der Entwicklung (Browser -> Vite -> Spring Boot) proxy: { '/api': { target: process.env.API_PROXY_TARGET || 'http://localhost:8080', changeOrigin: true, // Inject Authorization header from the auth_token cookie so that // browser-side fetch('/api/...') calls work the same as SSR fetches // (which go through handleFetch in hooks.server.ts). configure: (proxy) => { proxy.on('proxyReq', (proxyReq, req) => { const cookies = req.headers.cookie ?? ''; const match = cookies.match(/auth_token=([^;]+)/); if (match) { proxyReq.setHeader('Authorization', decodeURIComponent(match[1])); } }); } } } }, plugins: [ tailwindcss(), sveltekit(), devtoolsJson(), paraglideVitePlugin({ project: './project.inlang', outdir: './src/lib/paraglide' }) ], test: { expect: { requireAssertions: true }, coverage: { provider: 'v8', reporter: ['text', 'lcov'], // Measure utility and server-side logic only. Svelte components run // in the browser project and are excluded here. Browser-only TS files // (actions, hooks, domain-specific UI state) are also excluded. // person/ is excluded until relationshipLabels.ts coverage is raised. include: [ 'src/lib/shared/utils/**', 'src/lib/shared/server/**', 'src/lib/shared/discussion/**', 'src/lib/document/**' ], exclude: ['**/*.svelte', '**/*.svelte.ts', '**/__mocks__/**'], thresholds: { branches: 80 } }, projects: [ { extends: './vite.config.ts', test: { name: 'client', browser: { enabled: true, provider: playwright(), instances: [{ browser: 'chromium', headless: true }], screenshotDirectory: 'test-results/screenshots', screenshotFailures: 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}'] } } ] } });