Migrates blog and marketing-pages to the same pattern auth landed in
f7baa8b: vitest config consumes vitestThresholdsFromBands(
DEFAULT_COVERAGE_BANDS) instead of the duplicated hand-written
thresholds block, and each manifest declares its coverage section
explicitly.
Verified semantically identical to the previous hand-written
thresholds — the same numbers come out the other end of the helper.
No new regressions:
- blog: 89 tests, 96.33% overall, all bands green
- marketing-pages: 67 tests, 95.28% overall — controllers/ shows a
real 93.54% lines / 90.9% branches gap that has been there since
before this refactor (the previous hand-written threshold was the
same 100%/95%). This is one of the L0 unification work items
listed in the PRD's findings; capturing here as the third feature
with real test gaps (navigation, media, marketing-pages).
Three of five features now drive their vitest thresholds from the
manifest helper: auth ✓, blog ✓, marketing-pages ✓. Navigation and
media stay on the legacy config until L0 unification closes their
test gaps (touching them would expose the same failures and add
nothing).
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
33 lines
1.2 KiB
TypeScript
33 lines
1.2 KiB
TypeScript
import path from "node:path";
|
|
import { mergeConfig } from "vitest/config";
|
|
import { nodeVitestConfig } from "@repo/core-typescript/vitest.base.node";
|
|
import {
|
|
DEFAULT_COVERAGE_BANDS,
|
|
vitestThresholdsFromBands,
|
|
} from "@repo/core-shared/conformance/coverage";
|
|
|
|
// Coverage thresholds derived from DEFAULT_COVERAGE_BANDS via the shared
|
|
// helper (ADR-020). The feature.manifest.ts `coverage.bands` section
|
|
// declares these for boot-time `assertFeatureConformance`. Edit the
|
|
// manifest, not this file, when adjusting per-feature bands.
|
|
export default mergeConfig(nodeVitestConfig, {
|
|
test: {
|
|
coverage: {
|
|
exclude: [
|
|
// DI bootstrap — wires InversifyJS at app startup; not unit-testable
|
|
"src/di/bind-production.ts",
|
|
// Pure TypeScript interface files — not executable
|
|
"src/application/repositories/**",
|
|
// Payload CMS collection config — declarative data, tested via Payload integration
|
|
"src/integrations/cms/**",
|
|
// React Query option builders — integration-tested in apps
|
|
"src/ui/**",
|
|
],
|
|
thresholds: vitestThresholdsFromBands(DEFAULT_COVERAGE_BANDS),
|
|
},
|
|
},
|
|
resolve: {
|
|
alias: { "@": path.resolve(__dirname, "./src") },
|
|
},
|
|
});
|