- Verified /watch/replays shows real completed matches (not just demo) - Match cards display bot names, turn count, winner badges, map ID - 'Watch Replay' links point to real match IDs (m_test_*) - Curated playlists render with real data (featured, comebacks, upsets, etc.) - Pagination/infinite scroll works via IntersectionObserver - Mobile testing on Pixel 6 via ADB: layout responsive, touch targets usable - Created MATCH_LIST_TEST_RESULTS.md with full verification details - Thumbnails not implemented (clean UI without broken images due to R2 issues) Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
3.2 KiB
3.2 KiB
Replay Viewer Test Results
Date: 2026-04-25 Task: Verify replay viewer loads and plays a real match replay
Summary
The replay viewer code is functional and works correctly with local replay files. However, the storage backend infrastructure (R2/B2) for serving real match replays is not working.
What Works ✅
-
Replay Viewer Implementation
- Canvas renders correctly with grid, bots, and energy cells
- Playback controls work (play/pause, step, reset)
- Turn navigation functions properly
- Transcript panel generates turn-by-turn events
- Mobile responsive layout is functional
-
Local Test Files
/data/demo-replay-v2.json- 4-player match (294 turns)/data/demo-replay-v1.json- Basic 2-player match/data/real-replay.json- Real match data (m_tprjf4ij, 713 turns, 4 players)/data/demo-replay-v2-6p.json- 6-player match
-
Mobile Testing (Pixel 6 via ADB)
- Page loads correctly in Chrome
- Layout is responsive and touch targets are usable
- No horizontal overflow issues
- Test page:
/test-replay-viewer-real.htmlcreated for real replay testing
What Doesn't Work ❌
-
Storage Backend Access
- R2 endpoint:
https://r2.aicodebattle.com/replays/{match_id}.json.gz- Returns 404 - B2 endpoint:
https://b2.aicodebattle.com/replays/{match_id}.json.gz- Returns 404 - Production API:
https://ai-code-battle.pages.dev/api/replay/{match_id}- Returns HTML page (not JSON)
- R2 endpoint:
-
Missing Replay Data
- No real match replays are uploaded to R2 or B2 storage
- This is a known blocker mentioned in the task description
Known Blockers (from task description)
-
B2 'Invalid region' error - Replay upload to B2 is broken
- Fix needed in acb-worker config
-
R2 ESO hashed endpoint - Replay upload to R2 is broken
- Fix needed: OpenBao → ESO → acb-r2-credentials secret
Test Results
Real Replay (m_tprjf4ij)
- Match ID: m_tprjf4ij
- Players: 4 (swarm, hunter, gatherer, random)
- Turns: 713
- Map: 89x89
- Winner: Player 0 (swarm)
- Tests Passed: 15/15
- Warnings: 2 (no win_prob data, no critical_moments data)
Mobile Browser Testing
- Device: Google Pixel 6 (1080x2400)
- Browser: Chrome via ADB over Tailscale
- Connection: http://100.72.170.64:8080
- Test Page:
/test-replay-viewer-real.html - Results: All tests passed, layout responsive
Recommendations
-
Fix the replay upload pipeline - This is the critical blocker
- Fix B2 'Invalid region' error in acb-worker config
- Fix R2 ESO credentials (OpenBao → ESO → acb-r2-credentials secret)
-
Test with production data - Once storage is fixed:
- Upload a test replay to R2/B2
- Verify ?url=/replays/{match_id}.json.gz parameter works
- Verify win probability sparkline renders with real commentary data
-
Keep test pages - The created test pages are useful for future testing:
/test-replay-viewer.html- Basic structure test/test-replay-viewer-demo.html- Demo replay with full test suite/test-replay-viewer-real.html- Real replay test (NEW)
Files Modified/Created
- Created:
/web/public/test-replay-viewer-real.html- Test page for real replay data