import { resolve } from 'path' import react from '@vitejs/plugin-react' import { configDefaults, defineConfig } from 'vitest/config' export default defineConfig({ // vite 8 / vitest 4 transform with oxc and ignore the deprecated `esbuild.jsx` // option, and this app's tsconfig uses `jsx: preserve` for its real build. Use // the react plugin so JSX in `.tsx` files is transformed for tests. plugins: [react()], test: { fsModuleCache: true, pool: 'threads', environment: 'jsdom', setupFiles: ['./setupTests.js'], globals: true, testTimeout: 30000, include: ['**/*.{test,spec}.{js,ts,jsx,tsx}'], // Extend the defaults rather than replace them: dropping `**/node_modules/**` runs the tests // of every workspace package linked into this app's node_modules (pnpm's linker does that). exclude: [...configDefaults.exclude, '**/e2e/**'], }, resolve: { alias: { '\\.(css|less)$': 'identity-obj-proxy', // `tldraw/tldraw.css` is generated by packages/tldraw's prebuild/predev and gitignored, so // it is absent unless something has built that package — and the checks job runs the unit // tests without doing so. Any test importing a module that pulls in the SDK stylesheet // would fail to resolve it. Pointed at one of the sources that file is concatenated from: // vitest does not process CSS, so only the resolution matters. 'tldraw/tldraw.css': resolve(__dirname, '../../../packages/tldraw/src/lib/ui.css'), }, }, ssr: { noExternal: ['@tiptap/react'], }, })