Files
Solo_bot/tests/SMOKE_CHECKLIST.md
T

2.7 KiB

Smoke Checklist Before Launch

1) Automated checks

Run from project root:

/home/vlad/dev/Solo_bot/venv/bin/python -m compileall /home/vlad/dev/Solo_bot -q

Run unit tests from writable directory (to avoid log file permission side effects):

cd /tmp
PYTHONPATH="/home/vlad/dev/Solo_bot" /home/vlad/dev/Solo_bot/venv/bin/python -m unittest discover -s "/home/vlad/dev/Solo_bot/tests" -q

Expected result:

  • test suite exits with code 0
  • all tests pass

1.1) Runtime start convention

  • For this project, the canonical full runtime start command is sudo python3 main.py
  • Do not treat root-owned runtime artifacts in alembic/ or /tmp as a permissions bug by default
  • Do not change ownership or permissions during smoke checks unless explicitly requested
  • If you need isolated checks, it is still acceptable to run uvicorn api.main:app or npm run dev separately, but that is not the primary production-like startup path

2) Core migration checks

  • Start app in staging once and verify DB init passes:
    • account schema migration
    • tg mirror backfill
  • Confirm no missing column errors for:
    • tg_id mirrors in billing-related tables
    • created_by_tg_id for scheduled broadcasts

3) Identity and actor checks

Validate these three scenarios end-to-end:

  • tg-only user:
    • bot flow works
    • actor surface resolves as telegram
  • web-only user:
    • auth/login works without Telegram
    • billing user is created with internal users.id
  • linked user:
    • link Telegram to existing web account
    • ensure billing remains on same users.id
    • Telegram notifications use chat id, not internal id

4) Payment and temporary state checks

  • Create temporary payment state and complete payment via webhook simulation
  • Verify:
    • temporary state is found/cleared correctly
    • payment row uses user_id billing relation
    • tg_id mirror is populated when Telegram exists
  • Ensure no message send attempts to internal users.id as chat_id

5) Gifts and referrals checks

  • Gift creation:
    • sender resolves by legacy ref
    • gift stores sender_user_id and mirror sender_tg_id
  • Referral creation:
    • self-referral blocked
    • valid referral stored on billing ids
    • mirrors updated where applicable

6) Scheduled broadcasts checks

  • Create broadcast by legacy creator ref
  • Verify:
    • created_by_user_id is resolved when user exists
    • created_by_tg_id mirror is stored
    • listing by created_by_tg_id works

7) Runtime warnings to monitor

  • Pydantic warning about model_custom_emoji_id is non-blocking but should be cleaned later
  • Deprecation warnings for datetime.utcnow() are non-blocking but should be migrated to timezone-aware UTC