mirror of
https://github.com/whekin/household-bot.git
synced 2026-03-31 08:44:02 +00:00
2.5 KiB
2.5 KiB
HOUSEBOT-061: Local End-to-End Smoke Tests for Billing Flow
Summary
Add a pragmatic local smoke test that exercises the main billing path against a real database with deterministic assertions.
Goals
- Provide
bun run test:e2efor local pre-deploy confidence. - Cover purchase ingestion, manual utility entry, and statement generation in one flow.
- Ensure smoke data is isolated and cleaned up automatically.
Non-goals
- Full browser or Telegram API end-to-end automation.
- Running destructive write tests in the default CI quality matrix.
- Comprehensive scenario coverage for every finance edge case.
Scope
- In: write-gated smoke script, docs, typed env for the smoke test, deterministic assertions, cleanup.
- Out: full staging environment orchestration.
Interfaces and Contracts
- Command:
bun run test:e2e - Required env:
DATABASE_URLE2E_SMOKE_ALLOW_WRITE=true
- Script behavior:
- creates temporary household/member/cycle data
- simulates Telegram topic purchase ingestion
- simulates finance commands for rent, utilities, and statements
- deletes created data in
finally
Domain Rules
- Use integer minor units only.
- Statement totals must match deterministic settlement behavior.
- Purchase-topic ingestion must not swallow non-purchase slash commands.
Data Model Changes
- None.
Security and Privacy
- Test writes are disabled unless
E2E_SMOKE_ALLOW_WRITE=true. - No production secrets are logged by the smoke script.
Observability
- Script prints a single success line on pass.
- Failures surface assertion or runtime errors with non-zero exit code.
Edge Cases and Failure Modes
- Missing
DATABASE_URL: fail fast in env validation. - Missing explicit write guard: fail fast before DB writes.
- Middleware ordering regression: smoke test should fail when commands stop emitting statements.
Test Plan
- Unit: parser/topic candidate tests cover slash-command exclusion.
- Integration:
bun run test:e2eagainst a migrated dev database. - E2E: same smoke script verifies purchase ingestion -> statement -> recalculated statement after utility update.
Acceptance Criteria
bun run test:e2eexecutes locally with deterministic output.- Purchase ingestion and utility updates are both covered in the same smoke flow.
- Docs explain required env and safety guard.
Rollout Plan
- Keep the smoke test local-first.
- Consider adding an opt-in CI job later once a dedicated disposable database is available.