Use this checklist after backend/frontend deployments to quickly validate Telegram Mini App flows, including Coinbase Smart Wallet and MetaMask fallback behavior.
- Frontend is live on
https://tasks.epowex.com. - Backend is live and reachable through frontend
/apirewrite. TELEGRAM_BOT_TOKENis configured in backend.BASE_RPC_URL(orRPC_URL) is configured in backend for smart-wallet signature verification.- Admin wallet is present in
ADMIN_WALLETS. - You have 2 Telegram accounts available:
- Account A: Group owner/admin.
- Account B: Group member/claimant.
- Open Mini App from Telegram with Account A.
- Confirm Telegram user is shown as verified in UI.
- Expected: No auth error banners.
- In Telegram WebView, click
Open In External BrowserorCopy Mini App Link. - Open the link in Coinbase Wallet browser.
- Connect wallet and click
Update Linked Wallet(orLink Wallet). - Sign the wallet-link message.
- Expected: Wallet link succeeds (no
Invalid wallet signature).
- In Telegram WebView, click
Open In MetaMask Browser. - Connect MetaMask wallet and click
Update Linked Wallet. - Sign the wallet-link message.
- Expected: Wallet link succeeds (no URL-scheme or signature failure).
- With a linked wallet, click
Request Daily Claim. - Sign the daily-claim message in wallet.
- Expected: Claim is accepted.
- Expected: No
Invalid signatureorSignature does not match walletfor valid signer.
- From group owner flow (Account A), register group using Mini App (
registerGroupIdflow). - Expected: Registration succeeds.
- Expected: Group title is stored and later visible in admin rewards table.
- Use Account B (member of Account A's group) and complete daily claim via source group flow (
sourceGroupId/group context). - Expected: Group owner reward record is created as
pending(unless blocked by policy).
- Open admin page:
https://tasks.epowex.com/admin/telegram-group-rewards. - Locate pending reward and click
Distribute. - Expected: Status changes to
Paidwith tx hash. - Expected: Ledger entry is created for telegram group owner reward payout.
- Connect wallet X, but sign with wallet Y.
- Expected: Request is rejected with signature mismatch error.
- Use a user outside required official group.
- Expected: Wallet connect or daily claim is blocked with membership-required error.
- Submit daily claim twice within 24h.
- Expected: Second claim is rejected by cooldown logic.
- Group owner attempts to claim in a way that attributes reward to self.
- Expected: Group owner reward is blocked with reason explaining self-attribution policy.
Mark release as pass only if all are true:
- Coinbase wallet link works via external/wallet browser path.
- MetaMask wallet link works via MetaMask browser path.
- Daily claim succeeds with valid signatures for both EOA and smart-wallet users.
- Group title appears correctly in admin rewards table.
- Pending-to-paid admin reward transition works with tx hash persisted.
- No regression in Telegram auth and membership checks.
POST /api/telegram-miniapp/authPOST /api/telegram-miniapp/wallet/noncePOST /api/telegram-miniapp/wallet/connectPOST /api/epwx/daily-claimPOST /api/telegram-miniapp/group-owner/registerGET /api/telegram-miniapp/group-owner/rewards/adminPOST /api/telegram-miniapp/group-owner/rewards/:rewardId/mark-paid
If you deploy only backend (for example git pull + pm2 restart epwx-api), run this command on the server to trigger the same GitHub smoke workflow automatically:
cd /path/to/epwx_task_hub && GITHUB_TOKEN=YOUR_GITHUB_TOKEN node scripts/trigger-post-deploy-smoke.mjsOptional overrides:
POST_DEPLOY_SMOKE_REPO(defaultepwx/epwx_task_hub)POST_DEPLOY_SMOKE_EVENT(defaultpost-deploy-smoke)POST_DEPLOY_SMOKE_FRONTEND_URL(defaulthttps://tasks.epowex.com)POST_DEPLOY_SMOKE_API_BASE_URL(defaulthttps://api.epowex.com)