Skip to content

Commit cc4c412

Browse files
committed
feat(test): configure vitest projects for monorepo coverage
Refactor vitest configuration to use v4's projects feature for unified monorepo test execution and coverage reporting. Changes: - Add projects configuration with 'root' and 'examples' workspaces - Simplify package.json test scripts (remove test:submodules, test:root) - Extend coverage.include to capture examples/**/*.ts files - Enable automatic test discovery in examples when tests are added This allows running all tests across the monorepo with a single 'pnpm test' command and generates unified coverage reports that include both src and examples directories.
1 parent dcb482d commit cc4c412

File tree

2 files changed

+28
-12
lines changed

2 files changed

+28
-12
lines changed

package.json

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -27,9 +27,7 @@
2727
"lint:knip": "knip",
2828
"preinstall": "npx only-allow pnpm",
2929
"prepack": "npm pkg delete scripts.preinstall && pnpm run build",
30-
"test": "pnpm --aggregate-output run '/^test:/'",
31-
"test:submodules": "pnpm --parallel -r --aggregate-output test",
32-
"test:root": "vitest",
30+
"test": "vitest",
3331
"coverage": "vitest run --coverage",
3432
"typecheck": "pnpm --aggregate-output run '/^typecheck:/'",
3533
"typecheck:submodules": "pnpm --parallel -r --aggregate-output typecheck",

vitest.config.ts

Lines changed: 27 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -4,23 +4,41 @@ export default defineConfig({
44
test: {
55
watch: false,
66
globals: true,
7-
include: ['src/**/*.spec.ts', 'scripts/**/*.spec.ts'],
8-
exclude: ['node_modules', 'dist', 'examples', 'src/toolsets/tests/stackone.mcp-fetch.spec.ts'],
9-
setupFiles: ['./vitest.setup.ts'],
107
testTimeout: 30000,
118
coverage: {
129
provider: 'v8',
1310
reporter: ['text', 'json', 'html'],
14-
include: ['src/**/*.ts'],
15-
exclude: ['src/**/*.spec.ts', 'src/**/tests/**'],
11+
include: ['src/**/*.ts', 'examples/**/*.ts'],
12+
exclude: ['**/*.spec.ts', '**/*.test.ts', '**/*.test-d.ts', '**/tests/**'],
1613
},
14+
projects: [
15+
{
16+
extends: true,
17+
test: {
18+
name: 'root',
19+
root: '.',
20+
include: ['src/**/*.spec.ts', 'scripts/**/*.spec.ts'],
21+
exclude: ['node_modules', 'dist', 'examples', 'src/toolsets/tests/stackone.mcp-fetch.spec.ts'],
22+
setupFiles: ['./vitest.setup.ts'],
23+
typecheck: {
24+
enabled: true,
25+
include: ['src/**/*.spec.ts', 'src/**/*.test-d.ts'],
26+
},
27+
},
28+
},
29+
{
30+
extends: true,
31+
test: {
32+
name: 'examples',
33+
root: './examples',
34+
include: ['**/*.spec.ts', '**/*.test.ts'],
35+
exclude: ['node_modules', 'dist'],
36+
},
37+
},
38+
],
1739
deps: {
1840
interopDefault: true,
1941
},
20-
typecheck: {
21-
enabled: true,
22-
include: ['src/**/*.spec.ts', 'src/**/*.test-d.ts'],
23-
},
2442
},
2543
resolve: {
2644
conditions: ['import', 'module', 'default'],

0 commit comments

Comments
 (0)