All checks were successful
CI Pipeline / Code Linting (pull_request) Successful in 15s
CI Pipeline / Run Unit Tests (pull_request) Successful in 20s
CI Pipeline / Run E2E Tests (Playwright) (pull_request) Successful in 47s
CI Pipeline / Build Verification (pull_request) Successful in 13s
CI Pipeline / Generate Quality Report (pull_request) Successful in 19s
Add comprehensive Playwright integration for end-to-end UI testing with
full CI/CD pipeline support.
Changes:
---------
1. **Playwright Installation & Configuration**
- Installed @playwright/test and http-server
- Created playwright.config.js with optimized settings
- Configured to use Chromium browser in headless mode
- Auto-starts local web server on port 8080 for testing
2. **E2E Test Suite**
Created tests/e2e/ directory with comprehensive tests:
- **status-message.spec.js** (5 tests)
✓ Status message element exists in DOM
✓ Status message is hidden by default
✓ New game shows status message
✓ Status message has correct CSS classes
- **layout-stability.spec.js** (5 tests)
✓ Chess board has fixed 600x600px dimensions
✓ Board squares are exactly 75px × 75px
✓ Column widths remain stable when pieces are captured
✓ Row heights remain stable when highlighting moves
✓ Last-move highlighting does not change layout
3. **Package.json Scripts**
- test: Runs both unit and E2E tests
- test:unit: Jest unit tests only
- test:e2e: Playwright E2E tests
- test:e2e:headed: Run with browser visible
- test:e2e:ui: Interactive UI mode
4. **CI Pipeline Updates (.gitea/workflows/ci.yml)**
- Split test job into test-unit and test-e2e
- Added Playwright browser installation step
- Configured artifact upload for Playwright reports
- Updated job dependencies to include E2E tests
Test Results:
-------------
✅ 9/9 Playwright E2E tests passing
✅ 124/124 Jest unit tests passing
✅ Total: 133 tests passing
CI Configuration:
-----------------
- Runs Playwright in CI mode (retries: 2, workers: 1)
- Uses GitHub reporter for CI, list reporter for local
- Captures screenshots on failure
- Traces on first retry for debugging
- Artifacts retained for 30 days
Usage:
------
npm run test # All tests (unit + E2E)
npm run test:unit # Jest unit tests only
npm run test:e2e # Playwright E2E tests
npm run test:e2e:ui # Interactive UI mode
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
38 lines
1022 B
JSON
38 lines
1022 B
JSON
{
|
|
"name": "html-chess-game",
|
|
"version": "1.0.0",
|
|
"description": "A complete HTML chess game with vanilla JavaScript",
|
|
"type": "module",
|
|
"scripts": {
|
|
"dev": "npx http-server -p 8080 -o",
|
|
"test": "npm run test:unit && npm run test:e2e",
|
|
"test:unit": "jest",
|
|
"test:e2e": "playwright test",
|
|
"test:e2e:headed": "playwright test --headed",
|
|
"test:e2e:ui": "playwright test --ui",
|
|
"test:watch": "jest --watch",
|
|
"test:coverage": "jest --coverage",
|
|
"lint": "eslint js/**/*.js",
|
|
"format": "prettier --write \"**/*.{js,css,html}\""
|
|
},
|
|
"keywords": [
|
|
"chess",
|
|
"game",
|
|
"javascript",
|
|
"html5"
|
|
],
|
|
"author": "Implementation Team",
|
|
"license": "MIT",
|
|
"devDependencies": {
|
|
"@babel/preset-env": "^7.28.5",
|
|
"@playwright/test": "^1.56.1",
|
|
"@testing-library/jest-dom": "^6.9.1",
|
|
"babel-jest": "^30.2.0",
|
|
"eslint": "^8.56.0",
|
|
"http-server": "^14.1.1",
|
|
"jest": "^29.7.0",
|
|
"jest-environment-jsdom": "^30.2.0",
|
|
"prettier": "^3.1.1"
|
|
}
|
|
}
|