import { defineConfig } from 'vitest/config'; import vue from '@vitejs/plugin-vue'; import { resolve } from 'path'; export default defineConfig({ plugins: [vue()], resolve: { // Mirror the build aliases in vite.config.js so specs resolve source the same // way the app does (src was reorganised into base/shared/free/config). alias: { '~': resolve(__dirname, '.'), '@': resolve(__dirname, 'src'), '@config': resolve(__dirname, 'src/config'), '@utils': resolve(__dirname, 'src/utils'), '@base': resolve(__dirname, 'src/base'), '@shared': resolve(__dirname, 'src/shared'), '@free': resolve(__dirname, 'src/free'), '@admin': resolve(__dirname, 'src/admin'), '@premium': resolve(__dirname, 'src/admin/premium'), // Test-specific aliases '@test': resolve(__dirname, 'tests'), '@test-utils': resolve(__dirname, 'tests/test-utils') }, }, test: { globals: true, environment: 'jsdom', setupFiles: ['./tests/setup.ts'], // Obsolete/premium-only specs: these target code that does not exist in the // free plugin (Pinia stores, env-handler, and premium-only Vue components were // removed from src/ and now live only in inPIPE-premium). They fail at import // resolution before any premium guard can run. Excluded from the free suite so // it reports real coverage; restore individually if the code returns to free. exclude: [ '**/node_modules/**', '**/dist/**', '**/cypress/**', '**/.{idea,git,cache,output,temp}/**', '**/{karma,rollup,webpack,vite,vitest,jest,ava,babel,nyc,cypress,tsup,build}.config.*', 'tests/premium/**', 'tests/pinia/useAppStore.test.ts', 'tests/unit/EnvHandler.test.ts', 'tests/unit/PremiumIntegration.test.ts', 'tests/unit/PremiumUpgrade.test.ts', 'tests/unit/SubscriptionVerifier.test.ts', ], deps: { inline: ['vue-toastification'] }, // Keep test-env aliases in sync with resolve.alias / vite.config.js alias: { '@': resolve(__dirname, 'src'), '@utils': resolve(__dirname, 'src/utils'), '@base': resolve(__dirname, 'src/base'), '@shared': resolve(__dirname, 'src/shared'), '@free': resolve(__dirname, 'src/free'), '@admin': resolve(__dirname, 'src/admin'), '@premium': resolve(__dirname, 'src/admin/premium') } }, });