Closes gap-analysis v2 §7.8 (no E2E vs live Postgres / §10.8
(Testcontainers opt-in suite).
- tests/e2e/transactionLifecycle.e2e.test.ts — Postgres-backed E2E
suite via @testcontainers/postgresql. Brings up a real postgres:15
container, applies schema.sql (via pg simple-query protocol so $$
function bodies survive) + migrations 002/003/004, wires the
plans endpoints against it, and asserts:
* POST /api/plans persists and reads back
* eventBus.publish produces a hash-chained pair with verifyChain
returning ok
* idempotency_keys row insertion round-trips
- jest.e2e.config.js — dedicated config for tests/e2e/ with 120s
timeout; default jest.config.js now ignores /e2e/ so `npm test`
stays fast (<5s) and doesn't require Docker.
- package.json — adds 'npm run test:e2e' (sets RUN_E2E=1).
- devDependencies — testcontainers + @testcontainers/postgresql.
- Suite gates on `RUN_E2E=1`. Without it the describe block is
skipped, so CI environments without Docker don't fail; a guard
test asserts the skip invariant.
- .github/workflows/ci.yml — adds orchestrator-test (tsc + jest)
and orchestrator-e2e (gated on the 'run-e2e' PR label or any
push to main).
- Verification:
npx tsc --noEmit clean
npm test (unit) 7 suites, 80/80 passing
npm run test:e2e 1 suite, 4/4 passing (docker up)
- Added a new section in CURRENT_STATUS.md detailing prerequisites and quick start instructions for development setup.
- Updated environment variable validation to include defaults for missing variables in env.ts.
- Improved error handling in errorHandler.ts for better validation feedback.
- Made various code adjustments across services to ensure robustness and clarity.
- Integrated ECDSA for signature verification in ComboHandler.
- Updated event emissions to include additional parameters for better tracking.
- Improved gas tracking during execution of combo plans.
- Enhanced database interactions for storing and retrieving plans, including conflict resolution and status updates.
- Added new dependencies for security and database management in orchestrator.