import { defineConfig } from 'vitest/config' import vue from '@vitejs/plugin-vue' import { fileURLToPath } from 'node:url' export default defineConfig({ plugins: [vue()], test: { globals: true, environment: 'jsdom', setupFiles: ['./src/__tests__/setup.ts'], pool: 'threads', poolOptions: { threads: { singleThread: false, minThreads: 2, maxThreads: 4, useAtomics: true, }, }, include: ['src/__tests__/**/*.{test,spec}.{js,ts}'], exclude: [ 'node_modules/', 'dist/', '**/*.d.ts', '**/*.config.*', '**/mockData', 'e2e/', ], coverage: { provider: 'v8', reporter: ['text', 'json', 'html', 'lcov'], exclude: [ 'node_modules/', 'src/__tests__/', '**/*.d.ts', '**/*.config.*', '**/mockData', 'e2e/', 'src/main.ts', 'src/router/index.ts', ], lines: 80, functions: 80, branches: 80, statements: 80, all: true, clean: true, reportsDirectory: './coverage', subdir: '.', }, testTimeout: 10000, hookTimeout: 10000, teardownTimeout: 10000, isolate: false, bail: 5, retry: 2, reporters: ['verbose', 'json', 'html'], outputFile: { json: './test-results/vitest-results.json', html: './test-results/vitest-report.html', }, maxConcurrency: 4, cache: { dir: './node_modules/.vitest', enabled: true, }, benchmark: { include: ['src/__tests__/**/*.{bench,benchmark}.{js,ts}'], exclude: ['node_modules/', 'dist/'], }, }, resolve: { alias: { '@': fileURLToPath(new URL('./src', import.meta.url)), }, }, })