feat(KB-044): add test coverage reporting with vitest coverage-v8

- Add @vitest/coverage-v8 to all workspace packages
- Configure vitest coverage settings in all vitest.config.ts files
- Align vitest versions across packages for consistency
- Add 'test:coverage' script to root package.json
- Verify all tests pass with coverage reporting enabled
This commit is contained in:
gsxdsm
2026-03-29 19:42:27 -07:00
parent e75a09d4c9
commit 57f3afc2c7
11 changed files with 409 additions and 211 deletions

3
.gitignore vendored
View File

@@ -5,6 +5,9 @@ node_modules/
dist/ dist/
*.tsbuildinfo *.tsbuildinfo
# Coverage reports
coverage/
# hai runtime (local board state — don't commit) # hai runtime (local board state — don't commit)
.kb/ .kb/
.hai/ .hai/

View File

@@ -11,6 +11,7 @@
"build:exe": "pnpm build && pnpm --filter @dustinbyrne/kb build:exe", "build:exe": "pnpm build && pnpm --filter @dustinbyrne/kb build:exe",
"build:exe:all": "pnpm build && pnpm --filter @dustinbyrne/kb build:exe:all", "build:exe:all": "pnpm build && pnpm --filter @dustinbyrne/kb build:exe:all",
"test": "pnpm -r test", "test": "pnpm -r test",
"test:coverage": "pnpm -r test -- --coverage",
"typecheck": "pnpm -r typecheck", "typecheck": "pnpm -r typecheck",
"changeset": "changeset", "changeset": "changeset",
"version": "changeset version", "version": "changeset version",

View File

@@ -60,6 +60,7 @@
"@kb/dashboard": "workspace:*", "@kb/dashboard": "workspace:*",
"@kb/engine": "workspace:*", "@kb/engine": "workspace:*",
"@sinclair/typebox": "^0.34.0", "@sinclair/typebox": "^0.34.0",
"@vitest/coverage-v8": "^3.1.0",
"tsup": "^8.5.1", "tsup": "^8.5.1",
"tsx": "^4.19.0", "tsx": "^4.19.0",
"typescript": "^5.7.0", "typescript": "^5.7.0",

View File

@@ -3,5 +3,12 @@ import { defineConfig } from "vitest/config";
export default defineConfig({ export default defineConfig({
test: { test: {
include: ["src/**/*.test.ts"], include: ["src/**/*.test.ts"],
coverage: {
enabled: false,
reporter: ["text", "html", "json"],
reportsDirectory: "./coverage",
include: ["src/**/*.ts"],
exclude: ["**/*.test.ts", "**/*.d.ts", "dist/**"],
},
}, },
}); });

View File

@@ -22,6 +22,7 @@
}, },
"devDependencies": { "devDependencies": {
"@types/node": "^25.5.0", "@types/node": "^25.5.0",
"@vitest/coverage-v8": "^3.1.0",
"typescript": "^5.7.0", "typescript": "^5.7.0",
"vitest": "^3.1.0" "vitest": "^3.1.0"
}, },

View File

@@ -3,5 +3,12 @@ import { defineConfig } from "vitest/config";
export default defineConfig({ export default defineConfig({
test: { test: {
include: ["src/**/*.test.ts"], include: ["src/**/*.test.ts"],
coverage: {
enabled: false,
reporter: ["text", "html", "json"],
reportsDirectory: "./coverage",
include: ["src/**/*.ts"],
exclude: ["**/*.test.ts", "**/*.d.ts", "dist/**"],
},
}, },
}); });

View File

@@ -42,10 +42,11 @@
"@types/react": "^19.0.0", "@types/react": "^19.0.0",
"@types/react-dom": "^19.0.0", "@types/react-dom": "^19.0.0",
"@vitejs/plugin-react": "^4.3.0", "@vitejs/plugin-react": "^4.3.0",
"@vitest/coverage-v8": "^3.1.0",
"jsdom": "^29.0.1", "jsdom": "^29.0.1",
"typescript": "^5.7.0", "typescript": "^5.7.0",
"vite": "^6.0.0", "vite": "^6.0.0",
"vitest": "^4.1.1" "vitest": "^3.1.0"
}, },
"private": true "private": true
} }

View File

@@ -14,5 +14,12 @@ export default defineConfig({
globals: true, globals: true,
include: ["app/**/*.test.{ts,tsx}", "src/**/*.test.{ts,tsx}"], include: ["app/**/*.test.{ts,tsx}", "src/**/*.test.{ts,tsx}"],
setupFiles: ["./vitest.setup.ts"], setupFiles: ["./vitest.setup.ts"],
coverage: {
enabled: false,
reporter: ["text", "html", "json"],
reportsDirectory: "./coverage",
include: ["app/**/*.{ts,tsx}", "src/**/*.{ts,tsx}"],
exclude: ["**/*.test.{ts,tsx}", "**/*.d.ts", "dist/**"],
},
}, },
}); });

View File

@@ -27,8 +27,9 @@
}, },
"devDependencies": { "devDependencies": {
"@types/node": "^25.5.0", "@types/node": "^25.5.0",
"@vitest/coverage-v8": "^3.1.0",
"typescript": "^5.7.0", "typescript": "^5.7.0",
"vitest": "^4.1.1" "vitest": "^3.1.0"
}, },
"private": true "private": true
} }

View File

@@ -0,0 +1,14 @@
import { defineConfig } from "vitest/config";
export default defineConfig({
test: {
include: ["src/**/*.test.ts"],
coverage: {
enabled: false,
reporter: ["text", "html", "json"],
reportsDirectory: "./coverage",
include: ["src/**/*.ts"],
exclude: ["**/*.test.ts", "**/*.d.ts", "dist/**"],
},
},
});

573
pnpm-lock.yaml generated

File diff suppressed because it is too large Load Diff