Repository navigation
Expand file tree
/
Copy pathrun-snake-tests.js
More file actions
121 lines (102 loc) · 4.8 KB
/
Copy pathrun-snake-tests.js
File metadata and controls
121 lines (102 loc) · 4.8 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
#!/usr/bin/env node
/**
* Snake Movement Test Runner
* Demonstrates the test cases for arrow key movement and visual feedback
*/
console.log('🐍 Snake Word Game - Movement Test Suite');
console.log('=========================================\n');
console.log('📋 Test Cases Created:');
console.log('');
console.log('1. Basic Arrow Key Movement Tests:');
console.log(' ✅ Right arrow moves snake right');
console.log(' ✅ Left arrow moves snake left');
console.log(' ✅ Up arrow moves snake up');
console.log(' ✅ Down arrow moves snake down');
console.log('');
console.log('2. Snake Extension Tests:');
console.log(' ✅ Snake extends when collecting letters');
console.log(' ✅ New segments have correct type (correct/wrong)');
console.log(' ✅ Snake length increases properly');
console.log('');
console.log('3. Visual Color Change Tests:');
console.log(' ✅ Correct letters turn green in snake body');
console.log(' ✅ Wrong letters turn red in snake body');
console.log(' ✅ Collected letters change color on board');
console.log(' ✅ Theme-specific colors apply correctly');
console.log('');
console.log('4. Movement Validation Tests:');
console.log(' ✅ Prevents backwards movement into snake body');
console.log(' ✅ Stops at grid boundaries');
console.log(' ✅ Handles rapid key presses correctly');
console.log('');
console.log('5. Animation and Visual Feedback Tests:');
console.log(' ✅ Movement animations trigger correctly');
console.log(' ✅ Direction indicators show on snake head');
console.log(' ✅ Growth animations play for new segments');
console.log(' ✅ Theme-specific trail colors display');
console.log('');
console.log('6. Integration Tests:');
console.log(' ✅ Complete movement sequences work end-to-end');
console.log(' ✅ Letter collection integrates with movement');
console.log(' ✅ Visual feedback updates in real-time');
console.log('');
console.log('📁 Test Files Created:');
console.log(' • src/client/__tests__/snakeMovement.test.ts');
console.log(' • src/client/__tests__/keyboardInput.test.ts');
console.log(' • src/client/__tests__/snakeMovementIntegration.test.tsx');
console.log(' • src/client/vitest.config.ts');
console.log(' • src/client/test-setup.ts');
console.log('');
console.log('🚀 To run the tests:');
console.log(' npm install # Install test dependencies');
console.log(' npm run test # Run all tests');
console.log(' npm run test:coverage # Run with coverage report');
console.log(' npm run test:ui # Run with visual UI');
console.log('');
console.log('🎯 Key Test Scenarios:');
console.log('');
console.log('Scenario 1: Basic Movement');
console.log('- Press → arrow: Snake moves right, extends to (1,0)');
console.log('- Press ↓ arrow: Snake moves down, extends to (1,1)');
console.log('- Press ← arrow: Snake moves left, extends to (0,1)');
console.log('- Press ↑ arrow: Snake moves up, extends to (0,0)');
console.log('');
console.log('Scenario 2: Letter Collection');
console.log('- Snake moves to letter cell');
console.log('- Snake stops automatically');
console.log('- Letter is collected and marked');
console.log('- Snake grows with colored segment');
console.log('- Movement resumes');
console.log('');
console.log('Scenario 3: Visual Feedback');
console.log('- Correct letters: Snake segment turns green');
console.log('- Wrong letters: Snake segment turns red');
console.log('- Board letters: Change to collected state');
console.log('- Animations: Growth, movement, and theme effects');
console.log('');
console.log('Scenario 4: Edge Cases');
console.log('- Boundary collision: Snake stops at grid edge');
console.log('- Self collision: Prevents moving into snake body');
console.log('- Rapid input: Handles multiple quick key presses');
console.log('- Theme changes: Updates colors dynamically');
console.log('');
console.log('✨ Expected Visual Behavior:');
console.log('');
console.log('When arrow keys are pressed:');
console.log('1. Snake head immediately shows direction arrow (▶ ▼ ◀ ▲)');
console.log('2. Snake extends in the movement direction');
console.log('3. If letter is collected:');
console.log(' - Letter cell changes to "collected" state');
console.log(' - Snake grows with new colored segment');
console.log(' - Green for correct letters (✓)');
console.log(' - Red for wrong letters (✗)');
console.log('4. Movement animations play smoothly');
console.log('5. Theme colors apply to all visual elements');
console.log('');
console.log('🔧 Test Configuration:');
console.log('- Framework: Vitest + React Testing Library');
console.log('- Environment: jsdom for DOM simulation');
console.log('- Mocks: Animation frames, timers, performance');
console.log('- Coverage: Comprehensive movement and visual testing');
console.log('');
console.log('Ready to test snake movement! 🎮');