Files
rehearshalhub/test_plan_mobile_menu_fix.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

4.3 KiB

Mobile Menu Band Context Fix - Test Plan

Overview

This test plan verifies that the mobile menu band context issue has been resolved. The fix implements:

  1. TopBar component with band switcher (mobile only)
  2. Band-context-aware navigation in BottomNavBar
  3. Proper responsive layout switching

Test Environment

  • Browser: Chrome/Firefox/Safari
  • Screen sizes: Mobile (<768px), Desktop (≥768px)
  • Test data: Multiple bands created in the system

Test Cases

Test 1: Band Context Preservation in Mobile View

Precondition: User is logged in with at least 2 bands created

Steps:

  1. Resize browser to mobile size (<768px width)
  2. Navigate to Band A's library (/bands/band-a-id)
  3. Click "Settings" in bottom navigation
  4. Click "Library" in bottom navigation

Expected Result:

  • Should return to Band A's library (/bands/band-a-id)
  • Should NOT redirect to first band or lose context

Actual Result: Pass / Fail

Test 2: TopBar Band Switching

Precondition: User is logged in with multiple bands

Steps:

  1. Resize browser to mobile size (<768px width)
  2. Click the band switcher in TopBar (top right)
  3. Select a different band from dropdown
  4. Observe navigation

Expected Result:

  • Should navigate to selected band's library
  • TopBar should show selected band name and initials
  • URL should be /bands/selected-band-id

Actual Result: Pass / Fail

Test 3: Player Navigation with Band Context

Precondition: User is in a band with songs

Steps:

  1. Resize browser to mobile size (<768px width)
  2. Navigate to a band's library
  3. Click "Player" in bottom navigation

Expected Result:

  • If band has songs: Should navigate to band's songs list
  • If no songs: Button should be disabled
  • Navigation should preserve band context

Actual Result: Pass / Fail

Test 4: Members Navigation to Band Settings

Precondition: User is in a band

Steps:

  1. Resize browser to mobile size (<768px width)
  2. Navigate to a band's library
  3. Click "Members" in bottom navigation

Expected Result:

  • Should navigate to band's members settings (/bands/current-band-id/settings/members)
  • Should preserve band context

Actual Result: Pass / Fail

Test 5: Responsive Layout Switching

Precondition: User is logged in

Steps:

  1. Start with desktop size (≥768px width)
  2. Verify Sidebar is visible, TopBar and BottomNavBar are hidden
  3. Resize to mobile size (<768px width)
  4. Verify TopBar and BottomNavBar are visible, Sidebar is hidden
  5. Resize back to desktop size
  6. Verify original desktop layout returns

Expected Result:

  • Layout should switch smoothly between mobile/desktop
  • No layout glitches or overlapping elements
  • Content should remain accessible in both modes

Actual Result: Pass / Fail

Test 6: Desktop Regression Test

Precondition: User is logged in

Steps:

  1. Use desktop size (≥768px width)
  2. Test all Sidebar functionality:
    • Band switching dropdown
    • Navigation to Library, Player, Settings
    • User dropdown
  3. Verify no changes to desktop behavior

Expected Result:

  • All existing Sidebar functionality should work exactly as before
  • No regressions in desktop experience

Actual Result: Pass / Fail

Test 7: URL-Based Band Context

Precondition: User is logged in with multiple bands

Steps:

  1. Manually navigate to /bands/band-b-id in mobile view
  2. Click "Library" in bottom navigation
  3. Click "Settings" then back to "Library"

Expected Result:

  • Should always return to band-b-id, not default to first band
  • URL should consistently show correct band ID

Actual Result: Pass / Fail

Manual Testing Instructions

Setup

  1. Start development server: npm run dev
  2. Open browser to http://localhost:5173
  3. Log in and create at least 2 test bands

Execution

  1. Follow each test case step-by-step
  2. Mark Pass/Fail for each test
  3. Note any unexpected behavior or errors

Verification

  • All test cases should pass
  • No console errors should appear
  • No visual glitches or layout issues
  • Navigation should be smooth and context-preserving

Success Criteria

All 7 test cases pass No console errors in browser developer tools No TypeScript or ESLint errors (npm run check) Mobile and desktop layouts work correctly Band context preserved across all mobile navigation