Testing
Workspace tests
Primary gate:
cargo test --workspacePR CI runs fmt / clippy / cargo test --workspace plus the VitePress docs build only. Stress, sim, fuzz-smoke, wasm-size, Studio Playwright, and Miri run on apex push (and manual workflow_dispatch) — see Build → CI overview.
Studio / playground UI tests
From clients/studio:
| Command | What | In CI today? |
|---|---|---|
npm run test:unit | Builder / sheetCompile / workbookStore tripwires | No — run locally / in PR when touching Studio IR |
npm run test:e2e | Playwright against serve Studio (STUDIO_URL from e2e-run.mjs) | Yes — apex studio-e2e job |
npm run test:playground | Workbook shell (PLAYGROUND_URL required; skips otherwise) | Local / agent |
npm run test:playground:ci | build:wasm + vite preview + playground e2e | Yes — apex playground-e2e job |
?bench=grid100k | 100k-row scroll budget in Playwright | Covered by the Studio e2e suite / Status row |
Do not read “Studio Playwright green” as “playground mobile e2e green.”
Send tripwires
Async modules must stay Send-safe: lock guards drop before .await, and futures that cross threads must not capture non-Send state.
Convention (engine plan P6): keep a compile-time assertion test that would fail if the protection were removed. Canonical example: read_future_is_send in crates/eelden-storage/src/async_pager.rs — it builds a read_page future and passes it through assert_send.
When you add or change an async boundary, add or update a matching tripwire. Review guides should name which test protects which invariant.
Maintainer harnesses (not product CLI)
These binaries exercise limits, recovery, and fuzz smoke. They are CI / maintainer tools, not part of the product eelden CLI surface documented for consumers.
| Binary | Role | Typical CI invocation |
|---|---|---|
eelden-stress | Limit / recovery stress (Meta-first profiles) | cargo run -p eelden-stress --release -- --profile smoke |
eelden-sim | Deterministic sim / DST skeleton | cargo run -p eelden-sim --release -- --seed-start 1 --count 200 --ops 80 |
eelden-fuzz-smoke | Stdlib PRNG fuzz smoke (full cargo-fuzz lives under /fuzz) | cargo run -p eelden-fuzz-smoke --release with EELDEN_FUZZ_SMOKE_SECS=60 |
Do not document these as user-facing commands on consumer pages.
Plans and deeper design
Living plans for harnesses and engine work: internals/plans/ — start with plans/README.md and stress-harness.md / dst-skeleton.md as relevant.
Tripwire and concurrency teaching: internals/review-guides/ (e.g. async-pager.md).
Public capability claims stay on Status — plans are not a product roadmap.