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

5.3 KiB

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