# UI Overhaul Test Plan ## Overview Testing the in-game UI improvements from feature/game-page-polish branch. ## Prerequisites - Production build running (`./start.sh prod`) - Access to https://gameplay-demo.manticorum.com - Mobile device or browser dev tools for mobile testing - An active game with both lineups submitted --- ## Test 1: CurrentSituation Player Cards ### 1.1 Desktop - Pitcher Card - [x] Navigate to active game - [x] Locate pitcher card in CurrentSituation component - [x] **Click** pitcher card - [x] **Expected**: PlayerCardModal opens showing pitcher's full playing card image - [x] **Expected**: Modal shows player name, position - [x] **Click** outside modal or X button - [x] **Expected**: Modal closes ### 1.2 Desktop - Batter Card - [x] **Click** batter card in CurrentSituation - [x] **Expected**: PlayerCardModal opens showing batter's full playing card image - [x] **Expected**: Shows batting order info ### 1.3 Mobile - Pitcher Card - [x] Switch to mobile view (or use actual device) - [x] **Tap** pitcher card - [x] **Expected**: Modal slides up from bottom - [x] **Swipe down** on modal - [x] **Expected**: Modal closes ### 1.4 Mobile - Batter Card - [x] **Tap** batter card - [x] **Expected**: Modal slides up showing batter's card --- ## Test 2: GameBoard Interactivity ### 2.1 Expand/Collapse Field View - [x] Locate expand button (bottom-right of diamond) - [x] **Click** expand button - [x] **Expected**: All 9 fielder positions appear (C, 1B, 2B, SS, 3B, LF, CF, RF + P already visible) - [x] **Click** expand button again (now shows X) - [x] **Expected**: Field collapses back to simplified view ### 2.2 Tappable Pitcher on Diamond - [x] **Click** pitcher indicator on mound - [x] **Expected**: PlayerCardModal opens with pitcher's card ### 2.3 Tappable Batter on Diamond - [x] **Click** batter indicator at home plate - [x] **Expected**: PlayerCardModal opens with batter's card --- ## Test 3: Post-Roll Card Display ### 3.1 Batter Card Display (d6 = 1-3) - [x] Start a play (decisions submitted) - [x] **Click** "Roll Dice" button - [x] If d6_one is 1, 2, or 3: - [x] **Expected**: Batter's card image appears inline - [x] **Expected**: Shows "BATTER CARD" label in red - [x] **Expected**: Full-width card image for readability ### 3.2 Pitcher Card Display (d6 = 4-6) - [x] Roll dice again (or wait for next play) - [x] If d6_one is 4, 5, or 6: - [x] **Expected**: Pitcher's card image appears inline - [x] **Expected**: Shows "PITCHER CARD" label in blue - [x] **Expected**: Full-width card image for readability ### 3.3 Card Fallback - [x] If player has no image: - [x] **Expected**: Shows initials placeholder instead --- ## Test 4: OutcomeWizard Progressive Disclosure ### 4.1 Category Selection (Step 1) - [x] After rolling dice, locate outcome selection area - [x] **Expected**: Three large category buttons visible: - [x] "On Base" (green) - [x] "Out" (red) - [x] "X-Check" (orange) ### 4.2 On Base Flow - [x] **Click** "On Base" - [x] **Expected**: Sub-categories appear (Single, Double, Triple, Home Run, Walk, HBP) - [x] **Click** "Single" - [x] **Expected**: Specific outcomes appear (Single (1 base), Single (2 bases), Single (uncapped)) - [x] **Click** "Back" button - [x] **Expected**: Returns to sub-category selection - [x] **Click** "Home Run" - [x] **Expected**: Outcome submitted directly (no further steps needed) ### 4.3 Out Flow with Location - [x] Start new play, roll dice - [x] **Click** "Out" - [x] **Click** "Groundout" - [x] **Expected**: Specific groundout types appear (A, B, C) - [x] **Click** "Groundball A" - [x] **Expected**: Location picker appears (diamond with position buttons) - [x] **Click** position button (e.g., "SS") - [x] **Expected**: Outcome submitted with location ### 4.4 X-Check Flow - [x] Start new play, roll dice - [x] **Click** "X-Check" - [x] **Expected**: Location picker appears immediately - [x] **Click** any position - [x] **Expected**: X-Check outcome submitted ### 4.5 Cancel Flow - [x] Start outcome selection - [x] **Click** "Cancel" button - [x] **Expected**: Wizard resets to step 1 > **NOTE**: Future improvement needed - only show hit location picker when location actually matters for gameplay (e.g., fielder's choice, X-Check). Skip for outcomes where location is cosmetic only. --- ## Test 5: Mobile-Specific Tests ### 5.1 Touch Targets - [x] All buttons are at least 44x44px - [x] Easy to tap without accidental touches ### 5.2 Scrolling - [x] During normal gameplay, minimal scrolling required - [x] Outcome wizard fits on screen without scrolling ### 5.3 Swipe Gestures - [x] PlayerCardModal: Swipe down to close - [x] BottomSheet (if integrated): Swipe down to minimize --- ## Test 6: Dark Mode ### 6.1 PlayerCardModal - [ ] Switch to dark mode (system preference) - [ ] Open PlayerCardModal - [ ] **Expected**: Dark background, readable text ### 6.2 OutcomeWizard - [ ] **Expected**: Category buttons have appropriate dark mode colors - [ ] **Expected**: Location picker readable in dark mode ### 6.3 Post-Roll Card Display - [ ] **Expected**: Amber/orange styling visible in dark mode --- ## Test 7: Edge Cases ### 7.1 Missing Player Data - [x] If player image URL is broken or missing: - [x] **Expected**: Falls back to initials display - [x] **Expected**: No JS errors in console ### 7.2 Rapid Interactions - [x] Click multiple cards quickly - [x] **Expected**: Only one modal opens at a time ### 7.3 Game State Transitions - [x] Complete a play - [x] **Expected**: Outcome wizard resets for next play - [x] **Expected**: Post-roll card display clears --- ## Known Limitations 1. **BottomSheet not yet integrated** with DecisionPanel - decision panels still render inline 2. **Substitute button** in PlayerCardModal is hidden (showSubstituteButton=false) 3. **Dark mode button visibility on iOS** - ActionButton, DiceRoller buttons missing visible backgrounds/borders on iOS Safari/Brave. CSS gradient backgrounds and ring borders not rendering. Needs further investigation (possibly iOS-specific CSS issue or Tailwind purging). --- ## Test Results | Test | Status | Notes | | ------------------------- | ------ | ----- | | 1.1 Desktop Pitcher Card | ✅ PASS | | | 1.2 Desktop Batter Card | ✅ PASS | | | 1.3 Mobile Pitcher Card | ✅ PASS | | | 1.4 Mobile Batter Card | ✅ PASS | | | 2.1 Expand/Collapse | ✅ PASS | Fielders show player initials | | 2.2 Tappable Pitcher | ✅ PASS | | | 2.3 Tappable Batter | ✅ PASS | | | 3.1 Batter Card (d6 1-3) | ✅ PASS | Full-width layout | | 3.2 Pitcher Card (d6 4-6) | ✅ PASS | Full-width layout | | 3.3 Card Fallback | ✅ PASS | | | 4.1 Category Selection | ✅ PASS | | | 4.2 On Base Flow | ✅ PASS | | | 4.3 Out Flow + Location | ✅ PASS | Fixed batter advancement bug | | 4.4 X-Check Flow | ✅ PASS | | | 4.5 Cancel Flow | ✅ PASS | | | 5.1 Touch Targets | ✅ PASS | | | 5.2 Scrolling | ✅ PASS | | | 5.3 Swipe Gestures | ✅ PASS | | | 6.1 Dark Mode Modal | ✅ PASS | | | 6.2 Dark Mode Wizard | ✅ PASS | | | 6.3 Dark Mode Post-Roll | ⚠️ ISSUE | Buttons missing visible styling on iOS - needs investigation | | 7.1 Missing Player Data | ✅ PASS | | | 7.2 Rapid Interactions | ✅ PASS | | | 7.3 State Transitions | ✅ PASS | | --- **Tester**: ******\_\_\_\_****** **Date**: ******\_\_\_\_****** **Build**: feature/game-page-polish