Closer/docs/qa/private-mvp-checklist.md

4.7 KiB

Private MVP QA Checklist

Manual testing checklist for the Closer app private MVP.

Onboarding

  • App launches to onboarding screen on fresh install
  • Onboarding screens advance correctly (swipe/tap)
  • "Get Started" leads to sign-up screen
  • Sign-up: email + password creates account
  • Sign-up: validation errors show (empty fields, weak password, existing email)
  • Login: existing user can sign in
  • Login: "Forgot password" navigates to reset screen
  • Create Profile: name + avatar saved to Firestore
  • Profile creation completes and navigates to home

Home Screen

  • Home screen loads after onboarding
  • Daily question card is visible
  • Question pack sections display correctly
  • Navigation between tabs (Home, Dates, Wheel, Settings)
  • Pull-to-refresh reloads content
  • Partner home view shows when coupled

Questions

Daily Question

  • Today's question loads
  • User can answer (select option or type response)
  • Answer is saved to Firestore
  • "Partner answered" notification flow works (if coupled)

Question Packs

  • Pack library screen lists available packs
  • Premium packs show lock icon (if not subscribed)
  • Free packs can be opened
  • Category picker shows categories
  • Selecting a category loads questions from that category

Question Detail & Thread

  • Question detail screen loads with full text
  • Answer reveal shows both partner answers (if both answered)
  • Discussion thread loads messages
  • User can send a message in thread
  • Answer history screen shows past answers

Date Match

  • Date match screen shows swipe UI
  • Swipe right = "love", swipe left = "skip"
  • "Maybe" button works
  • Match reveal screen appears when both partners like same idea
  • Date matches screen shows all mutual matches
  • Empty state shows when no matches

Date Builder

  • Date builder screen loads with suggestion fields
  • Date and time picker buttons present (currently TODO placeholders)
  • Save date plan works (if implemented)

Bucket List

  • Bucket list screen shows saved date ideas
  • Adding items works
  • Completing/removing items works

Wheel

  • Spin wheel animates and selects a category
  • Category picker shows available categories
  • Wheel complete screen shows result
  • Wheel history screen shows past spins

Partner Pairing

Create Invite

  • Invite code generates and displays
  • Copy button copies code to clipboard
  • Share button opens Android share sheet (Intent.ACTION_SEND)
  • "Accept instead" link navigates to AcceptInvite

Accept Invite

  • Code entry field works
  • Back button navigates correctly
  • Valid code proceeds to InviteConfirm

Invite Confirm

  • Partner info displays correctly
  • "Confirm" button links couple in Firestore
  • "Wrong code" link returns to AcceptInvite
  • Back button works

Settings

  • Settings screen loads with all sections
  • Profile row shows local profile state (not fake data)
  • Partner row tappable, navigates to RelationshipSettings
  • Account screen shows profile info
  • Delete account screen requires checkbox acknowledgement
  • Notification settings screen present
  • Privacy screen present
  • Subscription screen present
  • Legal section: Privacy Policy link opens externally
  • Legal section: Terms of Service link opens externally
  • Sign out works

Paywall

  • Paywall screen shows benefits list
  • Product options display with prices
  • Purchase button triggers RevenueCat flow
  • Restore purchases link works
  • Privacy Policy and Terms links at bottom open externally
  • "Subscription terms apply" disclaimer visible
  • Thank-you overlay appears on successful purchase
  • Loading and error states display correctly

Notifications

  • App requests POST_NOTIFICATIONS permission on Android 13+
  • FCM token obtained and stored in Firestore
  • Quiet hours can be set in notification settings
  • Notification channel "Reminders" created

Edge Cases & Crash Risks

  • App works offline (local cache)
  • App handles no network gracefully (error states, not crashes)
  • Rapid navigation doesn't crash (tap all tabs quickly)
  • Back navigation from every screen works
  • Rotation doesn't crash (if not locked to portrait)
  • Empty states show for: no questions, no matches, no history, no partner

Known Issues (from code scan)

  • TODOs in code: DateBuilderScreen.kt has TODO placeholders for date/time picker dialogs (lines 174, 182)
  • Debug logging: QuestionJsonParser.kt uses android.util.Log.e() — should use Timber or remove before release