e2e checks follow the new theme instead of fixed sizes (#202)
game-maker / gate (push) Successful in 2m38s
game-maker / suite (push) Successful in 8m31s

The suite job for 0d20776 died in module 06. The new font and theme
moved the layout, and three checks relied on the old one.

- 06: the ranking step right-clicked the spot where step 6d had just
  dropped a Log node. Whether that click hits the node depends on how
  the layout snaps it. It now asks for a fresh empty spot.
- 14 and 27 expected a shut panel to keep 30 px. The header is
  Theme.rowHeight + 4, now 26. A new hook __gm.panelHeader hands the
  checks the real height, so the next theme change does not break
  them again.

Tests:
- ./check.sh: 141 files, 2080 tests, exit 0
- Local full run before the fix: 06 passed with the new spot, only the
  three header checks in 14 and 27 failed.
- GM_STEPS=1-14,27 after the fix: ALL PASSED, 457 checks
- No new checks, the total stays at 1286.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
adminandClaude Opus 5 committed 2026-09-22 18:29:10 +02:00
1 parent 0d207769b9
commit d9c71c2ce7
4 files changed
+12 -4

No files matched your search

+3
View File
@@ -14,6 +14,7 @@ import {
Button,
currentMenu,
isRendering,
Panel,
renderCount,
requestRender,
ui,
@@ -215,6 +216,8 @@ export function installDebugHook(app: Application, state: EditorState, editor: E
const widget = ui().focus.focused;
return widget ? rectOf(widget) : null;
},
/** What a panel dragged shut keeps: its header. Follows the theme, so checks need not. */
panelHeader: Panel.HEADER_HEIGHT,
inspectorInfo: () => inspector.debugInfo(),
textColor,
overlayTexts,
+4 -1
View File
@@ -128,7 +128,10 @@ export async function graph(t) {
// comes before one that merely mentions it in its description. "variable" used to hand
// Enter the first row alphabetically, which was `Run behavior`.
const beforeRank = await graphCounts();
await click(bare.x, bare.y, 'right');
// A fresh spot: the Log node from 6d now sits where `bare` pointed, and whether a click there
// hits it depends on how the layout snaps the node, not on anything this step tests.
const bareRank = await json('__gm.graph.emptySpot()');
await click(bareRank.x, bareRank.y, 'right');
await typeText('variable');
const ranked = await json('__gm.graph.paletteRows()');
const hits = (row) => `${row.label} ${row.type}`.toLowerCase().includes('variable');
+2 -1
View File
@@ -181,9 +181,10 @@ export async function overflow(t) {
);
await drag(lower.splitter.x, lower.splitter.y, lower.splitter.x, lower.splitter.y - 2000, { steps: 10 });
const shut = await column();
const header = await json('__gm.panelHeader');
check(
'dragged all the way up the asset panel stops at its header',
near(shut.assets.h, 30) && shut.objects.y > shut.assets.y,
near(shut.assets.h, header) && shut.objects.y > shut.assets.y,
JSON.stringify(shut),
);
await drag(shut.splitter.x, shut.splitter.y, shut.splitter.x, start.splitter.y, { steps: 10 });
+3 -2
View File
@@ -168,9 +168,10 @@ export async function consolePanel(t) {
const bar2 = await json('__gm.console.splitterAt()');
await drag(bar2.x, bar2.y, bar2.x, bar2.y + 400, { steps: 10 });
const shut = await height();
check('dragged shut it stops at its own header instead of vanishing', shut === 30, shut);
const header = await json('__gm.panelHeader');
check('dragged shut it stops at its own header instead of vanishing', shut === header, { shut, header });
const bar3 = await json('__gm.console.splitterAt()');
await drag(bar3.x, bar3.y, bar3.x, bar3.y - (start - 30), { steps: 8 });
await drag(bar3.x, bar3.y, bar3.x, bar3.y - (start - header), { steps: 8 });
check('and it comes back to the height it started at', (await height()) === start, await height());
const left = await rig.remove();