mirror of
https://github.com/pacnpal/thrilltrack-explorer.git
synced 2025-12-20 06:11:11 -05:00
feat: Create Phase 5 testing checklist
This commit is contained in:
159
docs/PHASE_5_TESTING_CHECKLIST.md
Normal file
159
docs/PHASE_5_TESTING_CHECKLIST.md
Normal file
@@ -0,0 +1,159 @@
|
|||||||
|
# Phase 5: Testing Checklist
|
||||||
|
|
||||||
|
## Quick Manual Tests (30 min)
|
||||||
|
|
||||||
|
### ✅ Test 1: State Machine Flow
|
||||||
|
1. Open moderation queue → Click submission
|
||||||
|
2. **Check DevTools React Components:** Find `SubmissionReviewManager`
|
||||||
|
3. **Verify state transitions:** `idle` → `claiming` → `locked` → `loading_data` → `reviewing`
|
||||||
|
4. **Expected:** Items load, no console errors
|
||||||
|
|
||||||
|
### ✅ Test 2: Lock Expiry Warning
|
||||||
|
1. Claim submission and wait ~13 minutes (or modify DB lock duration to 2 min for testing)
|
||||||
|
2. **Expected:** Toast warning appears: "Lock Expiring Soon"
|
||||||
|
3. Click to extend lock
|
||||||
|
4. **Expected:** Lock renewed, toast confirms
|
||||||
|
|
||||||
|
### ✅ Test 3: Approval Flow
|
||||||
|
1. Select items → Click "Approve Selected"
|
||||||
|
2. **Check state transitions:** `reviewing` → `approving` → `complete`
|
||||||
|
3. **Expected:** Success toast with requestId, items approved
|
||||||
|
|
||||||
|
### ✅ Test 4: Rejection Flow
|
||||||
|
1. Select items → Click "Reject Selected"
|
||||||
|
2. Enter reason → Confirm
|
||||||
|
3. **Check state:** `reviewing` → `rejecting` → `complete`
|
||||||
|
4. **Expected:** Success toast, items rejected
|
||||||
|
|
||||||
|
### ✅ Test 5: Illegal Transition Prevention
|
||||||
|
1. While in `approving` state, try clicking "Reject"
|
||||||
|
2. **Expected:** Button disabled, no console errors
|
||||||
|
|
||||||
|
### ✅ Test 6: Error Recovery
|
||||||
|
1. Disconnect network → Attempt approval
|
||||||
|
2. **Expected:** State shows `error`, "Try Again" button appears
|
||||||
|
3. Reconnect → Click "Try Again"
|
||||||
|
4. **Expected:** Recovery successful
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Database Validation Queries (15 min)
|
||||||
|
|
||||||
|
### Query 1: Active Locks
|
||||||
|
```sql
|
||||||
|
SELECT id, status, locked_until, assigned_to
|
||||||
|
FROM content_submissions
|
||||||
|
WHERE locked_until > NOW()
|
||||||
|
ORDER BY locked_until DESC;
|
||||||
|
```
|
||||||
|
**Expected:** All locks valid, no expired with status='locked'
|
||||||
|
|
||||||
|
### Query 2: Stuck Locks Check
|
||||||
|
```sql
|
||||||
|
SELECT id, status, locked_until
|
||||||
|
FROM content_submissions
|
||||||
|
WHERE status = 'locked'
|
||||||
|
AND locked_until < NOW();
|
||||||
|
```
|
||||||
|
**Expected:** 0 rows (no stuck locks)
|
||||||
|
|
||||||
|
### Query 3: Request Tracking Coverage
|
||||||
|
```sql
|
||||||
|
SELECT
|
||||||
|
endpoint,
|
||||||
|
COUNT(*) as request_count,
|
||||||
|
AVG(duration_ms) as avg_duration_ms,
|
||||||
|
COUNT(CASE WHEN error_message IS NOT NULL THEN 1 END) as error_count
|
||||||
|
FROM request_metadata
|
||||||
|
WHERE created_at > NOW() - INTERVAL '1 hour'
|
||||||
|
GROUP BY endpoint
|
||||||
|
ORDER BY request_count DESC;
|
||||||
|
```
|
||||||
|
**Expected:** `process-selective-approval` present with requests
|
||||||
|
|
||||||
|
### Query 4: Status Type Safety
|
||||||
|
```sql
|
||||||
|
SELECT status, COUNT(*) as count
|
||||||
|
FROM content_submissions
|
||||||
|
WHERE status NOT IN ('draft', 'pending', 'locked', 'reviewing', 'partially_approved', 'approved', 'rejected', 'escalated')
|
||||||
|
GROUP BY status;
|
||||||
|
```
|
||||||
|
**Expected:** 0 rows (all statuses valid)
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Performance Check (15 min)
|
||||||
|
|
||||||
|
### Test 1: State Machine Overhead
|
||||||
|
1. Chrome DevTools → Performance tab → Record
|
||||||
|
2. Submit approval flow
|
||||||
|
3. Stop recording → Search for "moderationReducer"
|
||||||
|
4. **Target:** < 5ms total time
|
||||||
|
|
||||||
|
### Test 2: UI Responsiveness
|
||||||
|
1. Measure button click → state change
|
||||||
|
2. **Target:** < 100ms response time
|
||||||
|
|
||||||
|
### Test 3: Memory Leak Check
|
||||||
|
1. DevTools Memory tab → Take baseline heap snapshot
|
||||||
|
2. Perform 20 form submissions
|
||||||
|
3. Force GC (🗑️) → Take second snapshot
|
||||||
|
4. Compare snapshots
|
||||||
|
5. **Expected:** No significant memory retention
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Success Criteria
|
||||||
|
|
||||||
|
**Functional:**
|
||||||
|
- ✅ State machine controls all submission states
|
||||||
|
- ✅ Lock expiry warnings work
|
||||||
|
- ✅ Illegal transitions prevented
|
||||||
|
- ✅ Error recovery functional
|
||||||
|
- ✅ All buttons respect state machine guards
|
||||||
|
|
||||||
|
**Quality:**
|
||||||
|
- ✅ Zero TypeScript errors
|
||||||
|
- ✅ No console errors during normal flow
|
||||||
|
- ✅ All manual tests pass
|
||||||
|
- ✅ Database shows no orphaned/invalid data
|
||||||
|
|
||||||
|
**Performance:**
|
||||||
|
- ✅ State machine overhead < 5ms
|
||||||
|
- ✅ UI response < 100ms
|
||||||
|
- ✅ No memory leaks
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Quick Test Commands
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# Test lock expiry (reduce to 2 min for testing)
|
||||||
|
UPDATE content_submissions
|
||||||
|
SET locked_until = NOW() + INTERVAL '2 minutes'
|
||||||
|
WHERE id = 'YOUR_SUBMISSION_ID';
|
||||||
|
|
||||||
|
# Reset stuck submission
|
||||||
|
UPDATE content_submissions
|
||||||
|
SET status = 'pending', locked_until = NULL, assigned_to = NULL
|
||||||
|
WHERE id = 'YOUR_SUBMISSION_ID';
|
||||||
|
|
||||||
|
# View recent request tracking
|
||||||
|
SELECT * FROM request_metadata
|
||||||
|
ORDER BY created_at DESC
|
||||||
|
LIMIT 20;
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Issue Checklist
|
||||||
|
|
||||||
|
- [ ] All 6 manual tests pass
|
||||||
|
- [ ] All 4 database queries return expected results
|
||||||
|
- [ ] Performance benchmarks meet targets
|
||||||
|
- [ ] No memory leaks detected
|
||||||
|
- [ ] Lock monitoring functions correctly
|
||||||
|
- [ ] Error recovery works
|
||||||
|
- [ ] UI reflects state accurately
|
||||||
|
|
||||||
|
**Estimated Time:** 1 hour total
|
||||||
Reference in New Issue
Block a user