d45b7cb82b
solitaire_server/e2e/: - smoke.spec.js: verifies /play-classic loads, exposes window.__FERROUS_DEBUG__ bridge, keyboard parity (Space=draw, U=undo), debug failure report, and replay payload builder exports schema-v2 moves. - gameplay_review.spec.js: HUD/controls render check, stock-click + undo player flow, draw-mode toggle, autonomous play invariant batch, and cycle-detection regression guard. - cycle_metrics.js: headless cycle-rate analysis tool; run via `npm run review:cycles` with configurable policy, game count, and thresholds. Regression gate baked into package.json scripts. - playwright.config.js: targets the local server at http://localhost:8080. - package.json / package-lock.json: @playwright/test 1.60.0. .gitea/workflows/web-e2e.yml: - Runs on pushes to solitaire_server/, solitaire_wasm/, solitaire_core/, or Cargo changes. Starts the server binary, waits for /health, runs the full Playwright suite, uploads test-results/ on failure. docs/testing-architecture.md: documents the three-tier test strategy (unit → Playwright smoke → cycle regression) and the __FERROUS_DEBUG__ bridge contract. scripts/update_quaternions_deps.sh: helper to bump the Quaternions registry deps (klondike, card_game) by version and run the full safety gate including deterministic replay checks. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
50 lines
1.2 KiB
YAML
50 lines
1.2 KiB
YAML
name: Web E2E
|
|
|
|
on:
|
|
push:
|
|
branches: [master]
|
|
paths:
|
|
- 'solitaire_server/web/**'
|
|
- 'solitaire_server/src/**'
|
|
- 'solitaire_server/e2e/**'
|
|
- 'solitaire_wasm/**'
|
|
- 'solitaire_core/**'
|
|
- 'Cargo.toml'
|
|
- 'Cargo.lock'
|
|
- '.gitea/workflows/web-e2e.yml'
|
|
workflow_dispatch:
|
|
|
|
jobs:
|
|
web-e2e:
|
|
runs-on: ubuntu-latest
|
|
|
|
steps:
|
|
- name: Checkout
|
|
uses: actions/checkout@v4
|
|
|
|
- name: Install Rust
|
|
uses: dtolnay/rust-toolchain@stable
|
|
|
|
- name: Set up Node.js
|
|
uses: actions/setup-node@v4
|
|
with:
|
|
node-version: '20'
|
|
cache: 'npm'
|
|
cache-dependency-path: solitaire_server/e2e/package-lock.json
|
|
|
|
- name: Install e2e dependencies
|
|
working-directory: solitaire_server/e2e
|
|
run: npm ci
|
|
|
|
- name: Install Playwright browser
|
|
working-directory: solitaire_server/e2e
|
|
run: npx playwright install --with-deps chromium
|
|
|
|
- name: Run web e2e tests
|
|
working-directory: solitaire_server/e2e
|
|
run: npm test
|
|
|
|
- name: Run cycle regression gate
|
|
working-directory: solitaire_server/e2e
|
|
run: npm run review:cycles:regression
|