CodeVetter · Repo Unpack · Testing signals
pmndrs/jotai
Tests and CI were inspected, not executed; no passing result or coverage percentage is asserted. Vitest runs the library suites in jsdom with React Testing Library and source aliases. Inspected regressions cover dependency notifications, cancellation, persistence, raw hooks, and garbage collection. Root automation checks several compatibility dimensions, but its configured scope does not establish end-to-end website or service coverage.
- Vitest selects tests under tests, uses jsdom and the React plugin, enables globals for Testing Library cleanup, aliases jotai imports to src, and loads jest-dom matchers.
- Store regressions assert unchanged-value notification suppression, dependency cleanup, and recovery of derived notifications during nested no-op writes plus subscription churn and synchronous event cascades (#3353).
- Async tests use fake timers and assert abort on dependency replacement, continued execution after unsubscribe, Suspense loading states, and suppression of obsolete results during rapid updates.
- Storage tests assert mount hydration, persisted increments, RESET deletion, getOnInit reads, sync/async validator fallbacks, and custom subscription delivery; these exercise adapters and jsdom rather than live cross-tab browsers.
- Raw-hook tests assert stable promise identity and preservation of a subscription across value changes; RawSync tests assert non-suspending promise returns and detection of a child's mount-time write.
- Memory-leak tests use jest-leak-detector for unreferenced atoms, subscribed/unsubscribed state, and removed sync/async dependencies; separate store tests expect deep synchronous graphs to surface stack overflow and listeners to continue after another listener throws.
- Inspected CI runs format/types/lint/spec/build across Node 22.12, 24, and 26; separate matrices test React 18/19 plus canary/experimental versions, TypeScript 5.5–5.9, and built ESM in development/production modes.
- Configured coverage includes src/** and defines no threshold; ordinary root type checking includes src/tests/benchmarks, while lint excludes examples and website. The inspected root test workflow does not invoke website builds, contact-service checks, or example UI tests.