The old suite exercised the built lib/ bundle, so v8 remapped almost nothing (8% src coverage) and every run needed a build first. The new suite imports src/ directly under two vitest projects (node for host/shared, jsdom for client), rendering real React 18 trees against the real dictionaries and ui-primitives, with faithful in-memory harness faces (cordis inject/effect, locale chain, slots, sessions provide) instead of plugin mocks. - 43 fine-grained, stateless, single-module spec files (606 tests) forked across workers: ~2.5s wall, no build step - v8 thresholds at 100/100/100/100 per file over src/** - host specs drive the real projection definitions (init/apply/view) plus one full cordis + SessionStore + SessionProjectionRegistry integration; the framework's snapshotJsonValue pins the projection-cache precondition on every intermediate fold state - oxlint's src ruleset now covers tests/** as well - typecheck covers the tests via tsconfig.tests.json
10 lines
531 B
TypeScript
10 lines
531 B
TypeScript
// Client project setup: React 18 `act` requires this flag to flush effects
|
|
// synchronously in tests; every jsdom spec shares the real React runtime.
|
|
;(globalThis as { IS_REACT_ACT_ENVIRONMENT?: boolean }).IS_REACT_ACT_ENVIRONMENT = true
|
|
|
|
// jsdom does not implement scrollIntoView; the plugin calls it when focusing
|
|
// a browser row. A no-op polyfill stands in for the platform (layout-free).
|
|
if (typeof Element !== 'undefined' && Element.prototype.scrollIntoView === undefined) {
|
|
Element.prototype.scrollIntoView = () => {}
|
|
}
|