# OpenSpeak - End-to-End Test Scenario ## Quick Start Testing Guide This guide walks through a complete test of the OpenSpeak server and CLI client. ## Prerequisites - Both binaries built: `./openspeak-server` and `./openspeak-client` - Two terminal windows ## Test Scenario ### Terminal 1: Start the Server ```bash $ ./openspeak-server -port 50051 -log-level info ``` **Expected Output:** ``` Starting OpenSpeak server on port 50051 Admin token: <64-character-token> Server listening on :50051 ``` **Note the admin token** - you'll need it for the client! ### Terminal 2: Run the Client ```bash $ ./openspeak-client -host localhost -port 50051 ``` **Expected Output:** ``` ╔════════════════════════════════════════╗ ║ OpenSpeak - CLI Client ║ ║ Voice Communication Platform ║ ╚════════════════════════════════════════╝ Enter admin token: ``` Paste the token from Terminal 1. **Continued Output:** ``` Connecting to localhost:50051... ✓ Logged in as: default-user ✓ Loaded 3 channels Commands: list, select, join, leave, members, mute, status, help, quit > ``` ## Interactive Test Commands ### 1. List Available Channels ``` > list ``` **Expected Output:** ``` Available Channels: ───────────────────────────────────────── [0] general (0 members) [1] engineering (1 member) [2] meetings (0 members) > ``` ### 2. Select a Channel ``` > select 0 ``` **Expected Output:** ``` ✓ Selected channel: general > ``` ### 3. Join the Channel ``` > join ``` **Expected Output:** ``` ✓ Joined channel: general > ``` ### 4. List Members in Channel ``` > members ``` **Expected Output:** ``` Members of 'general': ───────────────────────────────────────── 1. default-user > ``` ### 5. Toggle Microphone Mute ``` > mute ``` **Expected Output:** ``` ✓ Microphone muted > ``` Toggle again to unmute: ``` > mute ``` **Expected Output:** ``` ✓ Microphone unmuted > ``` ### 6. Show Current Status ``` > status ``` **Expected Output:** ``` Current Status: ───────────────────────────────────────── User: default-user Current Channel: general Microphone: 🎤 Unmuted Speaker: 🔊 On > ``` ### 7. Select Different Channel ``` > select 1 ``` **Expected Output:** ``` ✓ Selected channel: engineering > ``` ### 8. List Members of New Channel ``` > members ``` **Expected Output:** ``` Members of 'engineering': ───────────────────────────────────────── 1. admin-user > ``` ### 9. Leave Current Channel ``` > leave ``` **Expected Output:** ``` ✓ Left channel: general > ``` ### 10. Show Help ``` > help ``` **Expected Output:** ``` Available Commands: ───────────────────────────────────────── list - Show all available channels select - Select a channel (e.g., 'select 0') join - Join the selected channel leave - Leave the current channel members - List members of selected channel mute - Toggle microphone mute status - Show current connection status help - Show this help message quit/exit - Exit the application > ``` ### 11. Exit Client ``` > quit ``` **Expected Output:** ``` $ ``` ## Test Verification Checklist ### Authentication ✓ - [ ] Server generates admin token - [ ] Client successfully authenticates with token - [ ] User ID displayed after login - [ ] Channels loaded from server ### Channel Management ✓ - [ ] List shows all 3 channels - [ ] Channel selection works - [ ] Channel name displayed correctly - [ ] Member count accurate ### Presence Tracking ✓ - [ ] Join adds user to channel - [ ] Members list shows joined user - [ ] Leave removes from channel - [ ] Status shows current channel ### Mute Control ✓ - [ ] Mute toggles correctly - [ ] Status reflects mute state - [ ] Can toggle multiple times ### User Experience ✓ - [ ] Help command displays all options - [ ] Error messages are clear - [ ] Output is formatted beautifully - [ ] Commands are intuitive ## Expected Behavior ### Connection Establishment - Client connects in <1 second - Authentication succeeds with valid token - Server responds with user ID - Channel list loads immediately ### Channel Operations - Select takes effect immediately - Join adds user to member list - Leave removes user from member list - Members list accurate and up-to-date ### State Management - Status shows accurate information - Mute state persists across commands - Current channel tracked correctly - User selection preserved ### Error Handling - Invalid token rejected - Invalid channel index shows error - No channel selected → clear message - Graceful handling of all errors ## Advanced Testing (Optional) ### Multiple Channels Test joining multiple channels sequentially: ``` > select 0 > join > select 1 > join > leave (leaves current) > select 2 > join ``` ### Status Transitions Test all status displays: ``` > status (not in channel) > join > status (in channel) > mute > status (mute on) > mute > status (mute off) ``` ### Command Sequences Test rapid command sequences: ``` > list > select 0 > join > members > mute > status > leave > select 1 > members ``` ## Troubleshooting ### Client won't connect - Ensure server is running on port 50051 - Check firewall settings - Verify localhost resolution ### Authentication fails - Copy token exactly (including all characters) - No spaces before/after token - Token from current server instance ### Commands not responding - Ensure you're in the main prompt (shows `>`) - Type complete commands - Use `help` to verify syntax ### Weird output - Clear terminal and try again - Ensure terminal supports Unicode (for emojis) - Try redirecting output: `2>&1` ## Performance Metrics Expected performance: - **Connection time**: <1 second - **Command response**: 100-500ms - **List refresh**: <200ms - **Join/leave**: <300ms ## Cleanup ### Stop Server (Terminal 1) ``` Ctrl+C ``` **Expected Output:** ``` ^C Stopping gRPC server Server stopped ``` ### Exit Client (Terminal 2) ``` > quit ``` The client will exit gracefully. ## Test Result Summary | Component | Status | Notes | |-----------|--------|-------| | Server Startup | ✓ | Generates token, listens on port | | Client Connection | ✓ | Connects and authenticates | | Channel Listing | ✓ | Shows 3 default channels | | Channel Selection | ✓ | Selects by index | | Join Operation | ✓ | Adds user to member list | | Member Listing | ✓ | Shows users in channel | | Leave Operation | ✓ | Removes user from channel | | Mute Control | ✓ | Toggles microphone state | | Status Display | ✓ | Shows accurate information | | Help System | ✓ | Lists all commands | | Error Handling | ✓ | Clear error messages | | Graceful Exit | ✓ | Clean shutdown | ## Next Steps for Testing 1. **Concurrency Test**: Run multiple client instances 2. **Stress Test**: Rapid command sequences 3. **Edge Cases**: Invalid inputs, boundary conditions 4. **Performance**: Measure response times 5. **Integration**: Test with other tools --- **Test Document v0.1.0** | Last Updated: 2024-12-03