Root cause: @vitest/coverage-v8@^4.1.0 forced vitest@4.1.9 into
apps/homepage/node_modules, creating two vitest installations (v2 at root,
v4 in homepage). @testing-library/jest-dom's vitest.d.ts augmented the root
vitest v2 module, but homepage tests imported vitest v4 — so the type
augmentation for matchers (toBeDisabled, toHaveAttribute, etc.) never applied.
Fix: downgrade @vitest/coverage-v8 from ^4.1.0 to ^2.1.9 to match vitest 2.x
used by the rest of the monorepo. This unifies vitest at v2.1.9 across all
workspaces, allowing the jest-dom type augmentation to take effect.
Validation:
- npm ls vitest: single v2.1.9 installation (no nested vitest in homepage)
- Homepage type-check (tsc --noEmit): 0 errors (all TS2339 resolved)
- Existing setup.ts and vitest.config.ts were already correctly configured