diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index a43e8ef53..00c580d7e 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -377,8 +377,11 @@ jobs: fi case "$GAMES" in none) - test "$SMOKE" = "skipped" - echo "skipped: smoke and frame gates ($REASON)" + # A path the map calls no game surface can still trip a smoke job (a script under + # scripts/ is in the heavy set), and a smoke that ran and passed is more evidence + # than a skip, not a contradiction. Only a failure is wrong here. + [ "$SMOKE" = "skipped" ] || [ "$SMOKE" = "success" ] + echo "ran: smoke and frame gates ($REASON)" ;; surface) test "$SMOKE" = "success" diff --git a/changes/lane-credits-pane.md b/changes/lane-credits-pane.md new file mode 100644 index 000000000..218b0d958 --- /dev/null +++ b/changes/lane-credits-pane.md @@ -0,0 +1,7 @@ +### Fixed + +- `check-game-front-end` counts `CreditsPane` as a game's credits surface. 0.38.4's games pin reported `Games/deepward - no credits` for a game that renders the credits in the `GameMenu` the engine ships (`CreditsPane` in a detail slot), because the pattern only knew `CreditsScreen`, `CreditsPanel` and the generated asset credits. Harbor Heat's baselined `#credits` entry no longer applies at the current pin, so the baseline shrinks from 8 entries to 7; Brightway Park's stays until the games pin that ships its menu. + +### Fixed (CI) + +- The ci aggregate job accepts a smoke run that actually ran and passed when the path map says no game surface changed. A script under scripts/** is in the heavy set but not in the game map, so GAMES=none with SMOKE=success is a real combination; the job asserted on skipped and failed an otherwise green run, which is what blocked this PR. diff --git a/scripts/game-front-end-baseline.json b/scripts/game-front-end-baseline.json index 23e687fc4..51b95ba5e 100644 --- a/scripts/game-front-end-baseline.json +++ b/scripts/game-front-end-baseline.json @@ -2,7 +2,6 @@ "brightway-park#credits", "brightway-park#settings", "ember-command#settings", - "harbor-heat#credits", "harbor-heat#settings", "odd-orbit#settings", "scrap-signal#credits", diff --git a/scripts/gameFrontEnd.test.ts b/scripts/gameFrontEnd.test.ts index 6a209565d..467e4d86b 100644 --- a/scripts/gameFrontEnd.test.ts +++ b/scripts/gameFrontEnd.test.ts @@ -46,6 +46,15 @@ describe("findFrontEndGaps", () => { ).toEqual(["probe#settings"]); }); + test("a GameMenu credits pane clears it - the menu the engine ships carries credits", () => { + expect( + scan({ + "Games/probe/src/ui/menu/ProbeMenu.tsx": + 'import { CreditsPane } from "@jgengine/react/gameMenuSaves";\nconst verbs = [{ id: "credits", label: "Credits" }];\n', + }), + ).toEqual(["probe#settings"]); + }); + test("generated asset credits also clear it", () => { expect( scan({ "Games/probe/src/ui.tsx": 'import { creditsForSourceIds } from "@jgengine/assets/credits";\n' }), diff --git a/scripts/gameFrontEnd.ts b/scripts/gameFrontEnd.ts index 59a14e769..f4fa6da1c 100644 --- a/scripts/gameFrontEnd.ts +++ b/scripts/gameFrontEnd.ts @@ -19,8 +19,10 @@ const REQUIREMENTS = [ }, { id: "credits", - pattern: /CreditsScreen|CreditsPanel|creditsFor(?:Source|Asset)Ids|creditsForSources|