Restructured project from nested workspace pattern to flat single-repo layout. This eliminates redundant nesting and consolidates all project files under version control. ## Migration Summary **Before:** ``` alex/ (workspace, not versioned) ├── chess-game/ (git repo) │ ├── js/, css/, tests/ │ └── index.html └── docs/ (planning, not versioned) ``` **After:** ``` alex/ (git repo, everything versioned) ├── js/, css/, tests/ ├── index.html ├── docs/ (project documentation) ├── planning/ (historical planning docs) ├── .gitea/ (CI/CD) └── CLAUDE.md (configuration) ``` ## Changes Made ### Structure Consolidation - Moved all chess-game/ contents to root level - Removed redundant chess-game/ subdirectory - Flattened directory structure (eliminated one nesting level) ### Documentation Organization - Moved chess-game/docs/ → docs/ (project documentation) - Moved alex/docs/ → planning/ (historical planning documents) - Added CLAUDE.md (workspace configuration) - Added IMPLEMENTATION_PROMPT.md (original project prompt) ### Version Control Improvements - All project files now under version control - Planning documents preserved in planning/ folder - Merged .gitignore files (workspace + project) - Added .claude/ agent configurations ### File Updates - Updated .gitignore to include both workspace and project excludes - Moved README.md to root level - All import paths remain functional (relative paths unchanged) ## Benefits ✅ **Simpler Structure** - One level of nesting removed ✅ **Complete Versioning** - All documentation now in git ✅ **Standard Layout** - Matches open-source project conventions ✅ **Easier Navigation** - Direct access to all project files ✅ **CI/CD Compatible** - All workflows still functional ## Technical Validation - ✅ Node.js environment verified - ✅ Dependencies installed successfully - ✅ Dev server starts and responds - ✅ All core files present and accessible - ✅ Git repository functional ## Files Preserved **Implementation Files:** - js/ (3,517 lines of code) - css/ (4 stylesheets) - tests/ (87 test cases) - index.html - package.json **CI/CD Pipeline:** - .gitea/workflows/ci.yml - .gitea/workflows/release.yml **Documentation:** - docs/ (12+ documentation files) - planning/ (historical planning materials) - README.md **Configuration:** - jest.config.js, babel.config.cjs, playwright.config.js - .gitignore (merged) - CLAUDE.md 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
7.3 KiB
7.3 KiB
Chess Game Testing Strategy
Overview
This document outlines the comprehensive testing strategy for the HTML chess game implementation. The strategy follows a test pyramid approach, ensuring robust quality assurance at multiple levels.
Testing Philosophy
- Test-Driven Development (TDD): Write tests before implementation
- Continuous Integration: Automated test execution on every commit
- Quality Gates: Minimum coverage and performance thresholds
- Shift-Left Testing: Catch defects early in development
Testing Pyramid
/\
/E2E\ <- 10% (Critical user journeys)
/------\
/Integr.\ <- 20% (Component interactions)
/----------\
/ Unit \ <- 70% (Individual functions/components)
/--------------\
1. Unit Tests (70% of test suite)
Scope: Individual functions, classes, and components in isolation
Coverage Areas:
- Chess logic (piece movements, rules validation)
- Game state management
- UI component rendering
- Utility functions
- Helper methods
Tools:
- Jest for JavaScript testing
- JSDOM for DOM manipulation testing
- Mock objects for dependencies
Execution:
- Run on every file save (watch mode)
- Must pass before commit (pre-commit hook)
- Target: <50ms per test
2. Integration Tests (20% of test suite)
Scope: Multiple components working together
Coverage Areas:
- Board + pieces interaction
- Game engine + UI synchronization
- Move validation + state updates
- Event handling flows
- Data persistence + retrieval
Tools:
- Jest with integration test configuration
- Testing Library for component integration
- LocalStorage mocking
Execution:
- Run before push (pre-push hook)
- Target: <200ms per test
3. End-to-End Tests (10% of test suite)
Scope: Complete user workflows in real browser
Coverage Areas:
- Full game scenarios (opening to checkmate)
- User interactions (drag-drop, click-to-move)
- Visual feedback and animations
- Save/load game functionality
- Error handling and edge cases
Tools:
- Playwright for cross-browser testing
- Visual regression with Percy or Chromatic
- Accessibility testing with axe-core
Execution:
- Run in CI/CD pipeline
- Nightly runs for full browser matrix
- Target: <5s per test
Test Categories
A. Functional Testing
Chess Rules Validation
- Movement Rules: Each piece type follows correct patterns
- Capture Mechanics: Pieces capture opponent pieces correctly
- Special Moves: Castling, en passant, pawn promotion
- Game State: Check, checkmate, stalemate detection
- Illegal Moves: System prevents invalid moves
Game Flow
- Turn Management: Alternating white/black turns
- Move History: Track and display all moves
- Undo/Redo: Revert and reapply moves
- Time Controls: Clock management (if implemented)
- Game Termination: Resignation, timeout, draw offers
B. Non-Functional Testing
Performance
- Initial Load: <2 seconds to interactive
- Move Calculation: <100ms for legal move generation
- Rendering: 60 FPS during animations
- Memory: No leaks over extended gameplay
Usability
- Drag-and-Drop: Smooth piece movement
- Visual Feedback: Highlight valid moves, check state
- Responsive Design: Mobile, tablet, desktop layouts
- Keyboard Navigation: Accessible controls
Accessibility
- WCAG 2.1 AA: Screen reader support
- Keyboard Controls: Full functionality without mouse
- Color Contrast: Minimum 4.5:1 ratio
- Focus Management: Clear visual indicators
C. Cross-Browser Testing
Target Browsers:
- Chrome (latest, -1, -2)
- Firefox (latest, -1)
- Safari (latest, -1)
- Edge (latest)
- Mobile: iOS Safari, Chrome Android
Test Matrix:
- Desktop: Windows 10/11, macOS, Linux
- Mobile: iOS 15+, Android 10+
Test Data Management
Static Test Data
- Famous Positions: Fool's Mate, Scholar's Mate, Opera Game
- Edge Cases: Three-fold repetition, 50-move rule
- Endgames: King+Rook vs King, King+Queen vs King
Dynamic Test Data
- Generated Positions: Random legal board states
- PGN Files: Real games for replay testing
- FEN Strings: Specific test scenarios
Test Data Location
/docs/testing/test-data/positions/- FEN strings/docs/testing/test-data/games/- PGN files/docs/testing/test-data/scenarios/- JSON test cases
Quality Gates
Code Coverage Thresholds
{
"statements": 85,
"branches": 80,
"functions": 85,
"lines": 85
}
Performance Budgets
- Initial bundle size: <150KB (gzipped)
- Move calculation: <100ms
- UI update: <16ms (60 FPS)
- Memory usage: <50MB
Accessibility Standards
- WCAG 2.1 Level AA compliance
- No critical axe-core violations
- Keyboard navigation complete
CI/CD Integration
Pre-Commit
npm run lint
npm run test:unit
npm run typecheck
Pre-Push
npm run test:integration
npm run test:coverage
CI Pipeline
- Install dependencies
- Run linters
- Run unit tests
- Run integration tests
- Generate coverage report
- Run E2E tests (Chrome, Firefox)
- Visual regression tests
- Accessibility scan
- Performance audit
Nightly Build
- Full browser matrix E2E tests
- Extended performance testing
- Security vulnerability scan
- Dependency updates check
Test Maintenance
Test Review Criteria
- Each test has clear description
- Tests are independent and isolated
- No hardcoded values (use constants/fixtures)
- Proper setup and teardown
- Meaningful assertions
Flaky Test Management
- Retry failed tests (max 2 retries)
- Flag consistently flaky tests
- Weekly review and fix flaky tests
- Never skip tests permanently
Test Documentation
- Document complex test scenarios
- Maintain test data catalog
- Keep testing tools up to date
- Share testing best practices
Metrics and Reporting
Key Metrics
- Test Coverage: Overall and per-component
- Test Execution Time: Track trends
- Pass/Fail Rate: Monitor stability
- Bug Escape Rate: Production issues found
Dashboards
- Real-time test results in CI
- Coverage trends over time
- Performance benchmarks history
- Accessibility compliance score
Risk-Based Testing
Critical Paths (High Priority)
- Legal move validation
- Checkmate detection
- Game state persistence
- User input handling
Medium Priority
- Move history display
- Undo/redo functionality
- Visual animations
- Board rotation
Low Priority
- Theme customization
- Sound effects
- Move suggestions
- Game analysis
Testing Schedule
Sprint Activities
- Day 1-2: Write unit tests for new features
- Day 3-5: Implement features (TDD)
- Day 6-7: Integration testing
- Day 8: E2E test updates
- Day 9: Bug fixing
- Day 10: Release candidate testing
Tools and Frameworks
See testing-tools.md for detailed setup instructions.
Success Criteria
A feature is considered "done" when:
- All tests pass (unit, integration, E2E)
- Code coverage meets thresholds
- Performance budgets are met
- Accessibility scan passes
- Code review approved
- Documentation updated