Test Coverage Overhaul
Massive expansion of the test suite across the entire monorepo — from ~900 tests to 2,300+ tests across 55 test files.
New Test Coverage by Package
| Package | Tests | Files | Key Areas |
|---|---|---|---|
| API | 491 | 6 | DataLoaders, cursor pagination, error classes, Zod validation, Redis cache |
| Web | 266 | 12 | Zustand stores, RBAC, Redis utilities, auth hooks |
| Math Engine | 1,039 | 19 | Abstract algebra (groups/rings/fields), propositional logic prover, symbolic simplification |
| Plot Engine | 323 | 13 | Buffer pools, marching squares, shader cache, CSV/SVG export |
| Workers | 187 | 5 | Sliding window rate limiting, R2 storage utilities |
| Total | 2,306 | 55 |
Highlights
- 30+ new test files covering previously untested production code
- Abstract algebra suite (190 tests): groups, rings, fields, homomorphisms, Galois theory
- Logic prover suite (112 tests): formula construction, truth tables, inference rules, proof search
- Symbolic simplification (91 tests): constant folding, identity rules, expand/factor/substitute
- API infrastructure (491 tests): full coverage of GraphQL error hierarchy, DataLoader batching, cursor pagination, input validation
- Zustand stores (55+ tests): calculator store with Immer, bookmarks, worksheets, collaboration
- Fixed parser test bug:
extractVariablescorrectly excludespias a known constant - Fixed TypeScript 6.0 strict mode issues in test files (
vi.stubEnvinstead of directprocess.envassignment)
Infrastructure
- Standardized Vitest configs across all packages
- Disabled typecheck in math-engine vitest config (causes indefinite hang — use
tsc --noEmitseparately) - Cleaned up unused mocks in web vitest setup