4.7 KiB
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.kthas TODO placeholders for date/time picker dialogs (lines 174, 182) - Debug logging:
QuestionJsonParser.ktusesandroid.util.Log.e()— should use Timber or remove before release