Files
Codewalkers/vitest.config.ts

46 lines
1.6 KiB
TypeScript

import { defineConfig } from 'vitest/config';
import react from '@vitejs/plugin-react';
import path from 'node:path';
export default defineConfig({
plugins: [react()],
resolve: {
// Alias react to the parent monorepo's copy, matching what @testing-library
// loads react-dom from. This ensures React DOM and our components share the
// same ReactSharedInternals and hook dispatcher — preventing null-dispatcher
// errors when running tests from a git worktree.
alias: {
'@': path.resolve(__dirname, './apps/web/src'),
react: path.resolve(__dirname, '../../../../node_modules/react'),
'react-dom': path.resolve(__dirname, '../../../../node_modules/react-dom'),
},
dedupe: ['react', 'react-dom'],
},
test: {
// Force react-dom and @testing-library through Vite's module graph so that
// the resolve.alias for 'react-dom' applies (prevents parent-monorepo
// react-dom loading a different React instance than our source files).
deps: {
inline: ['react-dom', '@testing-library/react'],
},
// Enable test globals (describe, it, expect without imports)
globals: true,
env: {
CW_LOG_LEVEL: 'silent',
},
// Test file pattern
include: ['**/*.test.ts', '**/*.test.tsx'],
exclude: ['**/node_modules/**', '**/dist/**', 'packages/**', 'workdir/**'],
environmentMatchGlobs: [
['apps/web/**', 'happy-dom'],
],
// TypeScript support uses tsconfig.json automatically
// Coverage reporter (optional, for future use)
coverage: {
provider: 'v8',
reporter: ['text', 'json', 'html'],
reportsDirectory: './apps/server/coverage',
},
},
});