355 lines
7.1 KiB
Markdown
355 lines
7.1 KiB
Markdown
# 🧪 Test Client Quick Reference
|
|
|
|
## 🚀 Getting Started
|
|
|
|
### 1. Start Server
|
|
```bash
|
|
npm run dev
|
|
```
|
|
|
|
### 2. Open Test Client
|
|
```
|
|
Open test-client.html in your browser
|
|
```
|
|
|
|
### 3. Connect
|
|
- **Anonymous:** Leave token field empty → Click "Connect"
|
|
- **Authenticated:** Paste JWT token → Click "Connect"
|
|
|
|
---
|
|
|
|
## 📡 WebSocket Tests
|
|
|
|
### Basic Tests
|
|
| Action | Button/Field | Expected Result |
|
|
|--------|--------------|-----------------|
|
|
| Connect | "Connect" button | Status: ✅ Connected |
|
|
| Ping | "Send Ping" button | Receive pong response |
|
|
| Custom | Edit JSON field + "Send Message" | Custom response |
|
|
| Disconnect | "Disconnect" button | Status: ❌ Disconnected |
|
|
|
|
### Custom Message Examples
|
|
```json
|
|
{"type": "ping"}
|
|
{"type": "custom", "data": {"test": true}}
|
|
{"type": "subscribe", "channel": "marketplace"}
|
|
```
|
|
|
|
---
|
|
|
|
## 🔥 Stress Tests
|
|
|
|
### Gradual Test
|
|
1. Set **Number of Messages**: 10-1000
|
|
2. Set **Interval (ms)**: 10-5000
|
|
3. Click **"🚀 Run Stress Test"**
|
|
4. Monitor progress in real-time
|
|
5. Click **"⏹️ Stop Test"** to abort
|
|
|
|
### Recommended Tests
|
|
- **Light:** 10 msgs @ 500ms
|
|
- **Medium:** 100 msgs @ 100ms
|
|
- **Heavy:** 500 msgs @ 50ms
|
|
- **Extreme:** 1000 msgs @ 10ms
|
|
|
|
### Burst Test
|
|
- Click **"💥 Send Burst (100 msgs)"**
|
|
- Sends 100 messages instantly
|
|
- Tests rapid-fire handling
|
|
|
|
---
|
|
|
|
## 🛒 Marketplace API Tests
|
|
|
|
### Prerequisites
|
|
```
|
|
1. Login: http://localhost:3000/auth/steam
|
|
2. Set trade URL (required for creating listings)
|
|
3. Keep WebSocket connected to receive broadcasts
|
|
```
|
|
|
|
### Get Listings
|
|
**Fields:**
|
|
- Game: All / CS2 / Rust
|
|
- Min Price: (optional)
|
|
- Max Price: (optional)
|
|
|
|
**Button:** "Get Listings"
|
|
|
|
**Response:** List of marketplace items
|
|
|
|
---
|
|
|
|
### Create Listing
|
|
**Fields:**
|
|
- Item Name: "AK-47 | Redline"
|
|
- Game: CS2 / Rust
|
|
- Price: 45.99
|
|
- Description: (optional)
|
|
|
|
**Button:** "Create Listing (Requires Auth)"
|
|
|
|
**Expected:**
|
|
- ✅ Success response
|
|
- 📡 WebSocket broadcast: `new_listing`
|
|
|
|
---
|
|
|
|
### Update Price
|
|
**Fields:**
|
|
- Listing ID: "listing_123"
|
|
- New Price: 39.99
|
|
|
|
**Button:** "Update Price (Requires Auth)"
|
|
|
|
**Expected:**
|
|
- ✅ Success response
|
|
- 📡 WebSocket broadcast: `price_update`
|
|
|
|
---
|
|
|
|
### Set Trade URL
|
|
**Field:**
|
|
- Steam Trade URL: `https://steamcommunity.com/tradeoffer/new/?partner=...`
|
|
|
|
**Button:** "Set Trade URL (Requires Auth)"
|
|
|
|
**Format:** Must be valid Steam trade offer URL:
|
|
```
|
|
https://steamcommunity.com/tradeoffer/new/?partner=XXXXXXXXX&token=XXXXXXXX
|
|
```
|
|
|
|
**Expected:** ✅ Trade URL saved
|
|
|
|
**Note:** Both PUT and PATCH methods supported
|
|
|
|
---
|
|
|
|
## 📊 Statistics
|
|
|
|
### Real-Time Counters
|
|
- **Messages Received:** Total WebSocket messages received
|
|
- **Messages Sent:** Total WebSocket messages sent
|
|
- **Connection Time:** How long connected (updates every second)
|
|
|
|
---
|
|
|
|
## 💬 Messages Panel
|
|
|
|
### Message Types
|
|
- **🟢 Received:** Messages from server (green border)
|
|
- **🔵 Sent:** Messages sent to server (blue border)
|
|
- **🔴 Error:** Errors and disconnections (red border)
|
|
|
|
### Message Format
|
|
```
|
|
[Time] 10:30:45 AM
|
|
[Type] PING / API / CONNECTION / ERROR
|
|
[Content] JSON or text content
|
|
```
|
|
|
|
### Clear Messages
|
|
Click **"Clear Messages"** button to reset the message log
|
|
|
|
---
|
|
|
|
## 🎯 Quick Test Scenarios
|
|
|
|
### Scenario 1: Basic WebSocket Test (30 seconds)
|
|
```
|
|
1. Connect (anonymous)
|
|
2. Send Ping
|
|
3. Verify pong received
|
|
4. Send custom message
|
|
5. Disconnect
|
|
✅ WebSocket working
|
|
```
|
|
|
|
### Scenario 2: Stress Test (1 minute)
|
|
```
|
|
1. Connect
|
|
2. Set: 100 msgs @ 100ms
|
|
3. Run Stress Test
|
|
4. Verify all received
|
|
5. Run Burst Test
|
|
✅ Socket stable under load
|
|
```
|
|
|
|
### Scenario 3: Marketplace Test (2 minutes)
|
|
```
|
|
1. Login via Steam
|
|
2. Set trade URL
|
|
3. Create listing
|
|
4. Verify broadcast received
|
|
5. Update price
|
|
6. Verify broadcast received
|
|
✅ Marketplace working
|
|
```
|
|
|
|
### Scenario 4: Multi-Client Test (3 minutes)
|
|
```
|
|
1. Open 2 browser tabs
|
|
2. Connect both to WebSocket
|
|
3. Tab 1: Create listing
|
|
4. Tab 2: Should receive broadcast
|
|
5. Tab 1: Update price
|
|
6. Tab 2: Should receive update
|
|
✅ Broadcasting working
|
|
```
|
|
|
|
---
|
|
|
|
## 🔍 Troubleshooting
|
|
|
|
### Can't Connect to WebSocket
|
|
```
|
|
✓ Check server is running: curl http://localhost:3000/health
|
|
✓ Verify URL: ws://localhost:3000/ws
|
|
✓ Try anonymous connection first
|
|
✓ Check firewall settings
|
|
```
|
|
|
|
### CORS Errors
|
|
```
|
|
✓ Server configured to allow file:// protocol
|
|
✓ Restart server if you just updated config
|
|
✓ All localhost ports allowed in development
|
|
```
|
|
|
|
### 401 Unauthorized
|
|
```
|
|
✓ Login: http://localhost:3000/auth/steam
|
|
✓ Check cookies are enabled
|
|
✓ Clear cookies and login again
|
|
```
|
|
|
|
### No Broadcasts Received
|
|
```
|
|
✓ Verify WebSocket is connected
|
|
✓ Check you're on the right channel
|
|
✓ Try reconnecting WebSocket
|
|
✓ Check server logs
|
|
```
|
|
|
|
### Stress Test Connection Drops
|
|
```
|
|
✓ Reduce message count
|
|
✓ Increase interval
|
|
✓ Expected at >500 msgs
|
|
✓ Check server rate limiting
|
|
```
|
|
|
|
---
|
|
|
|
## 🔗 Quick Links
|
|
|
|
### Server Endpoints
|
|
- Health: http://localhost:3000/health
|
|
- API Info: http://localhost:3000/
|
|
- Steam Login: http://localhost:3000/auth/steam
|
|
- Current User: http://localhost:3000/auth/me
|
|
- Listings: http://localhost:3000/marketplace/listings
|
|
|
|
### WebSocket
|
|
- Connection: ws://localhost:3000/ws
|
|
- With Token: ws://localhost:3000/ws?token=YOUR_TOKEN
|
|
|
|
---
|
|
|
|
## 📋 Test Checklist
|
|
|
|
### Basic Tests
|
|
- [ ] Anonymous WebSocket connection
|
|
- [ ] Authenticated WebSocket connection
|
|
- [ ] Send ping/pong
|
|
- [ ] Send custom message
|
|
- [ ] View statistics
|
|
- [ ] Clear messages
|
|
|
|
### Stress Tests
|
|
- [ ] Gradual test (10 msgs)
|
|
- [ ] Gradual test (100 msgs)
|
|
- [ ] Burst test (100 msgs)
|
|
- [ ] Connection stays stable
|
|
- [ ] All messages received
|
|
|
|
### Marketplace Tests
|
|
- [ ] Get all listings
|
|
- [ ] Filter by game
|
|
- [ ] Filter by price
|
|
- [ ] Create listing
|
|
- [ ] Update price
|
|
- [ ] Set trade URL
|
|
- [ ] Receive broadcasts
|
|
|
|
### Multi-Client Tests
|
|
- [ ] Open 2 browsers
|
|
- [ ] Both receive broadcasts
|
|
- [ ] Create listing in one
|
|
- [ ] Verify other receives it
|
|
|
|
---
|
|
|
|
## 💡 Tips
|
|
|
|
### Performance
|
|
- Clear messages before large tests
|
|
- Monitor browser console for errors
|
|
- Check server logs for issues
|
|
- Document test results
|
|
|
|
### Authentication
|
|
- Login via Steam first
|
|
- Token stored in cookies automatically
|
|
- Token expires after 15 minutes
|
|
- Refresh by logging in again
|
|
|
|
### Broadcasting
|
|
- Keep WebSocket connected
|
|
- Multiple clients can connect
|
|
- Broadcasts are real-time
|
|
- Check Messages panel for updates
|
|
|
|
### Stress Testing
|
|
- Start small (10 messages)
|
|
- Gradually increase load
|
|
- Document breaking points
|
|
- Test reconnection after stress
|
|
|
|
---
|
|
|
|
## 📚 Related Documentation
|
|
|
|
- **TESTING_GUIDE.md** - Comprehensive testing guide
|
|
- **WEBSOCKET_AUTH.md** - Authentication details
|
|
- **WEBSOCKET_GUIDE.md** - WebSocket features
|
|
- **NEW_FEATURES.md** - Latest features
|
|
- **FIXED.md** - Known issues and fixes
|
|
|
|
---
|
|
|
|
## 🎓 Keyboard Shortcuts
|
|
|
|
*(Future enhancement)*
|
|
- `Ctrl+Enter` - Send message
|
|
- `Ctrl+K` - Clear messages
|
|
- `Ctrl+R` - Reconnect WebSocket
|
|
- `Esc` - Stop stress test
|
|
|
|
---
|
|
|
|
## 📞 Need Help?
|
|
|
|
1. Check browser console (F12)
|
|
2. Check server logs
|
|
3. See TESTING_GUIDE.md
|
|
4. Check FIXED.md for known issues
|
|
5. Verify server is running
|
|
|
|
---
|
|
|
|
**Last Updated:** After Issue #8 (CORS fix for file:// protocol)
|
|
|
|
**Status:** ✅ All features working
|
|
|
|
**Quick Test:** Open test-client.html → Click Connect → Click Send Ping → Verify pong received |