Installs @vitest/coverage-v8 and configures coverage measurement over src/lib/utils/** and src/lib/server/** — the utility and server-side logic that is meaningful to measure in the Node test project. Svelte component files and generated code (api/**, paraglide/**) are excluded; those run in the browser project. Baseline: 87.87% branch coverage — already above the 80% threshold. Adds test:coverage script for local runs; produces lcov report for CI. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
84 lines
2.3 KiB
TypeScript
84 lines
2.3 KiB
TypeScript
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']
|
|
},
|
|
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 intentionally.
|
|
include: ['src/lib/utils/**', 'src/lib/server/**'],
|
|
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}']
|
|
}
|
|
}
|
|
]
|
|
}
|
|
});
|