[feat] 24-b r1: the game-football e2e suite (real scene + real zip, two peers + late joiner) - #226
Merged
Merged
Conversation
… real zip - tests/e2e/game-football.test.cjs: loads games/football/scene.tpscene from the scenes FEED (SCENES_BASE, tag v2; FOOTBALL_TPSCENE or a sibling scenes checkout as fallbacks) and installs the REAL football.zip (FOOTBALL_ZIP, a packed sibling modules checkout, or the modules CDN) on two peers plus a late joiner. Skip-never-fail: an unreachable scene or zip prints the reason and exits green. - covers the modules test-flight's cases on the file: the world and its physics block, joining through a real HUD button click AND the physical button's click path, Start -> the playing HUD, the P menu (open / Resume), B's hit -> lastTouch on both + A's hit log, a blue goal credited to B's own row only, lamps + DOM HUD score, an own goal, own goals ignored, duel refusing a second red, the late joiner mid-match (score, slots, playing HUD via showWhile, its own live knock), time mode ending the match for all three, the over screen, the saved log, New match back to menu. - game-shell transitions asserted on the TRIGGER LOG (evstart / evover / evnew stamps), never on a perRound flowValue. - counterfactuals: an untouched ball into the red gate scores for blue and credits NOBODY (4.12/4.13, in-suite); C with remoteSimulating cleared has a dead probe (5.8, in-suite, restored); the handshake `simulate` push disabled in peerHandler -> 5.3 and 5.8 RED (C is never told, and in fact starts its own second sim), restored -> green. - FINDINGS recorded, not fixed (outside this lane): (1) a DUAL-SIMULATOR race - two Play presses inside the sim start-up window both pass maybeSimOnPlay's guard, both peers simulate, and the ball is fought over forever (a parked ball snapped back under a permanent `hold: external`, no goal could score); the suite enters Play in order and asserts 2.2b. (2) the template's P pause menu is session-wide (the keypress pulse replicates), asserted as-is in 3.10. - suite: 102 PASS / 0 FAIL in 71s. held suites at base: game-stars-room 36, game-towers 20, knock-node 50, knock-physics 76 + its base red 2.14 (no core code changed). - svelte-check 341 errors / 47 warnings, list identical to base; build green. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Lane 29-football: the 24-B remainders (R1 → R2 → R3).
What landed
2be54c3:tests/e2e/game-football.test.cjs. It loads the realgames/football/scene.tpscenefrom the scenes feed (SCENES_BASE@v2) and installs the realfootball.zipon two peers plus a late joiner. If the scene or the zip can't be reached, the suite skips with the reason printed; it never fails on the network. It covers the modules test-flight's cases, the HUD screens (menu, playing, pause, over) and the P menu. Game-shell transitions are asserted on the trigger log, never on a perRound flowValue.remoteSimulatingcleared gets a dead knock probe (in-suite, then restored).simulatepush disabled in peerHandler, checks 5.3 and 5.8 go red; restored, they pass.gameShellHud({...})extraction and authored Towers and Stars Room before and after it (--only towers,stars-room --out .d1/{before,after}, thennode scripts/compare-authored.cjs .d1/before .d1/after):w400 → 380).hud.js→football.def.json), so a core helper can't produce it.Suites
No core code changed, so the held suites stay at their base counts. svelte-check is 341 errors / 47 warnings with the same list as the base, and the build passes.
Findings (core, not fixed here)
maybeSimOnPlay's "is a sim already running?" guard before the other'ssimulatemessage lands, so both simulate. After B's hit, B sent the ball about 74moves in 2 s; on A the ball then sat under a permanenthold: external,applyThrowsnapped back, and no goal could score. The suite enters Play in order and asserts check 2.2b (B does not start a second simulation). This needs a ticket: a peer that receivessimulatewhile it is simulating should yield by a deterministic rule.Owed
🤖 Generated with Claude Code