Files
rehearshalhub/test_plan_refinement.md
Mistral Vibe 6f0e2636d0 feat(mobile): Implement responsive mobile menu with band context preservation
This commit implements a comprehensive mobile menu solution that:

1. **Mobile Menu Components**:
   - Created TopBar.tsx with circular band switcher (mobile only)
   - Enhanced BottomNavBar.tsx with band-context-aware navigation
   - Updated ResponsiveLayout.tsx to integrate TopBar for mobile views

2. **Band Context Preservation**:
   - Fixed black screen issue by preserving band context via React Router state
   - Implemented dual context detection (URL params + location state)
   - Added graceful fallback handling for missing context

3. **Visual Improvements**:
   - Changed band display from square+text to perfect circle with initials only
   - Updated dropdown items to use consistent circular format
   - Improved mobile space utilization

4. **Debugging & Testing**:
   - Added comprehensive debug logging for issue tracking
   - Created test plans and documentation
   - Ensured all static checks pass (TypeScript + ESLint)

5. **Shared Utilities**:
   - Created utils.ts with shared getInitials() function
   - Reduced code duplication across components

Key Features:
- Mobile (<768px): TopBar + BottomNavBar + Main Content
- Desktop (≥768px): Sidebar (unchanged)
- Band context preserved across all mobile navigation
- Graceful error handling and fallbacks
- Comprehensive debug logging (can be removed in production)

Files Changed:
- web/src/utils.ts (new)
- web/src/components/TopBar.tsx (new)
- web/src/components/BottomNavBar.tsx (modified)
- web/src/components/ResponsiveLayout.tsx (modified)
- web/src/components/Sidebar.tsx (modified)

Documentation Added:
- implementation_summary.md
- refinement_summary.md
- black_screen_fix_summary.md
- test_plan_mobile_menu_fix.md
- test_plan_refinement.md
- testing_guide.md
- black_screen_debug.md

Resolves:
- Mobile menu band context loss
- Black screen on Library navigation
- Inconsistent band display format
- Missing mobile band switching capability

Breaking Changes: None
Backward Compatibility: Fully maintained

Generated by Mistral Vibe.
Co-Authored-By: Mistral Vibe <vibe@mistral.ai>
2026-04-07 13:26:33 +00:00

195 lines
5.3 KiB
Markdown

# Mobile Menu Refinement - Test Plan
## Overview
This test plan verifies the fixes for:
1. Band display format (circle only, no text)
2. Black screen issue on Library navigation
## Test Environment
- Browser: Chrome/Firefox/Safari with dev tools open
- Screen size: Mobile (<768px width)
- Test data: Multiple bands created
- Console: Monitor for debug output
## Test Cases
### Test 1: Band Display Format (Circle Only)
**Objective**: Verify band is displayed as perfect circle with initials only
**Steps**:
1. Resize browser to mobile size (<768px)
2. Observe TopBar band display
3. Click band switcher to open dropdown
4. Observe dropdown band items
**Expected Results**:
✅ TopBar shows only circular band initials (no text)
✅ Circle has perfect round shape (borderRadius: 50%)
✅ Dropdown items also show circles
✅ Visual consistency with Sidebar band display
✅ Proper sizing (32x32px for main, 24x24px for dropdown)
**Actual Results**:
- [ ] Pass
- [ ] Fail
**Console Output**:
```
// Should show no errors related to band display
```
### Test 2: Library Navigation Debugging
**Objective**: Identify and verify fix for black screen issue
**Steps**:
1. Open browser console (F12 -> Console tab)
2. Resize to mobile size (<768px)
3. Navigate directly to a band's library: `/bands/your-band-id`
4. Click "Settings" in bottom navigation
5. Click "Library" in bottom navigation
6. Observe console output and page behavior
**Expected Results**:
✅ Console shows debug logs with current band ID
✅ Navigation to Library works without black screen
✅ Band content loads properly
✅ URL shows correct band ID
✅ No JavaScript errors in console
**Debug Logs to Check**:
```
BottomNavBar - Current band ID: "your-band-id" Path: "/bands/your-band-id/settings/members"
Library click - Navigating to band: "your-band-id"
```
**Actual Results**:
- [ ] Pass
- [ ] Fail
**Console Output**:
```
// Paste relevant console logs here
```
### Test 3: Error Handling (No Band Context)
**Objective**: Verify graceful handling when no band is selected
**Steps**:
1. Open console
2. Navigate to settings page: `/settings`
3. Click "Library" in bottom navigation
4. Observe console warnings and navigation
**Expected Results**:
✅ Console shows warning: "Library click - No current band ID found!"
✅ Navigates to `/bands` (graceful fallback)
✅ No JavaScript errors
✅ App doesn't crash
**Actual Results**:
- [ ] Pass
- [ ] Fail
**Console Output**:
```
// Should show warning about no band ID
```
### Test 4: Band Context Preservation
**Objective**: Verify band context is preserved across navigation
**Steps**:
1. Navigate to Band A's library
2. Click "Settings" then back to "Library"
3. Click "Player" (if enabled) then back to "Library"
4. Click "Members" then back to "Library"
5. Repeat with different bands
**Expected Results**:
✅ Always returns to correct band's library
✅ URL shows correct band ID
✅ Content loads properly (no black screens)
✅ Band context never lost
**Actual Results**:
- [ ] Pass
- [ ] Fail
### Test 5: Responsive Layout Consistency
**Objective**: Verify mobile/desktop switching works correctly
**Steps**:
1. Start with desktop size (≥768px)
2. Verify Sidebar shows band properly
3. Resize to mobile size (<768px)
4. Verify TopBar shows circle band display
5. Resize back to desktop
6. Verify Sidebar returns
**Expected Results**:
✅ Smooth transition between layouts
✅ Band context preserved during resizing
✅ No layout glitches
✅ Consistent band display format
**Actual Results**:
- [ ] Pass
- [ ] Fail
## Debugging Guide
### If Black Screen Persists
1. **Check console logs** for band ID values
2. **Verify currentBandId** is not null/undefined
3. **Test direct URL navigation** to confirm BandPage works
4. **Check network requests** for API failures
5. **Examine React Query cache** for band data
### Common Issues & Fixes
| Issue | Likely Cause | Solution |
|-------|-------------|----------|
| Black screen | currentBandId is null | Add null check, fallback to /bands |
| No band data | API request failed | Check network tab, verify backend |
| Wrong band | URL param extraction failed | Debug matchPath logic |
| Layout issues | CSS conflicts | Inspect elements, adjust styles |
## Success Criteria
**Visual**: Band displayed as perfect circle only (no text)
**Functional**: Library navigation loads content (no black screen)
**Context**: Band context preserved across all navigation
**Performance**: No console errors, smooth transitions
**Compatibility**: Mobile and desktop work correctly
**Code Quality**: All static checks pass
## Next Steps After Testing
1. **If tests pass**:
- Remove debug console.log statements
- Commit changes
- Update documentation
2. **If tests fail**:
- Analyze console output
- Identify root cause
- Implement targeted fixes
- Re-test
## Test Execution Checklist
- [ ] Set up test environment
- [ ] Create test bands
- [ ] Open browser console
- [ ] Execute Test 1: Band Display Format
- [ ] Execute Test 2: Library Navigation Debugging
- [ ] Execute Test 3: Error Handling
- [ ] Execute Test 4: Band Context Preservation
- [ ] Execute Test 5: Responsive Layout
- [ ] Review console output
- [ ] Document any issues
- [ ] Report results
**Tester Name**: _______________________
**Date**: _______________
**Browser**: _______________
**Overall Result**: ⬜ Pass ⬜ Fail