fix(test): vitest 4 projects + src/web jsdom env (#59)
Some checks failed
CI/CD / lint (push) Successful in 55s
CI/CD / test (push) Successful in 1m10s
CI/CD / typecheck (push) Successful in 2m37s
CI/CD / smoke (push) Failing after 1m41s
CI/CD / build (push) Successful in 2m38s
CI/CD / publish (push) Has been skipped

This commit was merged in pull request #59.
This commit is contained in:
2026-04-26 20:31:47 +00:00
4 changed files with 32 additions and 1 deletions

View File

@@ -37,5 +37,6 @@ export default defineConfig({
environment: 'jsdom',
globals: true,
setupFiles: ['./tests/setup.ts'],
include: ['tests/**/*.test.{ts,tsx}'],
},
});

14
src/web/vitest.config.ts Normal file
View File

@@ -0,0 +1,14 @@
/// <reference types="vitest/config" />
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'],
},
});

View File

@@ -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'],

View File

@@ -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',
]);