Test Cases
Create and manage test cases
| ID | Title | Project | Priority | Type | Actions |
|---|---|---|---|---|---|
| PUZ-API-001 | Start game without authentication returns 401 | chess-rocket | P0 | automation | |
| PUZ-API-002 | Start game with invalid mode returns 400 | chess-rocket | P0 | automation | |
| PUZ-API-003 | Submit move for wrong puzzle returns 400 | chess-rocket | P0 | automation | |
| PUZ-API-004 | Submit move with invalid format returns 400 | chess-rocket | P0 | automation | |
| PUZ-API-005 | Request hint when hints disabled returns 403 | chess-rocket | P0 | automation | |
| PUZ-API-006 | Request second hint returns 400 | chess-rocket | P0 | automation | |
| PUZ-API-007 | End session for non-existent game returns 404 | chess-rocket | P1 | automation | |
| PUZ-API-008 | End another user's game returns 403 | chess-rocket | P0 | automation | |
| PUZ-API-009 | Submit move for ended game returns 400 | chess-rocket | P0 | automation | |
| PUZ-API-010 | Start game when active session exists returns 409 | chess-rocket | P0 | automation | |
| PUZ-API-011 | Get puzzles with invalid rating range returns 400 | chess-rocket | P1 | automation | |
| PUZ-API-012 | Rate limiting prevents abuse | chess-rocket | P1 | automation | |
| PUZ-API-013 | SQL injection attempt is blocked | chess-rocket | P0 | automation | |
| PUZ-API-014 | XSS attempt in puzzle data is escaped | chess-rocket | P0 | automation | |
| PUZ-API-015 | Large payload rejected | chess-rocket | P1 | automation | |
| PUZ-API-016 | Expired JWT token returns 401 | chess-rocket | P0 | automation | |
| PUZ-API-017 | Concurrent move submissions handled | chess-rocket | P0 | automation | |
| PUZ-API-018 | Network timeout handled gracefully | chess-rocket | P1 | both | |
| PUZ-API-019 | Server error returns 500 with safe message | chess-rocket | P1 | automation | |
| PUZ-API-020 | Invalid theme ID in filter returns empty results | chess-rocket | P2 | automation | |
| PUZ-CAL-001 | Calculation Mode is unrated | chess-rocket | P0 | both | |
| PUZ-CAL-002 | Default mode is Deep Think | chess-rocket | P1 | manual | |
| PUZ-CAL-003 | Deep Think has no timer | chess-rocket | P0 | both | |
| PUZ-CAL-004 | Deep Think uses long sequences | chess-rocket | P1 | automation | |
| PUZ-CAL-005 | Commitment Mode first move is untimed | chess-rocket | P0 | both | |
| PUZ-CAL-006 | Commitment Mode 3s timer after first move | chess-rocket | P0 | both | |
| PUZ-CAL-007 | Commitment Mode timer expiry fails puzzle | chess-rocket | P0 | both | |
| PUZ-CAL-008 | Checkmate Climb starts at mate-in-1 | chess-rocket | P0 | both | |
| PUZ-CAL-009 | Checkmate Climb progresses to mate-in-2 | chess-rocket | P0 | both | |
| PUZ-CAL-010 | Checkmate Climb resets to mate-in-1 on fail | chess-rocket | P0 | both | |
| PUZ-CAL-011 | Checkmate Climb max level | chess-rocket | P2 | automation | |
| PUZ-CAL-012 | Hints allowed in Calculation Mode | chess-rocket | P1 | both | |
| PUZ-CAL-013 | Rating range slider clamps correctly | chess-rocket | P1 | both | |
| PUZ-CAL-014 | Deep Think score decay to zero at 300s | chess-rocket | P2 | automation | |
| PUZ-CAL-015 | Score can go negative after zero-point time | chess-rocket | P2 | automation | |
| PUZ-CAL-016 | Wrong attempt uses decayed score | chess-rocket | P2 | automation | |
| PUZ-CAL-017 | Retry attempt yields zero score | chess-rocket | P2 | automation | |
| PUZ-CAL-018 | Commitment mode zero-point at 100s | chess-rocket | P2 | automation | |
| PUZ-CAL-019 | Coming Soon when mode not available | chess-rocket | P2 | both | |
| PUZ-CAL-020 | Commitment Mode timer is HIDDEN | chess-rocket | P0 | manual | |
| PUZ-CAL-021 | Puzzle rating range selection works | chess-rocket | P0 | automation | |
| PUZ-CAL-022 | Session-end shows session stats | chess-rocket | P1 | manual | |
| PUZ-CAL-023 | Puzzle-end shows depth (moves played) | chess-rocket | P1 | manual | |
| PUZ-CAL-024 | Commitment Mode tests pre-calculation | chess-rocket | P0 | manual | |
| PUZ-CAL-025 | Mode selection changes start behavior | chess-rocket | P1 | both | |
| PUZ-CLM-001 | Puzzle Climb is rated (Glicko) | chess-rocket | P0 | both | |
| PUZ-CLM-002 | No time pressure (no clock) | chess-rocket | P0 | both | |
| PUZ-CLM-003 | Difficulty increases after consecutive solves | chess-rocket | P0 | automation | |
| PUZ-CLM-004 | Difficulty decreases after consecutive failures | chess-rocket | P0 | automation | |
| PUZ-CLM-005 | Mixed performance difficulty adjustment | chess-rocket | P1 | automation | |
| PUZ-CLM-006 | Wrong move fails puzzle immediately | chess-rocket | P0 | both | |
| PUZ-CLM-007 | Rating gain on solve | chess-rocket | P0 | automation | |
| PUZ-CLM-008 | Next puzzle loads after solve | chess-rocket | P0 | both | |
| PUZ-CLM-009 | Rating loss on fail | chess-rocket | P0 | automation | |
| PUZ-CLM-010 | Next puzzle loads after fail (no game-over) | chess-rocket | P0 | both | |
| PUZ-CLM-011 | Hint reduces rating gain by 50% | chess-rocket | P0 | automation | |
| PUZ-CLM-012 | Puzzle-end completion screen shown | chess-rocket | P0 | manual | |
| PUZ-CLM-013 | Start without rating prompts initialization | chess-rocket | P1 | both | |
| PUZ-CLM-014 | Start without theme selection works | chess-rocket | P2 | both | |
| PUZ-CLM-015 | Level up after required solves (if level-based) | chess-rocket | P1 | both | |
| PUZ-CLM-016 | Level down after consecutive fails (if level-based) | chess-rocket | P1 | both | |
| PUZ-CLM-017 | Level does not drop below 1 (if level-based) | chess-rocket | P1 | both | |
| PUZ-CLM-018 | Highest level persists after dropping | chess-rocket | P2 | both | |
| PUZ-CLM-019 | Start game failure shows error | chess-rocket | P1 | both | |
| PUZ-CLM-020 | Coming Soon when mode not available | chess-rocket | P2 | both | |
| PUZ-CLM-021 | First puzzle starts near user's rating | chess-rocket | P0 | automation | |
| PUZ-CLM-022 | Theme filtering works with single theme | chess-rocket | P0 | automation | |
| PUZ-CLM-023 | Theme filtering works with multiple themes | chess-rocket | P1 | automation | |
| PUZ-CLM-024 | Session-end shows game session stats | chess-rocket | P1 | manual | |
| PUZ-CLM-025 | User can exit session anytime | chess-rocket | P0 | both | |
| PUZ-COM-001 | Empty solution string is handled safely | chess-rocket | P0 | automation | |
| PUZ-COM-002 | Solution parsing ignores extra whitespace | chess-rocket | P1 | automation | |
| PUZ-COM-003 | Malformed UCI token is rejected | chess-rocket | P0 | automation | |
| PUZ-COM-004 | Invalid FEN is handled safely | chess-rocket | P0 | automation | |
| PUZ-COM-005 | Promotion piece mismatch is marked wrong | chess-rocket | P0 | both | |
| PUZ-COM-006 | Underpromotion required is accepted | chess-rocket | P1 | both | |
| PUZ-COM-007 | User cannot move during opponent turn | chess-rocket | P1 | both | |
| PUZ-COM-008 | Move history controls stop at boundaries | chess-rocket | P2 | manual | |
| PUZ-COM-009 | Progress percent handles zero moves gracefully | chess-rocket | P1 | automation | |
| PUZ-COM-010 | Puzzle solution cache expires correctly | chess-rocket | P2 | automation | |
| PUZ-COM-011 | Game backup restores state within 1 hour | chess-rocket | P0 | both | |
| PUZ-COM-012 | Game backup expires after 1 hour | chess-rocket | P1 | automation | |
| PUZ-COM-013 | Failed completion retried within 24 hours | chess-rocket | P0 | automation | |
| PUZ-COM-014 | Failed completion expires after 24 hours | chess-rocket | P1 | automation | |
| PUZ-COM-015 | Multi-tab backup conflict uses latest save | chess-rocket | P1 | both | |
| PUZ-COM-016 | Negative or NaN time does not break scoring | chess-rocket | P0 | automation | |
| PUZ-COM-017 | Very short maxTimeSeconds does not break time bonus | chess-rocket | P2 | automation | |
| PUZ-COM-018 | Castling move validated correctly | chess-rocket | P1 | both | |
| PUZ-COM-019 | En passant capture validated correctly | chess-rocket | P1 | both | |
| PUZ-COM-020 | Alternate correct line is accepted | chess-rocket | P1 | both | |
| PUZ-COMP-001 | Puzzle Tempo puzzle-end shows rating earned | chess-rocket | P0 | manual | |
| PUZ-COMP-002 | Puzzle Tempo puzzle-end shows rating loss | chess-rocket | P0 | manual | |
| PUZ-COMP-003 | Puzzle Climb puzzle-end shows rating format | chess-rocket | P0 | manual | |
| PUZ-COMP-004 | Calculation Mode puzzle-end shows depth | chess-rocket | P0 | manual | |
| PUZ-COMP-005 | Session-end shows game session stats | chess-rocket | P0 | manual | |
| PUZ-COMP-006 | Practice mode shows Practice badge instead of rating | chess-rocket | P0 | manual | |
| PUZ-COMP-007 | Hint usage shown on completion | chess-rocket | P1 | manual | |
| PUZ-COMP-008 | Puzzle Rocket session-end shows all stats | chess-rocket | P0 | manual | |
| PUZ-COMP-009 | GM Move session-end shows accuracy | chess-rocket | P0 | manual | |
| PUZ-COMP-010 | Continue button advances to next puzzle | chess-rocket | P0 | both | |
| PUZ-COMP-011 | View Solution button shows correct moves | chess-rocket | P0 | manual | |
| PUZ-COMP-012 | Play Again starts fresh session | chess-rocket | P1 | both | |
| PUZ-COMP-013 | Back to Menu returns to mode selection | chess-rocket | P1 | both | |
| PUZ-COMP-014 | Puzzle rating shown on completion | chess-rocket | P1 | manual | |
| PUZ-COMP-015 | Time spent shown on completion | chess-rocket | P1 | manual | |
| PUZ-CUS-001 | Default rating range applied | chess-rocket | P1 | both | |
| PUZ-CUS-002 | Rating range clamps when min exceeds max | chess-rocket | P1 | both | |
| PUZ-CUS-003 | Start without theme selection works | chess-rocket | P1 | both | |
| PUZ-CUS-004 | Theme selection toggle and Select All | chess-rocket | P2 | manual | |
| PUZ-CUS-005 | Rating slider steps by 100 | chess-rocket | P2 | manual | |
| PUZ-CUS-006 | Start game failure shows error | chess-rocket | P1 | both | |
| PUZ-CUS-007 | Coming Soon when mode not available | chess-rocket | P2 | both | |
| PUZ-CUS-008 | Rating range persists while toggling themes | chess-rocket | P2 | both | |
| PUZ-EDGE-001 | Puzzle rating updates on solve (not just user) | chess-rocket | P0 | automation | |
| PUZ-EDGE-002 | Puzzle rating updates on fail | chess-rocket | P0 | automation | |
| PUZ-EDGE-003 | Empty puzzle database for filter | chess-rocket | P0 | both | |
| PUZ-EDGE-004 | Very long session memory handling | chess-rocket | P1 | automation | |
| PUZ-EDGE-005 | User at minimum rating (100) cannot go lower | chess-rocket | P0 | automation | |
| PUZ-EDGE-006 | User at maximum rating (3500) cannot go higher | chess-rocket | P0 | automation | |
| PUZ-EDGE-007 | Network disconnect during puzzle | chess-rocket | P0 | both | |
| PUZ-EDGE-008 | Session timeout after inactivity | chess-rocket | P1 | both | |
| PUZ-EDGE-009 | Rapid consecutive moves | chess-rocket | P0 | both | |
| PUZ-EDGE-010 | Back button during puzzle | chess-rocket | P0 | both | |
| PUZ-EDGE-011 | Same puzzle served twice in session | chess-rocket | P1 | automation | |
| PUZ-EDGE-012 | Puzzle with very long solution (10+ moves) | chess-rocket | P1 | both | |
| PUZ-EDGE-013 | Timer at exactly 0 (boundary) | chess-rocket | P1 | automation | |
| PUZ-EDGE-014 | Move submitted at exact timer expiry | chess-rocket | P1 | automation | |
| PUZ-EDGE-015 | Hint on final move of puzzle | chess-rocket | P1 | both | |
| PUZ-EDGE-016 | User has identical rating to puzzle | chess-rocket | P2 | automation | |
| PUZ-EDGE-017 | Extremely low RD (high confidence) | chess-rocket | P2 | automation | |
| PUZ-EDGE-018 | Extremely high RD (new player) | chess-rocket | P2 | automation | |
| PUZ-EDGE-019 | Unicode in puzzle data | chess-rocket | P1 | both | |
| PUZ-EDGE-020 | Stalemate position in puzzle | chess-rocket | P1 | both | |
| PUZ-FRG-001 | Start button disabled until account selected | chess-rocket | P0 | both | |
| PUZ-FRG-002 | Selecting Chess.com enables Start | chess-rocket | P0 | both | |
| PUZ-FRG-003 | Selecting Lichess enables Start | chess-rocket | P0 | both | |
| PUZ-FRG-004 | Switching accounts updates selection | chess-rocket | P1 | both | |
| PUZ-FRG-005 | Start navigates to play route | chess-rocket | P1 | both | |
| PUZ-FRG-006 | Selection resets after page reload | chess-rocket | P2 | both | |
| PUZ-FRG-007 | Account cards display logos and labels | chess-rocket | P2 | manual | |
| PUZ-FRG-008 | Connected state uses correct styling | chess-rocket | P2 | manual | |
| PUZ-GLO-001 | Glicko rating system used for rated modes | chess-rocket | P0 | both | |
| PUZ-GLO-002 | Only Puzzle Tempo and Puzzle Climb are rated | chess-rocket | P0 | both | |
| PUZ-GLO-003 | Both user and puzzle ratings update on solve | chess-rocket | P0 | both | |
| PUZ-GLO-004 | Both user and puzzle ratings update on fail | chess-rocket | P0 | both | |
| PUZ-GLO-005 | Rating range selection triggers practice mode | chess-rocket | P0 | both | |
| PUZ-GLO-006 | Rating clamped at minimum 100 | chess-rocket | P0 | automation | |
| PUZ-GLO-007 | Rating clamped at maximum 3500 | chess-rocket | P0 | automation | |
| PUZ-GLO-008 | One hint maximum per puzzle | chess-rocket | P0 | both | |
| PUZ-GLO-009 | Hint highlights piece to move only | chess-rocket | P0 | manual | |
| PUZ-GLO-010 | Hint reduces rating gain by 50% | chess-rocket | P0 | automation | |
| PUZ-GLO-011 | Hint does not affect rating loss | chess-rocket | P0 | automation | |
| PUZ-GLO-012 | Hints unavailable in Puzzle Rocket | chess-rocket | P0 | both | |
| PUZ-GLO-013 | Hint resets between puzzles | chess-rocket | P1 | both | |
| PUZ-GLO-014 | Hint on multi-move puzzle highlights NEXT move | chess-rocket | P1 | both | |
| PUZ-GLO-015 | Single-move puzzle completes after one move | chess-rocket | P0 | both | |
| PUZ-GLO-016 | Multi-move puzzle requires all moves | chess-rocket | P0 | both | |
| PUZ-GLO-017 | Wrong move fails puzzle immediately | chess-rocket | P0 | both | |
| PUZ-GLO-018 | Multi-move length does NOT affect rating | chess-rocket | P1 | automation | |
| PUZ-GLO-019 | RD decreases after rated activity | chess-rocket | P1 | automation | |
| PUZ-GLO-020 | Provisional rating indicator shown | chess-rocket | P2 | manual | |
| PUZ-GLO-021 | Concurrent session prevention | chess-rocket | P0 | both | |
| PUZ-GLO-022 | Puzzle Rocket shows session-end screen only | chess-rocket | P0 | manual | |
| PUZ-GLO-023 | GM Move shows session-end screen only | chess-rocket | P0 | manual | |
| PUZ-GLO-024 | Other modes show puzzle-end completion | chess-rocket | P1 | manual | |
| PUZ-GM-001 | GM Move is unrated | chess-rocket | P0 | both | |
| PUZ-GM-002 | Board shows position from PGN | chess-rocket | P0 | both | |
| PUZ-GM-003 | User guesses next move | chess-rocket | P0 | both | |
| PUZ-GM-004 | Correct guess feedback | chess-rocket | P0 | both | |
| PUZ-GM-005 | Wrong guess shows actual GM move | chess-rocket | P0 | both | |
| PUZ-GM-006 | Hints available in GM Move | chess-rocket | P1 | both | |
| PUZ-GM-007 | Session-end shows accuracy summary | chess-rocket | P0 | both | |
| PUZ-GM-008 | No per-move completion modal | chess-rocket | P0 | manual | |
| PUZ-GM-009 | Game selection screen shows available games | chess-rocket | P1 | manual | |
| PUZ-GM-010 | Filter by Grandmaster | chess-rocket | P1 | both | |
| PUZ-GM-011 | Filter by Opening | chess-rocket | P1 | both | |
| PUZ-GM-012 | Play button navigates to game | chess-rocket | P1 | both | |
| PUZ-GM-013 | Search input works | chess-rocket | P2 | manual | |
| PUZ-GM-014 | Layout is responsive | chess-rocket | P2 | manual | |
| PUZ-GM-015 | Game starts at midgame position | chess-rocket | P0 | both | |
| PUZ-GM-016 | Admin uploads PGN with metadata | chess-rocket | P0 | automation | |
| PUZ-GM-017 | Sequence ends after defined moves | chess-rocket | P0 | both | |
| PUZ-GM-018 | User can exit mid-game | chess-rocket | P1 | both | |
| PUZ-GM-019 | Opening label displayed if available | chess-rocket | P2 | manual | |
| PUZ-GM-020 | Accuracy calculation is correct | chess-rocket | P0 | automation | |
| PUZ-OPN-001 | Opening Puzzles is unrated | chess-rocket | P0 | both | |
| PUZ-OPN-002 | Opening filter works | chess-rocket | P0 | automation | |
| PUZ-OPN-003 | Rating range filter works | chess-rocket | P0 | automation | |
| PUZ-OPN-004 | Combined opening AND rating filter | chess-rocket | P0 | automation | |
| PUZ-OPN-005 | Wrong move fails puzzle | chess-rocket | P0 | both | |
| PUZ-OPN-006 | Session continues after failure | chess-rocket | P0 | both | |
| PUZ-OPN-007 | Hints allowed with no impact | chess-rocket | P1 | both | |
| PUZ-OPN-008 | Puzzle-end completion screen shown | chess-rocket | P1 | manual | |
| PUZ-OPN-009 | Coming Soon when mode not available | chess-rocket | P2 | both | |
| PUZ-OPN-010 | Banner renders correctly | chess-rocket | P2 | manual | |
| PUZ-OPN-011 | Empty filter results handled | chess-rocket | P1 | both | |
| PUZ-OPN-012 | Multiple opening selection works | chess-rocket | P0 | automation | |
| PUZ-OPN-013 | Session continues after failure | chess-rocket | P0 | both | |
| PUZ-OPN-014 | User can exit session anytime | chess-rocket | P0 | both | |
| PUZ-OPN-015 | Session-end shows puzzle-end screen | chess-rocket | P1 | manual | |
| PUZ-RAMP-001 | Step Size calculation is correct | chess-rocket | P0 | automation | |
| PUZ-RAMP-002 | Index generation is correct | chess-rocket | P0 | automation | |
| PUZ-RAMP-003 | Rating ranges use offset correctly | chess-rocket | P0 | automation | |
| PUZ-RAMP-004 | Puzzle selected randomly from range | chess-rocket | P1 | automation | |
| PUZ-RAMP-005 | Handles Number of Puzzles = 0 gracefully | chess-rocket | P0 | automation | |
| PUZ-RAMP-006 | Retry when no puzzle in range | chess-rocket | P1 | automation | |
| PUZ-RAMP-007 | Max retries limit enforced | chess-rocket | P0 | automation | |
| PUZ-RAMP-008 | Negative Start Rating handled | chess-rocket | P2 | automation | |
| PUZ-RAMP-009 | Start Rating > End Rating handled | chess-rocket | P2 | automation | |
| PUZ-RAMP-010 | Very large Number of Puzzles handled | chess-rocket | P2 | automation | |
| PUZ-ROC-001 | Puzzle Rocket is unrated | chess-rocket | P0 | both | |
| PUZ-ROC-002 | 1-minute duration ends at exactly 60 seconds | chess-rocket | P0 | both | |
| PUZ-ROC-003 | 2-minute duration ends at exactly 120 seconds | chess-rocket | P0 | both | |
| PUZ-ROC-004 | 3-minute duration ends at exactly 180 seconds | chess-rocket | P0 | both | |
| PUZ-ROC-005 | Survival mode has no time limit | chess-rocket | P0 | both | |
| PUZ-ROC-006 | Wrong move fails puzzle immediately | chess-rocket | P0 | both | |
| PUZ-ROC-007 | First failure shows 1/3 | chess-rocket | P0 | both | |
| PUZ-ROC-008 | Third failure ends game immediately | chess-rocket | P0 | both | |
| PUZ-ROC-009 | Hints are NOT available in Puzzle Rocket | chess-rocket | P0 | both | |
| PUZ-ROC-010 | Timer expiry ends session | chess-rocket | P0 | both | |
| PUZ-ROC-011 | Ramp-Up Formula applied to puzzle selection | chess-rocket | P1 | automation | |
| PUZ-ROC-012 | Failure counter resets between sessions | chess-rocket | P1 | both | |
| PUZ-ROC-013 | No puzzle-end modal in Puzzle Rocket | chess-rocket | P0 | manual | |
| PUZ-ROC-014 | Session-end screen shows correct statistics | chess-rocket | P1 | manual | |
| PUZ-ROC-015 | Personal bests tracked (Today, Week, All Time) | chess-rocket | P1 | both | |
| PUZ-ROC-016 | Duration options empty shows unavailable state | chess-rocket | P1 | both | |
| PUZ-ROC-017 | Simultaneous 3rd failure and timer expiry | chess-rocket | P2 | automation | |
| PUZ-ROC-018 | Browser refresh during timed session | chess-rocket | P0 | both | |
| PUZ-ROC-019 | Duration selection UI shows all options | chess-rocket | P1 | manual | |
| PUZ-ROC-020 | Survival mode displays fire icon | chess-rocket | P2 | manual | |
| PUZ-ROC-021 | Game ends on timeout even with strikes remaining | chess-rocket | P1 | both | |
| PUZ-ROC-022 | Start game API error surfaces to user | chess-rocket | P1 | both | |
| PUZ-ROC-023 | Give Up button ends game immediately | chess-rocket | P0 | both | |
| PUZ-ROC-024 | Play Again restarts with same settings | chess-rocket | P1 | both | |
| PUZ-ROC-025 | New Game returns to settings | chess-rocket | P1 | both | |
| PUZ-ROC-026 | Puzzles drawn from all themes | chess-rocket | P1 | automation | |
| PUZ-ROC-027 | Longest streak tracked correctly | chess-rocket | P1 | both | |
| PUZ-ROC-028 | Average time per puzzle calculated | chess-rocket | P2 | both | |
| PUZ-TEM-001 | Puzzle Tempo is rated (Glicko) | chess-rocket | P0 | both | |
| PUZ-TEM-002 | Tactical theme filtering works | chess-rocket | P0 | automation | |
| PUZ-TEM-003 | Multiple theme filtering (OR logic) | chess-rocket | P1 | automation | |
| PUZ-TEM-004 | No theme selection defaults to all themes | chess-rocket | P1 | both | |
| PUZ-TEM-005 | Wrong move fails puzzle immediately | chess-rocket | P0 | both | |
| PUZ-TEM-006 | Fast solve gets maximum SCORE (time bonus) | chess-rocket | P0 | automation | |
| PUZ-TEM-007 | Slow solve gets reduced SCORE (time decay) | chess-rocket | P0 | automation | |
| PUZ-TEM-008 | Glicko rating gain is NOT affected by solve time | chess-rocket | P0 | automation | |
| PUZ-TEM-009 | Hint reduces Glicko rating gain by 50% | chess-rocket | P0 | automation | |
| PUZ-TEM-010 | Streak multiplier increases game score | chess-rocket | P1 | automation | |
| PUZ-TEM-011 | Incorrect attempt resets streak and scores 0 | chess-rocket | P1 | automation | |
| PUZ-TEM-012 | User exit ends session | chess-rocket | P0 | both | |
| PUZ-TEM-013 | Session continues indefinitely until exit | chess-rocket | P1 | automation | |
| PUZ-TEM-014 | Puzzle-end completion screen shown | chess-rocket | P0 | manual | |
| PUZ-TEM-015 | Rating range selection triggers practice mode | chess-rocket | P0 | both | |
| PUZ-TEM-016 | Start without rating prompts initialization | chess-rocket | P1 | both | |
| PUZ-TEM-017 | Theme selection toggle and Select All | chess-rocket | P2 | manual | |
| PUZ-TEM-018 | Ramp-Up Formula applied | chess-rocket | P1 | automation | |
| PUZ-TEM-019 | Rating check failure shows error | chess-rocket | P1 | both | |
| PUZ-TEM-020 | Start game failure shows error | chess-rocket | P1 | both | |
| PUZ-UI-001 | Board orientation can be flipped | chess-rocket | P1 | manual | |
| PUZ-UI-002 | Legal move highlights shown | chess-rocket | P0 | manual | |
| PUZ-UI-003 | Last move highlighted on board | chess-rocket | P1 | manual | |
| PUZ-UI-004 | Correct move shows green feedback | chess-rocket | P0 | manual | |
| PUZ-UI-005 | Wrong move shows red feedback | chess-rocket | P0 | manual | |
| PUZ-UI-006 | Keyboard shortcuts work | chess-rocket | P2 | manual | |
| PUZ-UI-007 | Sound effects can be toggled | chess-rocket | P2 | manual | |
| PUZ-UI-008 | Board piece set can be changed | chess-rocket | P2 | manual | |
| PUZ-UI-009 | Board theme can be changed | chess-rocket | P2 | manual | |
| PUZ-UI-010 | Move history displayed | chess-rocket | P1 | manual | |
| PUZ-UI-011 | Rating display updates in real-time | chess-rocket | P1 | manual | |
| PUZ-UI-012 | Timer display accurate (Puzzle Rocket) | chess-rocket | P0 | manual | |
| PUZ-UI-013 | Failure counter visible (Puzzle Rocket) | chess-rocket | P0 | manual | |
| PUZ-UI-014 | Hint button shows remaining hints | chess-rocket | P1 | manual | |
| PUZ-UI-015 | Loading state shown while fetching puzzle | chess-rocket | P1 | manual | |
| PUZ-UI-016 | Responsive layout on different screen sizes | chess-rocket | P0 | manual | |
| PUZ-UI-017 | Dark mode support | chess-rocket | P2 | manual | |
| PUZ-UI-018 | Promotion dialog appears | chess-rocket | P0 | manual | |
| PUZ-UI-019 | Check indicator shown | chess-rocket | P1 | manual | |
| PUZ-UI-020 | Captured pieces shown | chess-rocket | P2 | manual | |
| PUZ-USR-A11Y-0001 | User navigates puzzle with keyboard only | chess-rocket | P1 | manual | |
| PUZ-USR-A11Y-0002 | User uses screen reader with puzzle | chess-rocket | P1 | manual | |
| PUZ-USR-A11Y-0003 | User with color blindness plays puzzle | chess-rocket | P1 | manual | |
| PUZ-USR-A11Y-0004 | User increases text size | chess-rocket | P1 | manual | |
| PUZ-USR-A11Y-0005 | User with motor impairment uses large click targets | chess-rocket | P1 | manual | |
| PUZ-USR-A11Y-0006 | User with cognitive disability uses clear interface | chess-rocket | P2 | manual | |
| PUZ-USR-A11Y-0007 | User pauses timed puzzle (if feature exists) | chess-rocket | P3 | manual | |
| PUZ-USR-A11Y-0008 | User disables animations | chess-rocket | P2 | manual | |
| PUZ-USR-A11Y-0009 | User in high contrast mode | chess-rocket | P2 | manual | |
| PUZ-USR-A11Y-0010 | User uses voice control | chess-rocket | P3 | manual | |
| PUZ-USR-DAY-0001 | User plays daily puzzle | chess-rocket | P1 | manual | |
| PUZ-USR-DAY-0002 | User sees daily puzzle streak | chess-rocket | P2 | manual | |
| PUZ-USR-DAY-0003 | User loses daily streak | chess-rocket | P2 | manual | |
| PUZ-USR-DAY-0004 | User compares daily puzzle time with friends | chess-rocket | P2 | manual | |
| PUZ-USR-DAY-0005 | User plays weekly puzzle challenge | chess-rocket | P2 | manual | |
| PUZ-USR-DAY-0006 | User participates in puzzle tournament | chess-rocket | P3 | manual | |
| PUZ-USR-DAY-0007 | User receives puzzle reminder notification | chess-rocket | P3 | manual | |
| PUZ-USR-DAY-0008 | User views past daily puzzles | chess-rocket | P3 | manual | |
| PUZ-USR-DAY-0009 | User completes monthly puzzle challenge | chess-rocket | P3 | manual | |
| PUZ-USR-DAY-0010 | User plays themed event puzzles | chess-rocket | P3 | manual | |
| PUZ-USR-E2E-0001 | New user plays first puzzle ever | chess-rocket | P0 | manual | |
| PUZ-USR-E2E-0002 | User plays complete Puzzle Rocket session (1 minute) | chess-rocket | P0 | manual | |
| PUZ-USR-E2E-0003 | User plays Puzzle Rocket Survival until game over | chess-rocket | P0 | manual | |
| PUZ-USR-E2E-0004 | User plays rated Puzzle Tempo session with themes | chess-rocket | P0 | manual | |
| PUZ-USR-E2E-0005 | User plays Puzzle Tempo in practice mode (rating range selected) | chess-rocket | P0 | manual | |
| PUZ-USR-E2E-0006 | User plays Puzzle Climb and sees difficulty adapt | chess-rocket | P0 | manual | |
| PUZ-USR-E2E-0007 | User uses hint in rated mode | chess-rocket | P0 | manual | |
| PUZ-USR-E2E-0008 | User plays Calculation Mode - Deep Think | chess-rocket | P1 | manual | |
| PUZ-USR-E2E-0009 | User plays Calculation Mode - Commitment | chess-rocket | P1 | manual | |
| PUZ-USR-E2E-0010 | User plays Calculation Mode - Checkmate Climb | chess-rocket | P1 | manual | |
| PUZ-USR-E2E-0011 | User plays Opening Puzzles filtered by specific opening | chess-rocket | P1 | manual | |
| PUZ-USR-E2E-0012 | User plays Guess the Grandmaster Move | chess-rocket | P1 | manual | |
| PUZ-USR-E2E-0013 | User fails a puzzle and sees correct solution | chess-rocket | P0 | manual | |
| PUZ-USR-E2E-0014 | User completes multi-move puzzle with opponent responses | chess-rocket | P0 | manual | |
| PUZ-USR-E2E-0015 | User quits session mid-puzzle | chess-rocket | P1 | manual | |
| PUZ-USR-E2E-0016 | User views their puzzle statistics | chess-rocket | P1 | manual | |
| PUZ-USR-E2E-0017 | User returns to continue previous session (if applicable) | chess-rocket | P2 | manual | |
| PUZ-USR-E2E-0018 | User plays on mobile device | chess-rocket | P0 | manual | |
| PUZ-USR-E2E-0019 | User experiences rating progression over multiple sessions | chess-rocket | P1 | manual | |
| PUZ-USR-E2E-0020 | User explores all puzzle modes from menu | chess-rocket | P1 | manual | |
| PUZ-USR-ERR-0001 | User loses internet connection during puzzle | chess-rocket | P0 | manual | |
| PUZ-USR-ERR-0002 | User session expires during puzzle | chess-rocket | P1 | manual | |
| PUZ-USR-ERR-0003 | User refreshes page during timed puzzle | chess-rocket | P0 | manual | |
| PUZ-USR-ERR-0004 | User navigates back button during session | chess-rocket | P1 | manual | |
| PUZ-USR-ERR-0005 | User encounters server error | chess-rocket | P0 | manual | |
| PUZ-USR-ERR-0006 | User double-clicks move too fast | chess-rocket | P1 | manual | |
| PUZ-USR-ERR-0007 | User tries to move during opponent's turn | chess-rocket | P1 | manual | |
| PUZ-USR-ERR-0008 | User on very slow connection | chess-rocket | P1 | manual | |
| PUZ-USR-ERR-0009 | User browser crashes during rated puzzle | chess-rocket | P0 | manual | |
| PUZ-USR-ERR-0010 | User on unsupported browser | chess-rocket | P2 | manual | |
| PUZ-USR-ERR-0011 | User encounters puzzle that fails to load | chess-rocket | P1 | manual | |
| PUZ-USR-ERR-0012 | User on mobile rotates device mid-puzzle | chess-rocket | P1 | manual | |
| PUZ-USR-ERR-0013 | User has JavaScript disabled | chess-rocket | P3 | manual | |
| PUZ-USR-ERR-0014 | User opens puzzle in multiple tabs | chess-rocket | P0 | manual | |
| PUZ-USR-ERR-0015 | User's clock differs from server | chess-rocket | P1 | manual | |
| PUZ-USR-INT-0001 | User moves piece by drag and drop | chess-rocket | P0 | manual | |
| PUZ-USR-INT-0002 | User moves piece by click-click | chess-rocket | P0 | manual | |
| PUZ-USR-INT-0003 | User attempts illegal move | chess-rocket | P0 | manual | |
| PUZ-USR-INT-0004 | User moves piece on touch device | chess-rocket | P0 | manual | |
| PUZ-USR-INT-0005 | User sees opponent's response animated | chess-rocket | P1 | manual | |
| PUZ-USR-INT-0006 | User flips board orientation | chess-rocket | P2 | manual | |
| PUZ-USR-INT-0007 | User views move history during puzzle | chess-rocket | P2 | manual | |
| PUZ-USR-INT-0008 | User uses keyboard controls | chess-rocket | P3 | manual | |
| PUZ-USR-INT-0009 | User promotes pawn | chess-rocket | P1 | manual | |
| PUZ-USR-INT-0010 | User makes castling move | chess-rocket | P1 | manual | |
| PUZ-USR-INT-0011 | User makes en passant capture | chess-rocket | P1 | manual | |
| PUZ-USR-INT-0012 | User sees check and checkmate indicators | chess-rocket | P1 | manual | |
| PUZ-USR-INT-0013 | User sees correct/incorrect move feedback | chess-rocket | P0 | manual | |
| PUZ-USR-INT-0014 | User adjusts audio settings | chess-rocket | P2 | manual | |
| PUZ-USR-INT-0015 | User adjusts board theme/colors | chess-rocket | P3 | manual | |
| PUZ-USR-INT-0016 | User right-clicks to draw arrows/highlight | chess-rocket | P3 | manual | |
| PUZ-USR-INT-0017 | User gives up on puzzle | chess-rocket | P1 | manual | |
| PUZ-USR-INT-0018 | User retries failed puzzle (if available) | chess-rocket | P2 | manual | |
| PUZ-USR-INT-0019 | User shares puzzle with friend | chess-rocket | P3 | manual | |
| PUZ-USR-INT-0020 | User reports incorrect puzzle | chess-rocket | P3 | manual | |
| PUZ-USR-ONB-0001 | New user sees puzzle tutorial on first visit | chess-rocket | P1 | manual | |
| PUZ-USR-ONB-0002 | User can replay tutorial from help menu | chess-rocket | P3 | manual | |
| PUZ-USR-ONB-0003 | New user plays guided first puzzle | chess-rocket | P1 | manual | |
| PUZ-USR-ONB-0004 | User sees mode introduction on first selection | chess-rocket | P1 | manual | |
| PUZ-USR-ONB-0005 | User sets initial skill level | chess-rocket | P1 | manual | |
| PUZ-USR-ONB-0006 | User links external chess rating | chess-rocket | P2 | manual | |
| PUZ-USR-ONB-0007 | Guest user can play puzzles without account | chess-rocket | P2 | manual | |
| PUZ-USR-ONB-0008 | User sees tooltips on hover for UI elements | chess-rocket | P2 | manual | |
| PUZ-USR-ONB-0009 | User accesses help/FAQ during puzzle | chess-rocket | P2 | manual | |
| PUZ-USR-ONB-0010 | User understands rating confidence/provisional | chess-rocket | P2 | manual | |
| PUZ-USR-REV-0001 | User reviews failed puzzle with solution | chess-rocket | P0 | manual | |
| PUZ-USR-REV-0002 | User analyzes completed puzzle position | chess-rocket | P2 | manual | |
| PUZ-USR-REV-0003 | User bookmarks puzzle for later review | chess-rocket | P2 | manual | |
| PUZ-USR-REV-0004 | User views puzzle explanation/annotation | chess-rocket | P2 | manual | |
| PUZ-USR-REV-0005 | User sees related puzzles by theme | chess-rocket | P2 | manual | |
| PUZ-USR-REV-0006 | User retries failed puzzle immediately | chess-rocket | P1 | manual | |
| PUZ-USR-REV-0007 | User views puzzle difficulty after completion | chess-rocket | P1 | manual | |
| PUZ-USR-REV-0008 | User sees solve statistics for puzzle | chess-rocket | P2 | manual | |
| PUZ-USR-REV-0009 | User practices specific weakness | chess-rocket | P1 | manual | |
| PUZ-USR-REV-0010 | User compares solve to previous attempt | chess-rocket | P2 | manual | |
| PUZ-USR-REV-0011 | User reviews entire session performance | chess-rocket | P1 | manual | |
| PUZ-USR-REV-0012 | User exports puzzle as PGN/image | chess-rocket | P3 | manual | |
| PUZ-USR-SET-0001 | User changes board theme | chess-rocket | P2 | manual | |
| PUZ-USR-SET-0002 | User changes piece set | chess-rocket | P2 | manual | |
| PUZ-USR-SET-0003 | User enables/disables move sounds | chess-rocket | P2 | manual | |
| PUZ-USR-SET-0004 | User enables/disables notifications | chess-rocket | P3 | manual | |
| PUZ-USR-SET-0005 | User enables dark mode | chess-rocket | P1 | manual | |
| PUZ-USR-SET-0006 | User enables coordinates on board | chess-rocket | P3 | manual | |
| PUZ-USR-SET-0007 | User enables move confirmation | chess-rocket | P2 | manual | |
| PUZ-USR-SET-0008 | User enables auto-promote to Queen | chess-rocket | P3 | manual | |
| PUZ-USR-SET-0009 | User adjusts animation speed | chess-rocket | P3 | manual | |
| PUZ-USR-SET-0010 | User sets default puzzle mode | chess-rocket | P3 | manual | |
| PUZ-USR-SET-0011 | User enables legal move highlights | chess-rocket | P2 | manual | |
| PUZ-USR-SET-0012 | User enables last move highlight | chess-rocket | P2 | manual | |
| PUZ-USR-SET-0013 | User resets all settings to default | chess-rocket | P3 | manual | |
| PUZ-USR-SET-0014 | User settings sync across devices | chess-rocket | P2 | manual | |
| PUZ-USR-STAT-0001 | User views current puzzle rating | chess-rocket | P0 | manual | |
| PUZ-USR-STAT-0002 | User sees rating change in real-time | chess-rocket | P0 | manual | |
| PUZ-USR-STAT-0003 | User views rating history graph | chess-rocket | P1 | manual | |
| PUZ-USR-STAT-0004 | User sees session summary statistics | chess-rocket | P0 | manual | |
| PUZ-USR-STAT-0005 | User views lifetime puzzle statistics | chess-rocket | P1 | manual | |
| PUZ-USR-STAT-0006 | User views performance by tactical theme | chess-rocket | P1 | manual | |
| PUZ-USR-STAT-0007 | User sees personal best records | chess-rocket | P2 | manual | |
| PUZ-USR-STAT-0008 | User views recent puzzle attempts | chess-rocket | P2 | manual | |
| PUZ-USR-STAT-0009 | User earns achievement/badge | chess-rocket | P3 | manual | |
| PUZ-USR-STAT-0010 | User sees daily/weekly puzzle streaks | chess-rocket | P3 | manual | |
| PUZ-USR-STAT-0011 | User compares stats with friends | chess-rocket | P3 | manual | |
| PUZ-USR-STAT-0012 | User exports puzzle statistics | chess-rocket | P3 | manual | |
| PUZ-USR-STAT-0013 | User sees improvement suggestions | chess-rocket | P2 | manual | |
| PUZ-USR-STAT-0014 | User sees time-of-day performance | chess-rocket | P3 | manual | |
| PUZ-USR-STAT-0015 | User rating shows provisional indicator | chess-rocket | P2 | manual |