Skip to content

Commit cceeb5a

Browse files
Copilotmgierschdev
andcommitted
Add detailed bot mode test with movement verification screenshots
Co-authored-by: mgierschdev <62764972+mgierschdev@users.noreply.github.com>
1 parent b5b497f commit cceeb5a

1 file changed

Lines changed: 125 additions & 0 deletions

File tree

Lines changed: 125 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,125 @@
1+
import { test, expect } from '@playwright/test';
2+
3+
test.describe('Chess Bot Mode - Detailed Movement Verification', () => {
4+
test('should show complete bot interaction with piece movement screenshots', async ({ page }) => {
5+
await page.goto('/');
6+
await page.waitForSelector('.chessboard-grid', { timeout: 10000 });
7+
8+
// End any existing game
9+
const endButton = page.locator('button:has-text("End Game")');
10+
if (await endButton.isVisible().catch(() => false)) {
11+
await endButton.click();
12+
await page.waitForTimeout(500);
13+
}
14+
15+
// Screenshot 1: Initial state
16+
await page.screenshot({ path: 'test-results/bot-detailed/01-initial-state.png', fullPage: true });
17+
18+
// Enable bot mode
19+
const botModeCheckbox = page.locator('input[data-testid="bot-mode-toggle"]');
20+
await botModeCheckbox.check();
21+
await page.waitForTimeout(300);
22+
23+
// Screenshot 2: Bot mode enabled
24+
await page.screenshot({ path: 'test-results/bot-detailed/02-bot-mode-enabled.png', fullPage: true });
25+
26+
// Start game
27+
const startButton = page.locator('button:has-text("Start Game")');
28+
await startButton.click();
29+
await page.waitForTimeout(500);
30+
31+
// Screenshot 3: Fresh game ready
32+
await page.screenshot({ path: 'test-results/bot-detailed/03-fresh-game.png', fullPage: true });
33+
34+
console.log('\n🎮 Starting Bot Mode Game - Player (White) vs Computer (Black)\n');
35+
36+
// MOVE 1: Player moves e2 to e4
37+
console.log('Move 1a: Player selecting e2 pawn...');
38+
await page.locator('.chessboard-grid-cell[data-row="2"][data-col="5"]').click();
39+
await page.waitForTimeout(300);
40+
41+
console.log('Move 1b: Player moving to e4...');
42+
await page.locator('.chessboard-grid-cell[data-row="4"][data-col="5"]').click();
43+
await page.waitForTimeout(500);
44+
45+
// Screenshot 4: After player's e4 move
46+
await page.screenshot({ path: 'test-results/bot-detailed/04-player-e4.png', fullPage: true });
47+
console.log('✓ Player moved: e2-e4');
48+
49+
// Verify e4 has white pawn
50+
let square = page.locator('.chessboard-grid-cell[data-row="4"][data-col="5"]');
51+
let classes = await square.getAttribute('class');
52+
expect(classes).toContain('chess-pawn-white');
53+
54+
// Wait for computer to respond
55+
console.log('⏳ Computer is thinking...');
56+
await page.waitForTimeout(2000);
57+
58+
// Screenshot 5: After computer's response
59+
await page.screenshot({ path: 'test-results/bot-detailed/05-computer-response-1.png', fullPage: true });
60+
console.log('✓ Computer responded\n');
61+
62+
// MOVE 2: Player moves Nf3
63+
console.log('Move 2a: Player selecting g1 knight...');
64+
await page.locator('.chessboard-grid-cell[data-row="1"][data-col="7"]').click();
65+
await page.waitForTimeout(300);
66+
67+
console.log('Move 2b: Player moving to f3...');
68+
await page.locator('.chessboard-grid-cell[data-row="3"][data-col="6"]').click();
69+
await page.waitForTimeout(500);
70+
71+
// Screenshot 6: After player's Nf3 move
72+
await page.screenshot({ path: 'test-results/bot-detailed/06-player-Nf3.png', fullPage: true });
73+
console.log('✓ Player moved: Ng1-f3');
74+
75+
// Verify f3 has white knight
76+
square = page.locator('.chessboard-grid-cell[data-row="3"][data-col="6"]');
77+
classes = await square.getAttribute('class');
78+
expect(classes).toContain('chess-knight-white');
79+
80+
// Wait for computer to respond
81+
console.log('⏳ Computer is thinking...');
82+
await page.waitForTimeout(2000);
83+
84+
// Screenshot 7: After computer's second response
85+
await page.screenshot({ path: 'test-results/bot-detailed/07-computer-response-2.png', fullPage: true });
86+
console.log('✓ Computer responded\n');
87+
88+
// MOVE 3: Player moves d4
89+
console.log('Move 3a: Player selecting d2 pawn...');
90+
await page.locator('.chessboard-grid-cell[data-row="2"][data-col="4"]').click();
91+
await page.waitForTimeout(300);
92+
93+
console.log('Move 3b: Player moving to d4...');
94+
await page.locator('.chessboard-grid-cell[data-row="4"][data-col="4"]').click();
95+
await page.waitForTimeout(500);
96+
97+
// Screenshot 8: After player's d4 move
98+
await page.screenshot({ path: 'test-results/bot-detailed/08-player-d4.png', fullPage: true });
99+
console.log('✓ Player moved: d2-d4');
100+
101+
// Verify d4 has white pawn
102+
square = page.locator('.chessboard-grid-cell[data-row="4"][data-col="4"]');
103+
classes = await square.getAttribute('class');
104+
expect(classes).toContain('chess-pawn-white');
105+
106+
// Wait for computer to respond
107+
console.log('⏳ Computer is thinking...');
108+
await page.waitForTimeout(2000);
109+
110+
// Screenshot 9: After computer's third response
111+
await page.screenshot({ path: 'test-results/bot-detailed/09-computer-response-3.png', fullPage: true });
112+
console.log('✓ Computer responded\n');
113+
114+
// Final screenshot
115+
await page.waitForTimeout(500);
116+
await page.screenshot({ path: 'test-results/bot-detailed/10-final-position.png', fullPage: true });
117+
118+
console.log('✅ Bot mode test complete!');
119+
console.log('📸 Generated 10 screenshots showing:');
120+
console.log(' - Initial state & bot mode enabled');
121+
console.log(' - 3 player moves with visible piece changes');
122+
console.log(' - 3 computer responses with visible piece changes');
123+
console.log(' - Final game state');
124+
});
125+
});

0 commit comments

Comments
 (0)