| name | smoke-suite-debugging |
| description | Use this when smoke tests fail (binary/web assets, Playwright setup, server lifecycle, ports, env vars). |
Quick checklist
- Ensure Playwright browsers exist
npm run playwright:install
- Ensure build artifacts are fresh
- Full build + smoke:
npm run smoke - Quick smoke (assumes you already built):
npm run test:smoke:quick
- Run one smoke test first
- By name:
npm run test:smoke:quick -- -t "<substring>"
- By file:
npm run test:smoke:quick -- smoke/tests/<suite>.smoke.spec.ts
Common failure modes
“Binary not found”
- Smoke resolves the binary from
target/release/lotarby default. - Fix: run
npm run build, or setLOTAR_BINARY_PATH(orLOTAR_BIN) to a custom path.
- Smoke resolves the binary from
“Port already in use”
- The harness normally auto-picks a free port; failures may indicate a stuck server.
- Re-run with a single test in-band (
--runInBand) so it’s easier to spot lifecycle issues.
“SSE readiness / flaky waits”
- Smoke uses
LOTAR_SSE_READYhooks and server heartbeats; seedocs/help/serve.mdfor the testing aids.
- Smoke uses
Useful env vars
LOTAR_BINARY_PATH/LOTAR_BIN: override the binary used by smoke.LOTAR_TASKS_DIR,LOTAR_HOME: smoke sets these per-test (seesmoke/helpers/workspace.ts).RUST_LOG=debugorLOTAR_DEBUG=1: can help when diagnosing server/CLI behavior (keep logs free of secrets/PII).
Debugging approach
- Prefer
npx vitest watch --config smoke/vitest.config.ts --runInBandfor a tight loop. - If needed, temporarily enable inherited stdio in the smoke helpers while debugging (but keep changes scoped and revert before finalizing).