diff --git a/src/web/vite.config.ts b/src/web/vite.config.ts index 9de9b3e..941a628 100644 --- a/src/web/vite.config.ts +++ b/src/web/vite.config.ts @@ -37,5 +37,6 @@ export default defineConfig({ environment: 'jsdom', globals: true, setupFiles: ['./tests/setup.ts'], + include: ['tests/**/*.test.{ts,tsx}'], }, }); diff --git a/src/web/vitest.config.ts b/src/web/vitest.config.ts new file mode 100644 index 0000000..6d8b16b --- /dev/null +++ b/src/web/vitest.config.ts @@ -0,0 +1,14 @@ +/// +import { defineProject } from 'vitest/config'; +import react from '@vitejs/plugin-react'; + +export default defineProject({ + plugins: [react()], + test: { + name: 'web', + include: ['tests/**/*.test.{ts,tsx}'], + environment: 'jsdom', + globals: true, + setupFiles: ['./tests/setup.ts'], + }, +}); diff --git a/vitest.config.ts b/vitest.config.ts index ee87406..a1c7953 100644 --- a/vitest.config.ts +++ b/vitest.config.ts @@ -9,8 +9,20 @@ export default defineConfig({ exclude: ['**/node_modules/**', '**/dist/**', '**/*.config.*'], }, include: ['src/*/tests/**/*.test.ts', 'tests/**/*.test.ts'], - exclude: ['**/node_modules/**', '**/smoke/**', 'src/db/tests/**'], + // src/web tests need jsdom; they're run via the web package's own + // vitest.config.ts under the projects entry below. + exclude: ['**/node_modules/**', '**/smoke/**', 'src/db/tests/**', 'src/web/tests/**'], testTimeout: 10000, + // Vitest 4 uses `projects` (in-config) instead of vitest.workspace.ts. + // Each project below is rooted in a workspace package; vitest reads + // its `vitest.config.ts` (or vite.config.ts) for the test config. + projects: [ + 'src/shared', + 'src/cli', + 'src/mcpd', + 'src/mcplocal', + 'src/web', + ], // DB tests require a test database; run them explicitly via: // pnpm --filter db exec vitest run // globalSetup: ['src/db/tests/global-setup.ts'], diff --git a/vitest.workspace.ts b/vitest.workspace.ts index 62873a7..aef3380 100644 --- a/vitest.workspace.ts +++ b/vitest.workspace.ts @@ -6,4 +6,8 @@ export default defineWorkspace([ 'src/cli', 'src/mcpd', 'src/mcplocal', + // src/web has its own vite.config.ts with `environment: 'jsdom'` — + // listing it here makes the workspace runner pick that up so the + // browser-y tests get the right globals (localStorage, document). + 'src/web', ]);