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

139 lines
4.7 KiB
Markdown

# 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