- Add test verifying Cancel button closes modal without making API call
- Fill description field before cancel to verify changes are discarded
- Use page.route() to track any PUT requests (should be none)
- Verify modal closes by checking privacy select visibility
- Add test for save button making PUT /sessions/{id} API call
- Verify payload includes description and privacy fields (musician_access, approval_required)
- Use page.route() to intercept and capture API request
- Verify modal closes after successful save
- Fix locators to use privacy select instead of modal header text (avoids toast collision)
- Create error-handling.spec.ts with 5 test scenarios
- Test REQ-5.1: File size exceeded validation
- Test REQ-5.4: Upload success toast with auto-dismiss
- Test REQ-5.3: Network error handling with retry capability
- Test REQ-5.5: S3 404 error handling (missing file)
- Test edge case: Prevent rapid clicks during upload
- Uses test-helpers.ts for login and session creation
- Create test/attachments/real-time-sync.spec.ts
- Test WebSocket message receipt for attachments
- Test deduplication of duplicate messages
- Test REST API and WebSocket message deduplication
- Test attachment display in chat
- Uses Redux dispatch simulation approach for CI compatibility
Changes:
- .gitignore: Add .run-claude.sh to ignored files
- JKSessionScreen.js: Add "-DEBUG-" prefix to console logs for easier filtering
- user1.json, user2.json: Update test authentication state
- 11-VERIFICATION.md: Add verification document for Phase 11
These are maintenance updates from chat feature development and testing.
Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
Add comprehensive Playwright integration tests for chat unread badge:
- Badge visibility based on count (hidden at 0, visible with count)
- Badge text formatting (1-99, "99+" for 100+)
- Badge reset when window opened
- Badge increment logic (closed window vs different channel)
- Multiple message handling
- Badge state after page reload
Tests validate Redux state, localStorage persistence, and UI rendering.
Related to Phase 10 Plan 1: Read/Unread Status Validation & Testing
Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
- Test WebSocket message display with sender info
- Test message deduplication (sent message not duplicated on WebSocket receive)
- Test auto-scroll to bottom on new message
- Test unread badge increment when window closed
- 4 comprehensive tests for real-time receive scenarios
- Test send via button click
- Test send via Enter key
- Test Shift+Enter inserts newline without sending
- Test button disabled when empty or over 255 chars
- Test character count and validation message display
- Test error display on send failure
- Test optimistic update behavior
- 7 comprehensive tests for send scenarios
- Test button visibility in session navigation
- Test badge hidden when unread count = 0
- Test badge shows correct count (1-99)
- Test badge shows "99+" for counts >= 100
- Test button opens chat window
- Test duplicate window prevention
- Test badge resets when window opens
- 7 comprehensive test cases
- Change metronome track to horizontal layout: VU meter on left, volume slider on right
- Add three dots menu button without diagnostics circle (metronome doesn't need diagnostics)
- Move Close functionality to three dots menu dropdown
- Update test selectors to match new layout (.track-title, .track-menu-button)
- Add jamClient mocking in tests to prevent hanging on native client calls
- Increase test timeout to 60s to accommodate session creation time
- Configure global test setup to use existing user accounts instead of creating new ones
- Add conditional fake client support in JamClientContext for test environments
Tests: 3 passed, 2 skipped (as expected)
Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
Add comprehensive test suite for metronome feature including:
- Opening metronome from Open menu
- Displaying metronome track with VU meter and gain controls
- Closing metronome from main window
- Helper function for opening metronome in tests
- Documentation for test suite
Tests verify core metronome UI behavior and user interactions.
WindowPortal popup tests are skipped due to complexity (manual testing recommended).
Test results:
- 3 tests passing
- 2 tests skipped (popup window controls)
Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
Added comprehensive test infrastructure to verify session join flow and
track sync implementation:
Test Configuration:
- playwright.chrome.config.ts: Chrome-specific test configuration
- playwright.verification.config.ts: Verification test settings
Test Documentation:
- IMPLEMENTATION_APPROACH.md: TDD approach for trackSync
- JAM_UI_TESTING_PLAN.md: Overall testing strategy
Test Utilities:
- api-interceptor.ts: Intercepts and logs API calls
- websocket-monitor.ts: Monitors WebSocket messages
- sequence-comparator.ts: Compares API call sequences
- test-helpers.ts: Shared test helper functions
Test Suites:
- e2e/complete-session-flow.spec.ts: Full session flow E2E test
- api-verification/*.spec.ts: API call verification tests
- websocket-verification/ws-connection.spec.ts: WebSocket tests
- capture-session-flow*.spec.ts: Session flow analysis tests
Test Fixtures & Results:
- fixtures/legacy-sequences/: Recorded API call sequences
- test-results/: Test output, comparisons, and analysis
These tests were instrumental in debugging the VU meter issue and
verifying the trackSync implementation.
Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
- Implemented trackSyncService with full test coverage
- Added 13 unit tests (all passing)
- Added 7 integration tests
- Wired up track sync in session join, instrument change, and media actions
- Fixed jamClient.clientID() async call issue
- Fixed hasJoined vs sessionJoined property mismatch
Note: Rails API endpoint PUT /api/sessions/:id/tracks still needs implementation
Note: Investigating VU meter issue that may be unrelated to this feature