chess/planning/testing/testing-strategy.md
Christoph Wagner 5ad0700b41 refactor: Consolidate repository structure - flatten from workspace pattern
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>
2025-11-23 10:05:26 +01:00

298 lines
7.3 KiB
Markdown

# 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
```json
{
"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
```bash
npm run lint
npm run test:unit
npm run typecheck
```
### Pre-Push
```bash
npm run test:integration
npm run test:coverage
```
### CI Pipeline
```yaml
- 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)
1. Legal move validation
2. Checkmate detection
3. Game state persistence
4. User input handling
### Medium Priority
1. Move history display
2. Undo/redo functionality
3. Visual animations
4. Board rotation
### Low Priority
1. Theme customization
2. Sound effects
3. Move suggestions
4. 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](./testing-tools.md) for detailed setup instructions.
## Success Criteria
A feature is considered "done" when:
1. All tests pass (unit, integration, E2E)
2. Code coverage meets thresholds
3. Performance budgets are met
4. Accessibility scan passes
5. Code review approved
6. Documentation updated
## References
- [Test Specifications](./test-specifications.md)
- [Quality Criteria](./quality-criteria.md)
- [Testing Tools](./testing-tools.md)
- [Test Data Catalog](./test-data/)