diff --git a/frontend/vite.config.ts b/frontend/vite.config.ts index 722a0d89..83920c2c 100644 --- a/frontend/vite.config.ts +++ b/frontend/vite.config.ts @@ -46,6 +46,7 @@ export default defineConfig({ coverage: { provider: 'v8', reporter: ['text', 'lcov'], + reportsDirectory: 'coverage/server', // 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. diff --git a/frontend/vitest.client-coverage.config.ts b/frontend/vitest.client-coverage.config.ts new file mode 100644 index 00000000..ba1e3cbe --- /dev/null +++ b/frontend/vitest.client-coverage.config.ts @@ -0,0 +1,46 @@ +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'; + +// Standalone config for browser-project Istanbul coverage. +// Uses a dedicated root-level coverage block because Vitest 4 ignores +// per-project coverage overrides inside test.projects. +export default defineConfig({ + optimizeDeps: { + include: ['pdfjs-dist', '@tiptap/core', '@tiptap/starter-kit', '@tiptap/extension-mention'] + }, + plugins: [ + tailwindcss(), + sveltekit(), + devtoolsJson(), + paraglideVitePlugin({ + project: './project.inlang', + outdir: './src/lib/paraglide' + }) + ], + test: { + expect: { requireAssertions: true }, + 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/**'], + coverage: { + provider: 'istanbul', + reporter: ['text', 'lcov'], + reportsDirectory: 'coverage/client', + include: ['src/**/*.svelte', 'src/**/*.svelte.ts'], + exclude: ['src/lib/paraglide/**', 'src/lib/generated/**', 'src/hooks/**', '**/__mocks__/**'], + thresholds: { + branches: 80 + } + } + } +});