Skip to content

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

Stripe CLI Reference

See Desktop Billing QA — Stripe CLI Reference.