- Moved 20 root-level markdown files to readmes/ - Includes COMMANDS.md, CONFIG_README.md, all UNO docs, all completion reports - Added new: MEMORY_EDITOR_FEATURE.md, MEMORY_EDITOR_ESCAPING_FIX.md, CONFIG_SOURCES_ANALYSIS.md, MCP_TOOL_CALLING_ANALYSIS.md, and others - Root directory is now clean of documentation clutter
8.3 KiB
Miku UNO Bot - Testing Checklist
Pre-Testing Setup
1. Install Playwright Browsers ✅
cd /home/koko210Serve/docker/miku-discord/bot
bash setup_uno_playwright.sh
Expected Output:
✅ Playwright browsers installed successfully!
2. Verify UNO Servers Running ✅
# Terminal 1 - Backend
cd /home/koko210Serve/docker/uno-online
node server.js
# Should show: Server listening on port 5000
# Terminal 2 - Frontend
cd /home/koko210Serve/docker/uno-online/client
npm start
# Should show: webpack compiled successfully
# Available at: http://192.168.1.2:3002
3. Start Miku Bot ✅
cd /home/koko210Serve/docker/miku-discord/bot
python bot.py
Look for:
🎤 MikuBot connected as <bot name>
Testing Scenarios
Test 1: Help Command
Discord Command: !uno help
Expected Response:
🎮 Miku UNO Commands
!uno create
Create a new UNO game room and join as Player 2
!uno join <room_code>
Join an existing UNO game room
Example: !uno join ABC123
!uno list
Show all active UNO games
!uno quit <room_code>
Leave an active UNO game
Example: !uno quit ABC123
!uno help
Show this help message
Status: [ ] Pass [ ] Fail
Test 2: Create Game
Discord Command: !uno create
Expected Response:
🎮 Created UNO room: <6-char code>
Join at: http://192.168.1.2:3002
I'm joining now as Player 2! ✨
Verification Steps:
- Copy the room code from response
- Open http://192.168.1.2:3002 in browser
- Click "Join Room"
- Enter the room code
- You should see "Player 1" (you) and "Player 2" (Miku) in the room
Bot Logs Should Show:
[UNO] Creating new game room...
[MikuUnoPlayer] Browser launched
[MikuUnoPlayer] Navigating to UNO game...
[MikuUnoPlayer] Joining room: <code>
[MikuUnoPlayer] Waiting for game to start...
Status: [ ] Pass [ ] Fail
Test 3: Game Starts (2 Players)
Action: After joining the room in browser (Test 2), game should auto-start
Expected Behavior:
- Game initializes with 7 cards each
- A top card appears in the center
- Turn indicator shows whose turn it is
Bot Logs Should Show:
[MikuUnoPlayer] Game started! Players: 2
[MikuUnoPlayer] Polling game state...
[MikuUnoPlayer] Current turn: Player 1 (or Player 2)
Status: [ ] Pass [ ] Fail
Test 4: Miku's First Turn
Action: Let the game proceed until it's Miku's turn (Player 2)
Expected Behavior:
- Bot detects it's Player 2's turn
- Bot analyzes game state
- Bot prompts LLM for strategy
- Bot makes a valid move (play or draw)
- Bot sends trash talk to Discord
Bot Logs Should Show:
[MikuUnoPlayer] It's my turn! Analyzing game state...
[MikuUnoPlayer] Hand: ['R5', 'G2', 'B7', ...] (7 cards)
[MikuUnoPlayer] Top card: Y3
[MikuUnoPlayer] Getting Miku's strategic decision...
[MikuUnoPlayer] LLM Response: {"action": "play", "card": "Y5"}
[MikuUnoPlayer] Action executed successfully!
Discord Should Show:
(One of the trash talk messages based on card played)
Status: [ ] Pass [ ] Fail
Test 5: LLM Strategy Quality
Action: Observe several of Miku's turns
Expected Behavior:
- Miku plays matching cards when available
- Miku uses special cards strategically (Draw 2, Skip, etc.)
- Miku draws when no valid plays
- Miku calls UNO when down to 1 card
Quality Checks:
- Plays valid cards only
- Matches color or number correctly
- Uses Wild cards when necessary
- Strategic use of action cards
- Calls UNO at right time
Status: [ ] Pass [ ] Fail
Test 6: Trash Talk Personality
Action: Check Discord messages during gameplay
Expected Messages (examples):
- Draw 4: "Take four cards! 💙✨ I hope you're ready for a comeback~"
- Draw 2: "Draw two cards! Don't worry, I still believe in you~ ✨"
- Skip: "Sorry~ Skipping your turn! Maybe next time? 🎶"
- Wild: "I'm changing the color! Let's see how you handle this~ 💫"
- Regular: "Playing my card~ Let's keep this fun! 🎵"
Personality Checks:
- Messages are cheerful
- Uses emojis appropriately
- Sounds like Miku (idol personality)
- Varies based on card type
Status: [ ] Pass [ ] Fail
Test 7: Game Completion
Action: Play until game ends (someone wins)
Expected Behavior:
- Winner is determined
- Bot detects game end
- Bot stops polling
- Bot sends final message to Discord
- Bot cleans up resources
Bot Logs Should Show:
[MikuUnoPlayer] Game ended! Winner: <Player 1 or Player 2>
[MikuUnoPlayer] Stopping game loop...
[MikuUnoPlayer] Browser closed
Discord Should Show:
🎮 Game <code> has ended!
(Winner message)
Status: [ ] Pass [ ] Fail
Test 8: Join Existing Game
Setup: Create a game manually at http://192.168.1.2:3002, get room code
Discord Command: !uno join ABC123 (use actual code)
Expected Response:
🎮 Joining UNO room: ABC123
I'll be Player 2! ✨
Verification: Same as Test 2 & 3
Status: [ ] Pass [ ] Fail
Test 9: List Active Games
Setup: Have 1-2 active games running
Discord Command: !uno list
Expected Response:
🎮 Active UNO Games:
Room: ABC123
Players: 2/2
Status: Playing
Started: 2 minutes ago
Room: XYZ789
Players: 2/2
Status: Playing
Started: 5 minutes ago
Status: [ ] Pass [ ] Fail
Test 10: Quit Game
Setup: Have an active game running
Discord Command: !uno quit ABC123
Expected Response:
👋 Left UNO room: ABC123
See you next game! ✨
Verification:
- Bot stops polling
- Browser closes
- Game removed from active games list
Status: [ ] Pass [ ] Fail
Error Scenarios
Test E1: Invalid Room Code
Discord Command: !uno join INVALID
Expected Response:
❌ Couldn't join room INVALID
The room might not exist or is full.
Status: [ ] Pass [ ] Fail
Test E2: Room Already Full
Setup: Create a game, have 2 players join via browser
Discord Command: !uno join <code>
Expected Response:
❌ Room <code> is full (2/2 players)
Status: [ ] Pass [ ] Fail
Test E3: Servers Not Running
Setup: Stop UNO server (port 5000)
Discord Command: !uno create
Expected Response:
❌ Failed to create game room
Make sure the UNO server is running.
Status: [ ] Pass [ ] Fail
Test E4: Invalid JSON from LLM
Action: This should be caught and handled gracefully
Expected Behavior:
- Bot logs error
- Bot attempts to draw card as fallback
- Game continues without crashing
Bot Logs Should Show:
[MikuUnoPlayer] Error: Invalid LLM response format
[MikuUnoPlayer] Falling back to draw action
Status: [ ] Pass [ ] Fail
Performance Tests
Test P1: Response Time
Metric: Time from "It's Miku's turn" to action executed
Target: < 5 seconds
Measured: _______ seconds
Status: [ ] Pass [ ] Fail
Test P2: Multiple Concurrent Games
Action: Start 2-3 games simultaneously
Expected Behavior:
- All games run independently
- No cross-contamination of game state
- Each game has own polling loop
Status: [ ] Pass [ ] Fail
Test P3: Long Game (20+ turns)
Action: Play a full game with many turns
Expected Behavior:
- Bot maintains performance throughout
- No memory leaks
- No degradation in response time
Status: [ ] Pass [ ] Fail
Test Results Summary
Total Tests: 17 (10 main + 4 error + 3 performance)
Passed: _____ Failed: _____ Percentage: _____%
Issues Found
Issue 1
Description: Severity: [ ] Critical [ ] Major [ ] Minor Status: [ ] Open [ ] Fixed
Issue 2
Description: Severity: [ ] Critical [ ] Major [ ] Minor Status: [ ] Open [ ] Fixed
Issue 3
Description: Severity: [ ] Critical [ ] Major [ ] Minor Status: [ ] Open [ ] Fixed
Next Steps
If All Tests Pass ✅
- Document any quirks or limitations
- Create user-facing documentation
- Consider Discord Activity conversion (Phase 2)
- Implement enhancement features
If Tests Fail ❌
- Document failures in detail
- Prioritize by severity
- Debug and fix critical issues first
- Re-test after fixes
Notes
Date Tested: __________ Tester: __________ Bot Version: __________ Environment: __________
Additional Observations: