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

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)

  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 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