Mobile Billing QA Checklist¶
Manual testing checklist for subscription, upgrade, downgrade, cancellation, and credit flows on mobile (< 768px viewport).
Prerequisites¶
Same as desktop — see Desktop Billing QA.
Test on both portrait and landscape orientations where marked [P+L].
1. Settings Access [P+L]¶
- Bottom nav shows "Settings" tab with gear icon
- Tap Settings → 4-tab layout: Account / Billing / Credits / Prefs
- Tabs scroll horizontally on very small screens
- All tabs accessible and responsive
- Tab buttons have min 44px touch target
2. Trial Flow¶
- New user lands on plan picker (full-screen, grid-cols-1 on mobile)
- Creator card shows START FREE TRIAL
- Tap → dashboard loads, bottom nav visible
- Settings → Credits tab shows 30 AI MIN with progress bar
- Settings → Credits tab shows trial grant in card-based history
3. New Subscription¶
- Plan picker: SUBSCRIBE on a tier → Stripe Checkout (mobile-optimized)
- Complete payment → "Processing Payment" screen
- Transitions to dashboard with updated credits in sidebar
- Settings → Billing tab shows plan card with tier name + status badge
- Settings → Billing tab shows payment in card-based history
- Settings → Credits tab shows subscription grant
4. Upgrade (Hobby → Creator)¶
- Plan picker shows UPGRADE button on Creator card
- Tap UPGRADE → confirmation screen with prorated amount
- Prorated amount is correct (not full price)
- GO BACK button returns to plan picker
- CONFIRM UPGRADE → "Plan Updated" success screen
- CONTINUE TO DASHBOARD → credits updated
- Touch targets: all buttons min 44px height
5. Downgrade (Creator → Hobby)¶
- Plan picker shows DOWNGRADE on Hobby card
- Tap DOWNGRADE → "What You'll Lose" modal (responsive padding p-4)
- Features list readable on small screen
- Effective date shown
- KEEP MY CURRENT PLAN → modal closes
- CONFIRM DOWNGRADE → success screen with effective date
- Creator tier still active until period end
6. Cancellation Flow¶
- Settings → Billing tab → CANCEL SUBSCRIPTION button visible
- Tap → CancelModal opens with responsive padding (p-4 on mobile)
- Step 1: Reason picker — radio buttons have adequate touch targets
- Step 1: Detail textarea visible when required
- Step 2: "What You'll Lose" warning — red list readable
- No-refund warning visible
- Step 3a (too_expensive): Discount offer with correct percentages
- Step 3b (quality/features/competitor): "Let Us Help" with email + Discord links
- Step 3b: textarea, SEND TO OUR TEAM, JOIN OUR DISCORD all have min 44px touch targets
- Step 4: Remind/Cancel/Keep buttons — all min 44px
- Step 5 (discount accepted): "Discount Applied" confirmation
- Cancel completes → redirected to plan picker
- One-time discount: accept once → cancel again with "too expensive" → discount step skipped
7. Billing Tab (Mobile Settings)¶
- Current plan card: tier name, status badge, billing interval
- UPGRADE PLAN button → full-screen plan picker
- UPDATE PAYMENT METHOD → Stripe portal or error message
- CANCEL SUBSCRIPTION → opens CancelModal
- Payment history: card-based layout (not table)
- Each payment card shows amount, date, status with color
- PREV/NEXT pagination buttons min 44px
- All buttons and controls have adequate touch targets
8. Credits Tab (Mobile Settings)¶
- Balance card: large number + progress bar
- Progress bar: orange when healthy, red when low
- Reserved credits indicator when analysis running
- Transaction history: card-based layout
- Each card shows description (truncated), date, ± amount, balance
- Green for grants, red for usage
- Scrollable without horizontal overflow
9. Account Tab (Mobile Settings)¶
- Profile card: avatar, username, email
- SIGN OUT button works
- App info: version, project count
10. Preferences Tab (Mobile Settings)¶
- Language selector works (EN-US, PT-BR, ES, FR)
- Theme buttons: Light/Dark/Auto — all min 44px
- Theme switches correctly
11. Sidebar Credit Badge¶
- Credits visible above bottom nav area
- Updates after subscribe/analyze without refresh
- Trial countdown: "TRIAL · Xd LEFT"
12. Beta Access¶
- Beta user sees "Welcome to the Beta" modal on first login (full-screen, readable)
- Modal shows 240 AI minutes, 30-day renewal, stacking info
- Dismiss persists across refresh
- Settings → Billing shows orange bolt "BETA" badge next to tier
- Settings → Credits shows "Beta" bar (X/240) with renewal date
- Beta + subscription: two separate bars visible
- CreditBadge (above bottom nav) shows bolt icon + "BETA"
13. Post-Cancel Resubscribe¶
- Plan picker shows SUBSCRIBE (not trial)
- Subtitle: "Choose a plan to continue"
- Subscribe → Stripe → dashboard restored
14. Edge Cases [P+L]¶
- Rotate during checkout flow → no crash or lost state
- Rotate during CancelModal → modal remains visible and usable
- Bottom nav hidden in landscape during review → Settings still accessible from portrait
- Plan picker in landscape → single column, scrollable
- Very small screen (320px width) → all text readable, no overflow
- Double-tap prevention on payment buttons
14. Storage Quota¶
- Upload step shows storage bar with label ("1.2 GB / 2 GB")
- Storage bar color: orange normal, yellow > 80%, red full
- When storage full → upload zone replaced with lock icon + "Storage full" message
- Upload that would exceed quota → file shows inline error (not just "FAILED")
- YouTube import → does NOT count toward storage
- Settings → Billing → Usage card shows storage bar + project count
- Storage bar readable on small screen, no overflow
- Asset thumbnails show file size below each (e.g. "40 MB")
- Asset group headers show total size (e.g. "3 assets · 120 MB")
- Asset upload exceeding quota → red error banner with backend message
- Storage bar updates without page refresh after upload/delete
15. Project Limits¶
- Projects tab shows count "⅔" next to NEW button
- At limit → NEW button disabled (opacity-50)
- At limit → "Create Your First Project" button also disabled
- Delete project → count updates, NEW re-enabled
- Settings → Billing → Usage shows "Projects: 2 / 3" (red at limit)
16. AI Director Gating¶
- Hobby user → Director's Notes shows "Director's Notes · Creator+" and cannot expand
- Creator user → Director's Notes works normally, collapsible
- Touch target on Director's Notes button adequate
17. Export Retention¶
- Export shows "Xd left" next to READY status
- Expired export → "EXPIRED" in red, download button hidden
- Expiry warning ≤ 3 days → yellow text
- Re-export after expiry works fine
18. Watermark [P+L]¶
- Trial user: exported video has Sapari watermark (bottom-right, semi-transparent)
- Paid user: exported video has NO watermark
- Beta user (granted via admin invite, even with prior trial entitlement): exported video has NO watermark
- Trial user: video preview in SwipeReview shows watermark overlay
- Tap watermark → plan picker opens (full-screen)
- Paid user: no watermark overlay in preview
- Beta user: no watermark overlay in preview (preview must match export — both gate on
billing.can_watermark_free) - Watermark visible in both portrait and landscape orientations