feat(thressgame-coverage): Wave 15 (e2e for 5 parity rules + lift T68/3 parry)

Closes 5 of 5 unit-only parity rules with real Playwright validation:

- T83/all_on_red: probabilistic on-turn-start arm seeds BlockAllExceptKing (verified via UI move attempt + restoration)
- T83/ice_physics: SlideMustBeMaxDistance forces sliders to max-distance ray step (verified via legal-move highlight + drag rejection)
- T68/3 parry (lifted from .fixme): capture triggers RPS → defender wins → cancel-capture restores defender + reverts attacker
- T84/religious_conversion: bishop move converts adjacent enemy non-king pieces (verified via data-piece color flip)
- T84/kamikaze: capture triggers AOE destroying adjacent non-king; king immune (verified via DOM + RNG seed)

Helper: .sisyphus/scripts/run-pw.sh — nohup-based Playwright runner with done-marker poll. Avoids 30min agent timeout when running long e2e suites.

Tests: 2865 -> 2866 (+1 unit). E2E: 8/8 pass (was 3 active + 1 fixme; now 8 active + 0 fixme). bun run check exit 0.
This commit is contained in:
Joey Yakimowich-Payne 2026-04-26 18:06:05 -06:00
commit 4c25277449
No known key found for this signature in database
14 changed files with 2822 additions and 79 deletions

25
.sisyphus/scripts/run-pw.sh Executable file
View file

@ -0,0 +1,25 @@
#!/usr/bin/env bash
# run-pw.sh — run Playwright tests via nohup; poll output file
# Usage:
# ./run-pw.sh <output-file> <playwright-args>
# Example:
# ./run-pw.sh /tmp/pw-t83.log packages/chess/e2e/request-choice.spec.ts --reporter=list
#
# Then poll: while [[ ! -f /tmp/pw-t83.log.done ]]; do sleep 5; done; cat /tmp/pw-t83.log
set -uo pipefail
OUTFILE="${1:?need output file path}"
shift
# Spawn detached; touch DONE marker when complete (success or failure)
nohup bash -c "
cd /home/joey/Projects/rules
export CI=true GIT_TERMINAL_PROMPT=0 GIT_PAGER=cat PAGER=cat
bunx playwright test $* > '$OUTFILE' 2>&1
echo \"EXIT_CODE=\$?\" >> '$OUTFILE'
touch '$OUTFILE.done'
" >/dev/null 2>&1 &
disown
PID=$!
echo "Spawned pw run (pid=$PID); output -> $OUTFILE; done-marker -> $OUTFILE.done"