Closes the per-layer threshold gaps surfaced by the 2026-05-13 PRD
audit. After this commit all five features pass their declared
100%/100%/95%/100% bands on entities + use-cases + controllers.
media (was: missing @vitest/coverage-v8 + missing vitest config block +
one controller at 86.66% lines / 75% branches)
- Added @vitest/coverage-v8 dev dep
- Applied the standard helper-driven vitest config
- Declared the coverage section in feature.manifest.ts
- Added 2 tests to list-media.controller.test.ts covering the
InputParseError branch (unknown fields + invalid limit)
- Now: 16 files / 80 tests / 97.12% / controllers 100%
marketing-pages (was: get-site-settings.controller at 93.54% lines /
90.9% branches)
- Added 1 test to get-site-settings.controller.test.ts covering the
InputParseError branch on unknown fields
- Now: 22 files / 68 tests / 95.66% / controllers 100%
navigation (was: entities/errors/common.ts at 50% function hits +
get-header.controller at 86.66% lines / 80% branches)
- Root cause: InputParseError class never instantiated in any test
- Added 2 tests to get-header.controller.test.ts covering the
InputParseError branch + verifying the Zod cause is preserved.
One test exercises both gap files at once (controller throws,
InputParseError class is constructed).
- Wired navigation/vitest.config.ts through the shared helper
- Declared the coverage section in feature.manifest.ts
- Now: 11 files / 45 tests / 98.04% / entities + controllers 100%
All 5 features now drive thresholds from the manifest via the helper.
The duplication problem the keystone eliminates is gone.
Repo-wide via `pnpm coverage:aggregate`:
- statements 95.87% (lh 2994 / lf 3123)
- branches 88.91% (brh 433 / brf 487)
- functions 100% (fnh 142 / fnf 142)
- lines 95.87%
`pnpm coverage:diff -- --base HEAD~1` reports status: pass.
coverage/summary.json refreshed in the same commit so the trend
captures the post-unification state.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
91 lines
1.6 KiB
JSON
91 lines
1.6 KiB
JSON
{
|
|
"generatedAt": "2026-05-13T14:38:41.601Z",
|
|
"commit": "6428f10",
|
|
"repo": {
|
|
"statements": 95.87,
|
|
"branches": 88.91,
|
|
"functions": 100,
|
|
"lines": 95.87,
|
|
"counts": {
|
|
"lf": 3123,
|
|
"lh": 2994,
|
|
"brf": 487,
|
|
"brh": 433,
|
|
"fnf": 142,
|
|
"fnh": 142
|
|
}
|
|
},
|
|
"byPackage": {
|
|
"@repo/auth": {
|
|
"statements": 93.85,
|
|
"branches": 90.82,
|
|
"functions": 100,
|
|
"lines": 93.85,
|
|
"counts": {
|
|
"lf": 797,
|
|
"lh": 748,
|
|
"brf": 98,
|
|
"brh": 89,
|
|
"fnf": 44,
|
|
"fnh": 44
|
|
}
|
|
},
|
|
"@repo/blog": {
|
|
"statements": 96.39,
|
|
"branches": 88.65,
|
|
"functions": 100,
|
|
"lines": 96.39,
|
|
"counts": {
|
|
"lf": 747,
|
|
"lh": 720,
|
|
"brf": 141,
|
|
"brh": 125,
|
|
"fnf": 29,
|
|
"fnh": 29
|
|
}
|
|
},
|
|
"@repo/marketing-pages": {
|
|
"statements": 95.66,
|
|
"branches": 83.93,
|
|
"functions": 100,
|
|
"lines": 95.66,
|
|
"counts": {
|
|
"lf": 715,
|
|
"lh": 684,
|
|
"brf": 112,
|
|
"brh": 94,
|
|
"fnf": 32,
|
|
"fnh": 32
|
|
}
|
|
},
|
|
"@repo/media": {
|
|
"statements": 97.13,
|
|
"branches": 90.53,
|
|
"functions": 100,
|
|
"lines": 97.13,
|
|
"counts": {
|
|
"lf": 557,
|
|
"lh": 541,
|
|
"brf": 95,
|
|
"brh": 86,
|
|
"fnf": 24,
|
|
"fnh": 24
|
|
}
|
|
},
|
|
"@repo/navigation": {
|
|
"statements": 98.05,
|
|
"branches": 95.12,
|
|
"functions": 100,
|
|
"lines": 98.05,
|
|
"counts": {
|
|
"lf": 307,
|
|
"lh": 301,
|
|
"brf": 41,
|
|
"brh": 39,
|
|
"fnf": 13,
|
|
"fnh": 13
|
|
}
|
|
}
|
|
}
|
|
}
|