Four end-to-end tests against two parallel RawSocketIoTestClients: handshake to AfterReady on both sides with per-perspective Matched; TurnEnd broadcast to both sides + Judge; A's PlayActions forwarded to B; Retire flipped to Lose-for-sender, Win-for-other; A's abrupt WS close cascades to BattleFinish(Win) for B with PendingBattle eviction; waiting-room timeout closes the first arriver's WS (fallback long-wait path — the 60s default is left in place; TestServer-side WS close is observed via ReceiveAsync returning Close or throwing). Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
24 KiB
24 KiB