Skip to content

Testing

Workspace tests

Primary gate:

bash
cargo test --workspace

PR 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:

CommandWhatIn CI today?
npm run test:unitBuilder / sheetCompile / workbookStore tripwiresNo — run locally / in PR when touching Studio IR
npm run test:e2ePlaywright against serve Studio (STUDIO_URL from e2e-run.mjs)Yes — apex studio-e2e job
npm run test:playgroundWorkbook shell (PLAYGROUND_URL required; skips otherwise)Local / agent
npm run test:playground:cibuild:wasm + vite preview + playground e2eYes — apex playground-e2e job
?bench=grid100k100k-row scroll budget in PlaywrightCovered 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.

BinaryRoleTypical CI invocation
eelden-stressLimit / recovery stress (Meta-first profiles)cargo run -p eelden-stress --release -- --profile smoke
eelden-simDeterministic sim / DST skeletoncargo run -p eelden-sim --release -- --seed-start 1 --count 200 --ops 80
eelden-fuzz-smokeStdlib 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.

Pre-alpha. Local-first. Stdlib-only Rust engine. Tenant concerns shifted left into the database.