# 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