@bitmagic/cli 0.1.83-dev.1 → 0.1.83-dev.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +69 -0
- package/assets/skills/publishing-to-steam/SKILL.md +218 -0
- package/dist/assets/vxl-summary.d.ts +6 -20
- package/dist/assets/vxl-summary.js +9 -100
- package/dist/assets/vxl-summary.js.map +1 -1
- package/dist/cli.d.ts +1 -0
- package/dist/cli.js +2 -0
- package/dist/cli.js.map +1 -1
- package/dist/commands/check.js +5 -0
- package/dist/commands/check.js.map +1 -1
- package/dist/commands/forge.js +1 -1
- package/dist/commands/forge.js.map +1 -1
- package/dist/commands/ios.js +88 -136
- package/dist/commands/ios.js.map +1 -1
- package/dist/commands/steam-build.d.ts +67 -0
- package/dist/commands/steam-build.js +286 -0
- package/dist/commands/steam-build.js.map +1 -0
- package/dist/commands/steam-portal.d.ts +1 -0
- package/dist/commands/steam-portal.js +319 -0
- package/dist/commands/steam-portal.js.map +1 -0
- package/dist/commands/steam-upload.d.ts +37 -0
- package/dist/commands/steam-upload.js +174 -0
- package/dist/commands/steam-upload.js.map +1 -0
- package/dist/commands/steam.d.ts +1 -0
- package/dist/commands/steam.js +504 -0
- package/dist/commands/steam.js.map +1 -0
- package/dist/commands/verify.js +6 -0
- package/dist/commands/verify.js.map +1 -1
- package/dist/editor/asset-viewer.js +5 -4
- package/dist/editor/asset-viewer.js.map +1 -1
- package/dist/editor/server.js +1 -1
- package/dist/editor/server.js.map +1 -1
- package/dist/editor/shell-page.js +3 -3
- package/dist/forge/browser-host.d.ts +1 -1
- package/dist/forge/browser-host.js +1 -1
- package/dist/forge/browser-host.js.map +1 -1
- package/dist/ios/native-overrides.d.ts +27 -0
- package/dist/ios/native-overrides.js +87 -0
- package/dist/ios/native-overrides.js.map +1 -0
- package/dist/ios/record-validate.d.ts +1 -33
- package/dist/ios/record-validate.js +2 -100
- package/dist/ios/record-validate.js.map +1 -1
- package/dist/ios/store-bridge.d.ts +26 -0
- package/dist/ios/store-bridge.js +224 -0
- package/dist/ios/store-bridge.js.map +1 -0
- package/dist/ios/storekit-config.d.ts +15 -0
- package/dist/ios/storekit-config.js +106 -0
- package/dist/ios/storekit-config.js.map +1 -0
- package/dist/ios/xcode-template.d.ts +12 -3
- package/dist/ios/xcode-template.js +158 -27
- package/dist/ios/xcode-template.js.map +1 -1
- package/dist/package/collect-urls.d.ts +1 -1
- package/dist/package/collect-urls.js +10 -2
- package/dist/package/collect-urls.js.map +1 -1
- package/dist/package/offline-payload.d.ts +35 -0
- package/dist/package/offline-payload.js +142 -0
- package/dist/package/offline-payload.js.map +1 -0
- package/dist/package/packaged-check.d.ts +39 -0
- package/dist/package/packaged-check.js +104 -0
- package/dist/package/packaged-check.js.map +1 -0
- package/dist/package/transform.d.ts +4 -4
- package/dist/package/transform.js +3 -3
- package/dist/project/published-three.d.ts +14 -0
- package/dist/project/published-three.js +91 -0
- package/dist/project/published-three.js.map +1 -0
- package/dist/publish/bundle.js +6 -0
- package/dist/publish/bundle.js.map +1 -1
- package/dist/scaffold/project-files.js +7 -4
- package/dist/scaffold/project-files.js.map +1 -1
- package/dist/scaffold/project.js +2 -0
- package/dist/scaffold/project.js.map +1 -1
- package/dist/scaffold/skill-files.js +3 -1
- package/dist/scaffold/skill-files.js.map +1 -1
- package/dist/scaffold/steam-skill-files.d.ts +2 -0
- package/dist/scaffold/steam-skill-files.js +7 -0
- package/dist/scaffold/steam-skill-files.js.map +1 -0
- package/dist/steam/art-generate.d.ts +55 -0
- package/dist/steam/art-generate.js +174 -0
- package/dist/steam/art-generate.js.map +1 -0
- package/dist/steam/art-render.d.ts +25 -0
- package/dist/steam/art-render.js +157 -0
- package/dist/steam/art-render.js.map +1 -0
- package/dist/steam/art-use.d.ts +20 -0
- package/dist/steam/art-use.js +84 -0
- package/dist/steam/art-use.js.map +1 -0
- package/dist/steam/art.d.ts +98 -0
- package/dist/steam/art.js +243 -0
- package/dist/steam/art.js.map +1 -0
- package/dist/steam/check.d.ts +21 -0
- package/dist/steam/check.js +113 -0
- package/dist/steam/check.js.map +1 -0
- package/dist/steam/config.d.ts +57 -0
- package/dist/steam/config.js +145 -0
- package/dist/steam/config.js.map +1 -0
- package/dist/steam/electron-cache.d.ts +11 -0
- package/dist/steam/electron-cache.js +105 -0
- package/dist/steam/electron-cache.js.map +1 -0
- package/dist/steam/fuses.d.ts +16 -0
- package/dist/steam/fuses.js +75 -0
- package/dist/steam/fuses.js.map +1 -0
- package/dist/steam/icon-files.d.ts +16 -0
- package/dist/steam/icon-files.js +70 -0
- package/dist/steam/icon-files.js.map +1 -0
- package/dist/steam/image-info.d.ts +16 -0
- package/dist/steam/image-info.js +89 -0
- package/dist/steam/image-info.js.map +1 -0
- package/dist/steam/launch-check.d.ts +12 -0
- package/dist/steam/launch-check.js +101 -0
- package/dist/steam/launch-check.js.map +1 -0
- package/dist/steam/media.d.ts +48 -0
- package/dist/steam/media.js +155 -0
- package/dist/steam/media.js.map +1 -0
- package/dist/steam/package-macos.d.ts +52 -0
- package/dist/steam/package-macos.js +268 -0
- package/dist/steam/package-macos.js.map +1 -0
- package/dist/steam/package-windows.d.ts +23 -0
- package/dist/steam/package-windows.js +83 -0
- package/dist/steam/package-windows.js.map +1 -0
- package/dist/steam/paths.d.ts +35 -0
- package/dist/steam/paths.js +44 -0
- package/dist/steam/paths.js.map +1 -0
- package/dist/steam/playtest-shots.d.ts +18 -0
- package/dist/steam/playtest-shots.js +83 -0
- package/dist/steam/playtest-shots.js.map +1 -0
- package/dist/steam/portal-recipes.d.ts +25 -0
- package/dist/steam/portal-recipes.js +61 -0
- package/dist/steam/portal-recipes.js.map +1 -0
- package/dist/steam/portal.d.ts +58 -0
- package/dist/steam/portal.js +340 -0
- package/dist/steam/portal.js.map +1 -0
- package/dist/steam/raster.d.ts +58 -0
- package/dist/steam/raster.js +285 -0
- package/dist/steam/raster.js.map +1 -0
- package/dist/steam/shell-files.d.ts +17 -0
- package/dist/steam/shell-files.js +268 -0
- package/dist/steam/shell-files.js.map +1 -0
- package/dist/steam/specs.d.ts +61 -0
- package/dist/steam/specs.js +103 -0
- package/dist/steam/specs.js.map +1 -0
- package/dist/steam/steampipe.d.ts +46 -0
- package/dist/steam/steampipe.js +170 -0
- package/dist/steam/steampipe.js.map +1 -0
- package/dist/steam/store-copy.d.ts +88 -0
- package/dist/steam/store-copy.js +214 -0
- package/dist/steam/store-copy.js.map +1 -0
- package/dist/steam/tags.d.ts +9 -0
- package/dist/steam/tags.js +52 -0
- package/dist/steam/tags.js.map +1 -0
- package/dist/steam/trailer.d.ts +34 -0
- package/dist/steam/trailer.js +141 -0
- package/dist/steam/trailer.js.map +1 -0
- package/dist/theme/kernel.d.ts +14 -0
- package/dist/theme/kernel.js +15 -0
- package/dist/theme/kernel.js.map +1 -0
- package/dist/theme/theme-io.js +11 -16
- package/dist/theme/theme-io.js.map +1 -1
- package/dist/vendor/hud-theme/catalog.js +71 -0
- package/dist/vendor/hud-theme/engine/hud/ThemeTokens.js +115 -0
- package/dist/{theme/theme-color-math.js → vendor/hud-theme/engine/hud/colorMath.js} +13 -14
- package/dist/vendor/hud-theme/engine/hud/decorations.js +179 -0
- package/dist/vendor/hud-theme/engine/hud/fonts.js +147 -0
- package/dist/vendor/hud-theme/engine/hud/presets.js +80 -0
- package/dist/vendor/hud-theme/engine/hud/resolveWorldTheme.js +66 -0
- package/dist/vendor/hud-theme/engine/hud/themes/bitmagic.js +29 -0
- package/dist/vendor/hud-theme/engine/hud/themes/nexus.js +69 -0
- package/dist/vendor/hud-theme/engine/hud/themes/racing.js +57 -0
- package/dist/vendor/hud-theme/engine/hud/themes/rift-raider.js +63 -0
- package/dist/vendor/hud-theme/engine/hud/themes/simulator.js +55 -0
- package/dist/vendor/hud-theme/engine/hud/themes/village-keep.js +108 -0
- package/dist/vendor/hud-theme/engine/hud/validateTheme.js +535 -0
- package/dist/vendor/hud-theme/index.js +26 -0
- package/dist/{theme/theme-merge.js → vendor/hud-theme/merge.js} +0 -1
- package/dist/{theme/theme-report.js → vendor/hud-theme/report.js} +8 -9
- package/dist/{theme/theme-stored.js → vendor/hud-theme/stored.js} +6 -9
- package/dist/{theme/theme-validate.js → vendor/hud-theme/validate-strict.js} +102 -164
- package/dist/verify/browser.d.ts +11 -0
- package/dist/verify/browser.js +222 -155
- package/dist/verify/browser.js.map +1 -1
- package/dist/verify/categories.d.ts +1 -1
- package/dist/verify/categories.js +1 -0
- package/dist/verify/categories.js.map +1 -1
- package/dist/verify/classify.d.ts +14 -2
- package/dist/verify/classify.js +23 -4
- package/dist/verify/classify.js.map +1 -1
- package/dist/verify/hud-theme.d.ts +19 -14
- package/dist/verify/hud-theme.js +23 -17
- package/dist/verify/hud-theme.js.map +1 -1
- package/dist/verify/mobile-parity.d.ts +1 -1
- package/dist/verify/mobile-parity.js +1 -1
- package/dist/verify/start.d.ts +3 -2
- package/dist/verify/start.js +1 -1
- package/dist/verify/start.js.map +1 -1
- package/package.json +8 -6
- package/dist/theme/hud-theme-catalog.d.ts +0 -235
- package/dist/theme/hud-theme-catalog.js +0 -389
- package/dist/theme/hud-theme-catalog.js.map +0 -1
- package/dist/theme/theme-color-math.d.ts +0 -21
- package/dist/theme/theme-color-math.js.map +0 -1
- package/dist/theme/theme-merge.d.ts +0 -36
- package/dist/theme/theme-merge.js.map +0 -1
- package/dist/theme/theme-report.d.ts +0 -28
- package/dist/theme/theme-report.js.map +0 -1
- package/dist/theme/theme-stored.d.ts +0 -21
- package/dist/theme/theme-stored.js.map +0 -1
- package/dist/theme/theme-validate.d.ts +0 -41
- package/dist/theme/theme-validate.js.map +0 -1
package/dist/verify/browser.js
CHANGED
|
@@ -2,7 +2,7 @@ import * as fs from 'fs';
|
|
|
2
2
|
import { browserGlArgs } from '../browser-gl.js';
|
|
3
3
|
import { CliError } from '../errors.js';
|
|
4
4
|
import { launchSystemChrome } from '../chrome-launch.js';
|
|
5
|
-
import {
|
|
5
|
+
import { isRespawnLine, } from './classify.js';
|
|
6
6
|
import { parseMobileParityGap } from './mobile-parity.js';
|
|
7
7
|
import { DEFAULT_SETTLE_CONFIG, SETTLE_POLL_MS, isFreefalling, settleVerdict, } from './settle.js';
|
|
8
8
|
import { deriveEventsObservation } from './events.js';
|
|
@@ -52,14 +52,6 @@ export class VerifyBrowserSession {
|
|
|
52
52
|
await this.browser.close();
|
|
53
53
|
}
|
|
54
54
|
async check(options) {
|
|
55
|
-
// Declared outside the try so the `finally` below can write whatever was captured even if the
|
|
56
|
-
// browser phase throws (e.g. page.goto timing out) — artifacts are the point of a failing run.
|
|
57
|
-
const consoleLines = [];
|
|
58
|
-
const pageErrors = [];
|
|
59
|
-
// Hoisted because both decide several branches below: `startInteraction` separates verify's
|
|
60
|
-
// questions from publish's smoke check, and `captureScreenshot` is what `--fast` turns off.
|
|
61
|
-
const { startInteraction } = options;
|
|
62
|
-
const captureScreenshot = options.captureScreenshot !== false;
|
|
63
55
|
const contextOptions = options.device ?? DESKTOP_CONTEXT_OPTIONS;
|
|
64
56
|
const context = await this.browser.newContext({
|
|
65
57
|
...contextOptions,
|
|
@@ -69,155 +61,183 @@ export class VerifyBrowserSession {
|
|
|
69
61
|
if (options.routes)
|
|
70
62
|
await options.routes(context);
|
|
71
63
|
const page = await context.newPage();
|
|
72
|
-
await
|
|
73
|
-
|
|
64
|
+
return await observeGamePage(page, options, contextOptions.viewport, (target) => target.goto(options.url, { waitUntil: 'load', timeout: 45_000 }));
|
|
65
|
+
}
|
|
66
|
+
finally {
|
|
67
|
+
await context.close();
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
/**
|
|
72
|
+
* One check on a page that already exists: arm the probes, `navigate` (a `goto` for verify, a
|
|
73
|
+
* `reload` for a packaged desktop app that loaded its own page before anything could attach),
|
|
74
|
+
* start the game the way a player does, settle, and observe. Split from
|
|
75
|
+
* {@link VerifyBrowserSession.check} so `bitmagic steam build` can hold the real Electron app to
|
|
76
|
+
* the same verdict a browser tab gets.
|
|
77
|
+
*/
|
|
78
|
+
export async function observeGamePage(page, options, viewport, navigate) {
|
|
79
|
+
// Declared outside the try so the `finally` below can write whatever was captured even if the
|
|
80
|
+
// browser phase throws (e.g. page.goto timing out) — artifacts are the point of a failing run.
|
|
81
|
+
const consoleLines = [];
|
|
82
|
+
const pageErrors = [];
|
|
83
|
+
// Hoisted because both decide several branches below: `startInteraction` separates verify's
|
|
84
|
+
// questions from publish's smoke check, and `captureScreenshot` is what `--fast` turns off.
|
|
85
|
+
const { startInteraction } = options;
|
|
86
|
+
const captureScreenshot = options.captureScreenshot !== false;
|
|
87
|
+
try {
|
|
88
|
+
await armContextLossProbe(page);
|
|
89
|
+
await armFrameCounter(page);
|
|
90
|
+
// A phone run strips what iPhone Safari lacks, which also disarms the lock; a desktop run
|
|
91
|
+
// only disarms it.
|
|
92
|
+
if (options.device?.isMobile === true)
|
|
93
|
+
await removeApisIphoneSafariLacks(page);
|
|
94
|
+
else
|
|
74
95
|
await disarmPointerLock(page);
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
if (captureScreenshot) {
|
|
85
|
-
try {
|
|
86
|
-
fs.writeFileSync(options.screenshotPath, await page.screenshot(SCREENSHOT_OPTIONS));
|
|
87
|
-
}
|
|
88
|
-
catch {
|
|
89
|
-
// Page may already be unusable (closed context, crashed renderer) — nothing to save.
|
|
90
|
-
}
|
|
91
|
-
}
|
|
92
|
-
const detail = error instanceof Error ? error.message : String(error);
|
|
93
|
-
throw new CliError(`The page never finished loading at ${options.url}: ${detail}`);
|
|
94
|
-
}
|
|
95
|
-
// Same probe either way; only the frame it runs in differs. A missing child frame leaves
|
|
96
|
-
// `target` null, which classifies as "no canvas" — correct, because a harness whose iframe
|
|
97
|
-
// never loaded (a download, a 404) is exactly the failure this mode exists to catch. A run
|
|
98
|
-
// that drives a start interaction needs the frame outright, so it fails loudly instead.
|
|
99
|
-
const frameUrlIncludes = options.probeFrameUrlIncludes;
|
|
100
|
-
const target = frameUrlIncludes === undefined
|
|
101
|
-
? page
|
|
102
|
-
: page.frames().find((frame) => frame.url().includes(frameUrlIncludes)) ?? null;
|
|
103
|
-
if (startInteraction !== undefined && target === null) {
|
|
104
|
-
throw new CliError('The game iframe did not load.');
|
|
105
|
-
}
|
|
106
|
-
// Interaction, settling and the menu probe drive the frame the game lives in; the page-level
|
|
107
|
-
// screenshot and frame counter stay on `page`.
|
|
108
|
-
const interactiveTarget = target ?? page;
|
|
109
|
-
const interaction = startInteraction === undefined
|
|
110
|
-
? null
|
|
111
|
-
: await performStartInteraction(interactiveTarget, consoleLines, startInteraction, options.device?.hasTouch === true);
|
|
112
|
-
// Verify settles adaptively — a game that provably reached stable gameplay is observed
|
|
113
|
-
// after a few seconds instead of the full fixed window, with `settleMs` as the hard cap.
|
|
114
|
-
// The smoke check keeps the fixed wait: its game lives in an iframe this probe does not
|
|
115
|
-
// reach, and its question ("does the published bundle come up") has no early exit.
|
|
116
|
-
let settle;
|
|
117
|
-
let settleSamples = [];
|
|
118
|
-
if (startInteraction === undefined) {
|
|
119
|
-
await page.waitForTimeout(options.settleMs);
|
|
120
|
-
}
|
|
121
|
-
else {
|
|
122
|
-
({ settle, samples: settleSamples } = await adaptiveSettle(interactiveTarget, consoleLines, options.settleMs));
|
|
123
|
-
}
|
|
124
|
-
if (options.afterSettle)
|
|
125
|
-
await options.afterSettle(interactiveTarget);
|
|
126
|
-
const canvas = target === null ? null : await target.evaluate(() => {
|
|
127
|
-
// This callback runs inside the browser Playwright drives, not in the CLI's Node process,
|
|
128
|
-
// so `document` is a real global there even though the CLI's eslint config declares no
|
|
129
|
-
// DOM globals for the process it actually lints.
|
|
130
|
-
// eslint-disable-next-line no-undef
|
|
131
|
-
const element = document.querySelector('#game-container canvas');
|
|
132
|
-
if (!(element instanceof HTMLCanvasElement))
|
|
133
|
-
return null;
|
|
134
|
-
const rect = element.getBoundingClientRect();
|
|
135
|
-
return {
|
|
136
|
-
width: Math.round(rect.width),
|
|
137
|
-
height: Math.round(rect.height),
|
|
138
|
-
// The drawing-buffer attributes, not CSS size — see CanvasObservation in classify.ts for
|
|
139
|
-
// why this replaced a getContext() probe.
|
|
140
|
-
bufferWidth: element.width,
|
|
141
|
-
bufferHeight: element.height,
|
|
142
|
-
// Page coordinates of the rect, for sampling the captured frame below. Kept out of
|
|
143
|
-
// CanvasObservation, which is about whether a renderer claimed the canvas, not where.
|
|
144
|
-
left: Math.round(rect.left),
|
|
145
|
-
top: Math.round(rect.top),
|
|
146
|
-
};
|
|
147
|
-
});
|
|
148
|
-
// `--fast` skips the whole screenshot pipeline — capture, disk write, and the in-page PNG
|
|
149
|
-
// re-decode of measureCanvasFrame. The context-loss probe, frame counter and state
|
|
150
|
-
// snapshot still catch the black-frame family; what is lost is only the pixel evidence,
|
|
151
|
-
// which the inner loop does not need and publish's own smoke check always recaptures.
|
|
152
|
-
let screenshotBytes = null;
|
|
153
|
-
let canvasFrame = null;
|
|
96
|
+
page.on('console', (message) => consoleLines.push(`${message.type()}: ${message.text()}`));
|
|
97
|
+
page.on('pageerror', (error) => pageErrors.push(error.message));
|
|
98
|
+
page.on('requestfailed', (request) => consoleLines.push(`requestfailed: ${request.url()} ${request.failure()?.errorText ?? ''}`));
|
|
99
|
+
try {
|
|
100
|
+
await navigate(page);
|
|
101
|
+
}
|
|
102
|
+
catch (error) {
|
|
103
|
+
// Best-effort screenshot of whatever the page shows right now — often still blank, but
|
|
104
|
+
// worth having. The console log (written in `finally` below) is the useful artifact here.
|
|
154
105
|
if (captureScreenshot) {
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
}
|
|
162
|
-
const webglContextLost = await (target ?? page).evaluate(
|
|
163
|
-
// eslint-disable-next-line no-undef -- browser-side callback, see the canvas probe above.
|
|
164
|
-
(flag) => window[flag] === true, CONTEXT_LOST_FLAG);
|
|
165
|
-
const renderer = options.requestedRenderer === undefined
|
|
166
|
-
? undefined
|
|
167
|
-
: await probeRenderer(target, options.requestedRenderer);
|
|
168
|
-
// The engine probes below belong to verify's questions only, and need something to probe:
|
|
169
|
-
// no start interaction (publish's smoke check) or no frame leaves them unobserved.
|
|
170
|
-
const engineTarget = startInteraction === undefined ? null : target;
|
|
171
|
-
const snapshot = engineTarget === null
|
|
172
|
-
? undefined
|
|
173
|
-
: await captureStateSnapshot(engineTarget, settleSamples);
|
|
174
|
-
const events = engineTarget === null
|
|
175
|
-
? undefined
|
|
176
|
-
: deriveEventsObservation(await captureEventTrace(engineTarget));
|
|
177
|
-
let start;
|
|
178
|
-
if (startInteraction !== undefined && interaction !== null) {
|
|
179
|
-
start = {
|
|
180
|
-
...interaction,
|
|
181
|
-
// Recomputed from the full console capture rather than taken from the interaction step,
|
|
182
|
-
// so a start that only lands during the settle (slow world load) still counts.
|
|
183
|
-
gameStartDetected: hasStartMarker(consoleLines, startInteraction.startedConsoleMarker),
|
|
184
|
-
menuVisibleAfterSettle: await isMenuVisible(interactiveTarget),
|
|
185
|
-
};
|
|
106
|
+
try {
|
|
107
|
+
fs.writeFileSync(options.screenshotPath, await page.screenshot(SCREENSHOT_OPTIONS));
|
|
108
|
+
}
|
|
109
|
+
catch {
|
|
110
|
+
// Page may already be unusable (closed context, crashed renderer) — nothing to save.
|
|
111
|
+
}
|
|
186
112
|
}
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
113
|
+
const detail = error instanceof Error ? error.message : String(error);
|
|
114
|
+
throw new CliError(`The page never finished loading at ${options.url}: ${detail}`);
|
|
115
|
+
}
|
|
116
|
+
// Same probe either way; only the frame it runs in differs. A missing child frame leaves
|
|
117
|
+
// `target` null, which classifies as "no canvas" — correct, because a harness whose iframe
|
|
118
|
+
// never loaded (a download, a 404) is exactly the failure this mode exists to catch. A run
|
|
119
|
+
// that drives a start interaction needs the frame outright, so it fails loudly instead.
|
|
120
|
+
const frameUrlIncludes = options.probeFrameUrlIncludes;
|
|
121
|
+
const target = frameUrlIncludes === undefined
|
|
122
|
+
? page
|
|
123
|
+
: page.frames().find((frame) => frame.url().includes(frameUrlIncludes)) ?? null;
|
|
124
|
+
if (startInteraction !== undefined && target === null) {
|
|
125
|
+
throw new CliError('The game iframe did not load.');
|
|
126
|
+
}
|
|
127
|
+
// Interaction, settling and the menu probe drive the frame the game lives in; the page-level
|
|
128
|
+
// screenshot and frame counter stay on `page`.
|
|
129
|
+
const interactiveTarget = target ?? page;
|
|
130
|
+
const interaction = startInteraction === undefined
|
|
131
|
+
? null
|
|
132
|
+
: await performStartInteraction(interactiveTarget, consoleLines, startInteraction, options.device?.hasTouch === true);
|
|
133
|
+
// Verify settles adaptively — a game that provably reached stable gameplay is observed
|
|
134
|
+
// after a few seconds instead of the full fixed window, with `settleMs` as the hard cap.
|
|
135
|
+
// The smoke check keeps the fixed wait: its game lives in an iframe this probe does not
|
|
136
|
+
// reach, and its question ("does the published bundle come up") has no early exit.
|
|
137
|
+
let settle;
|
|
138
|
+
let settleSamples = [];
|
|
139
|
+
if (startInteraction === undefined) {
|
|
140
|
+
await page.waitForTimeout(options.settleMs);
|
|
141
|
+
}
|
|
142
|
+
else {
|
|
143
|
+
({ settle, samples: settleSamples } = await adaptiveSettle(interactiveTarget, consoleLines, options.settleMs));
|
|
144
|
+
}
|
|
145
|
+
if (options.afterSettle)
|
|
146
|
+
await options.afterSettle(interactiveTarget);
|
|
147
|
+
const canvas = target === null ? null : await target.evaluate(() => {
|
|
148
|
+
// This callback runs inside the browser Playwright drives, not in the CLI's Node process,
|
|
149
|
+
// so `document` is a real global there even though the CLI's eslint config declares no
|
|
150
|
+
// DOM globals for the process it actually lints.
|
|
151
|
+
// eslint-disable-next-line no-undef
|
|
152
|
+
const element = document.querySelector('#game-container canvas');
|
|
153
|
+
if (!(element instanceof HTMLCanvasElement))
|
|
154
|
+
return null;
|
|
155
|
+
const rect = element.getBoundingClientRect();
|
|
193
156
|
return {
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
renderer,
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
events,
|
|
205
|
-
touchControls,
|
|
206
|
-
viewport: contextOptions.viewport,
|
|
207
|
-
// From the console this run already captured — the engine logs the check on every game
|
|
208
|
-
// start, desktop included (see verify/mobile-parity.ts). Behind the same gate as the
|
|
209
|
-
// snapshot and event probes: the check only runs at game start, so a run that never
|
|
210
|
-
// starts one has observed nothing, and `publish`'s smoke check keeps its exact shape.
|
|
211
|
-
mobileParity: engineTarget === null ? undefined : parseMobileParityGap(consoleLines),
|
|
157
|
+
width: Math.round(rect.width),
|
|
158
|
+
height: Math.round(rect.height),
|
|
159
|
+
// The drawing-buffer attributes, not CSS size — see CanvasObservation in classify.ts for
|
|
160
|
+
// why this replaced a getContext() probe.
|
|
161
|
+
bufferWidth: element.width,
|
|
162
|
+
bufferHeight: element.height,
|
|
163
|
+
// Page coordinates of the rect, for sampling the captured frame below. Kept out of
|
|
164
|
+
// CanvasObservation, which is about whether a renderer claimed the canvas, not where.
|
|
165
|
+
left: Math.round(rect.left),
|
|
166
|
+
top: Math.round(rect.top),
|
|
212
167
|
};
|
|
168
|
+
});
|
|
169
|
+
// `--fast` skips the whole screenshot pipeline — capture, disk write, and the in-page PNG
|
|
170
|
+
// re-decode of measureCanvasFrame. The context-loss probe, frame counter and state
|
|
171
|
+
// snapshot still catch the black-frame family; what is lost is only the pixel evidence,
|
|
172
|
+
// which the inner loop does not need and publish's own smoke check always recaptures.
|
|
173
|
+
let screenshotBytes = null;
|
|
174
|
+
let canvasFrame = null;
|
|
175
|
+
if (captureScreenshot) {
|
|
176
|
+
const screenshotBuffer = await page.screenshot(SCREENSHOT_OPTIONS);
|
|
177
|
+
fs.writeFileSync(options.screenshotPath, screenshotBuffer);
|
|
178
|
+
screenshotBytes = screenshotBuffer.length;
|
|
179
|
+
canvasFrame = canvas === null
|
|
180
|
+
? null
|
|
181
|
+
: await measureCanvasFrame(page, screenshotBuffer, canvas);
|
|
213
182
|
}
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
await
|
|
183
|
+
const webglContextLost = await (target ?? page).evaluate(
|
|
184
|
+
// eslint-disable-next-line no-undef -- browser-side callback, see the canvas probe above.
|
|
185
|
+
(flag) => window[flag] === true, CONTEXT_LOST_FLAG);
|
|
186
|
+
const renderer = options.requestedRenderer === undefined
|
|
187
|
+
? undefined
|
|
188
|
+
: await probeRenderer(target, options.requestedRenderer);
|
|
189
|
+
// The engine probes below belong to verify's questions only, and need something to probe:
|
|
190
|
+
// no start interaction (publish's smoke check) or no frame leaves them unobserved.
|
|
191
|
+
const engineTarget = startInteraction === undefined ? null : target;
|
|
192
|
+
const snapshot = engineTarget === null
|
|
193
|
+
? undefined
|
|
194
|
+
: await captureStateSnapshot(engineTarget, settleSamples);
|
|
195
|
+
const events = engineTarget === null
|
|
196
|
+
? undefined
|
|
197
|
+
: deriveEventsObservation(await captureEventTrace(engineTarget));
|
|
198
|
+
let start;
|
|
199
|
+
if (startInteraction !== undefined && interaction !== null) {
|
|
200
|
+
start = {
|
|
201
|
+
...interaction,
|
|
202
|
+
// Recomputed from the full console capture rather than taken from the interaction step,
|
|
203
|
+
// so a start that only lands during the settle (slow world load) still counts.
|
|
204
|
+
gameStartDetected: hasStartMarker(consoleLines, startInteraction.startedConsoleMarker),
|
|
205
|
+
menuVisibleAfterSettle: await isMenuVisible(interactiveTarget),
|
|
206
|
+
customStartScreen: await hasCustomStartScreen(interactiveTarget),
|
|
207
|
+
};
|
|
220
208
|
}
|
|
209
|
+
// Only meaningful on a run that emulated a phone: on desktop the engine never builds
|
|
210
|
+
// MobileControls at all, so zero affordances there is the correct state, not a finding.
|
|
211
|
+
// Probed in the game's own frame, so the engine question it carries reaches the engine.
|
|
212
|
+
const touchControls = options.device === undefined
|
|
213
|
+
? undefined
|
|
214
|
+
: await probeTouchControls(target ?? page);
|
|
215
|
+
return {
|
|
216
|
+
consoleLines,
|
|
217
|
+
pageErrors,
|
|
218
|
+
canvas,
|
|
219
|
+
screenshotBytes,
|
|
220
|
+
webglContextLost,
|
|
221
|
+
canvasFrame,
|
|
222
|
+
start,
|
|
223
|
+
renderer,
|
|
224
|
+
snapshot,
|
|
225
|
+
settle,
|
|
226
|
+
events,
|
|
227
|
+
touchControls,
|
|
228
|
+
viewport,
|
|
229
|
+
// From the console this run already captured — the engine logs the check on every game
|
|
230
|
+
// start, desktop included (see verify/mobile-parity.ts). Behind the same gate as the
|
|
231
|
+
// snapshot and event probes: the check only runs at game start, so a run that never
|
|
232
|
+
// starts one has observed nothing, and `publish`'s smoke check keeps its exact shape.
|
|
233
|
+
mobileParity: engineTarget === null ? undefined : parseMobileParityGap(consoleLines),
|
|
234
|
+
};
|
|
235
|
+
}
|
|
236
|
+
finally {
|
|
237
|
+
// Written on success and failure alike, including when the try block above threw before
|
|
238
|
+
// ever reaching the screenshot: the console log is the most useful thing a creator or their
|
|
239
|
+
// agent can look at when the page never came up at all.
|
|
240
|
+
fs.writeFileSync(options.consolePath, [...consoleLines, ...pageErrors.map((e) => `pageerror: ${e}`)].join('\n'));
|
|
221
241
|
}
|
|
222
242
|
}
|
|
223
243
|
/**
|
|
@@ -290,7 +310,7 @@ const UNOBSERVED_PROBE = {
|
|
|
290
310
|
* exactly the pre-adaptive behaviour.
|
|
291
311
|
*/
|
|
292
312
|
async function takeSettleSample(page, atMs, consoleLines) {
|
|
293
|
-
const errorEventCount = consoleLines.filter((line) => line.startsWith('error:') || line
|
|
313
|
+
const errorEventCount = consoleLines.filter((line) => line.startsWith('error:') || isRespawnLine(line)).length;
|
|
294
314
|
const probed = await page.evaluate((flag) => {
|
|
295
315
|
/* eslint-disable no-undef -- browser-side callback, see the canvas probe above. */
|
|
296
316
|
try {
|
|
@@ -510,6 +530,30 @@ async function disarmPointerLock(page) {
|
|
|
510
530
|
});
|
|
511
531
|
});
|
|
512
532
|
}
|
|
533
|
+
/**
|
|
534
|
+
* Delete the browser APIs iPhone Safari does not have, before any page script runs.
|
|
535
|
+
*
|
|
536
|
+
* A phone run is Chromium wearing an iPhone's viewport, touch and UA — and Chromium has Pointer
|
|
537
|
+
* Lock and the element Fullscreen API, which iPhone Safari does not. Game code that calls
|
|
538
|
+
* `document.exitPointerLock()` raw compiles (the DOM types declare it always present), passes
|
|
539
|
+
* dev and a Chromium phone run, and is a TypeError on a real iPhone; thrown from a genre's
|
|
540
|
+
* load(), it is a black screen (Party Boat, 2026-10-08). With the APIs gone here, the run takes
|
|
541
|
+
* the code path an iPhone takes — including the engine's own boot-time stand-ins
|
|
542
|
+
* (`installMissingPointerLockStubs`), so what is verified is what a player gets.
|
|
543
|
+
*
|
|
544
|
+
* `pointerLockElement` goes too: its absence is what tells the engine there is no lock, and it
|
|
545
|
+
* is what keeps the lock from being requested at all — the disarm a desktop run needs anyway.
|
|
546
|
+
*/
|
|
547
|
+
async function removeApisIphoneSafariLacks(page) {
|
|
548
|
+
await page.addInitScript(() => {
|
|
549
|
+
const strip = (proto, names) => {
|
|
550
|
+
for (const name of names)
|
|
551
|
+
delete proto[name];
|
|
552
|
+
};
|
|
553
|
+
strip(Document.prototype, ['exitPointerLock', 'pointerLockElement', 'exitFullscreen', 'webkitExitFullscreen']);
|
|
554
|
+
strip(Element.prototype, ['requestPointerLock', 'requestFullscreen', 'webkitRequestFullscreen']);
|
|
555
|
+
});
|
|
556
|
+
}
|
|
513
557
|
/**
|
|
514
558
|
* What the canvas rect of `screenshot` actually contains: how much of it is lit, and how many
|
|
515
559
|
* distinct colours it holds. The second is what catches a canvas that drew nothing on a page whose
|
|
@@ -593,9 +637,9 @@ async function measureCanvasFrame(page, screenshot, rect) {
|
|
|
593
637
|
const PRESS_TIMEOUT_MS = 5_000;
|
|
594
638
|
/**
|
|
595
639
|
* Start gameplay the way a player does: click through whatever the pre-play screen asks for and
|
|
596
|
-
* press Play — a click on the desktop run, a tap on the mobile one (see `tap` below).
|
|
597
|
-
*
|
|
598
|
-
* marker instead.
|
|
640
|
+
* press Play — a click on the desktop run, a tap on the mobile one (see `tap` below). A custom
|
|
641
|
+
* start screen is pressed through the control it marks `data-bitmagic-play`; games without any
|
|
642
|
+
* button (auto-starting genres) are accepted through the start marker instead.
|
|
599
643
|
*
|
|
600
644
|
* The screen can ask for more than Play. A game that authors
|
|
601
645
|
* `worldProfileData.hud.startScreen.selections` presents a level chooser BEFORE the world loads
|
|
@@ -777,6 +821,29 @@ async function probeTouchControls(target) {
|
|
|
777
821
|
* StartScreen fades out and sets `display: none`; a menu still up at the end of the run means
|
|
778
822
|
* the game bounced back to (or never left) the menu, whatever the console claimed.
|
|
779
823
|
*/
|
|
824
|
+
/**
|
|
825
|
+
* Whether game code replaced the engine start screen (`engine.setUIComponent('start', …)`).
|
|
826
|
+
*
|
|
827
|
+
* Only read to word a never-started failure: such a game has no engine Play button, so verify
|
|
828
|
+
* can press nothing but a control the game marked `data-bitmagic-play`. Probed through
|
|
829
|
+
* `window.gameTemplate` like the other engine probes; a page that cannot answer yields false,
|
|
830
|
+
* which keeps the generic never-started message.
|
|
831
|
+
*/
|
|
832
|
+
async function hasCustomStartScreen(page) {
|
|
833
|
+
const probed = await page.evaluate(() => {
|
|
834
|
+
/* eslint-disable no-undef -- browser-side callback, see the canvas probe above. */
|
|
835
|
+
try {
|
|
836
|
+
const template = window.gameTemplate;
|
|
837
|
+
const engine = template?.getGameEngine?.();
|
|
838
|
+
return (engine?.getUIComponent?.('start') ?? null) !== null;
|
|
839
|
+
}
|
|
840
|
+
catch {
|
|
841
|
+
return false;
|
|
842
|
+
}
|
|
843
|
+
/* eslint-enable no-undef */
|
|
844
|
+
}).catch(() => false);
|
|
845
|
+
return probed === true;
|
|
846
|
+
}
|
|
780
847
|
async function isMenuVisible(page) {
|
|
781
848
|
return page.evaluate(() => {
|
|
782
849
|
// Runs inside the browser, where `document`/`window` are real globals — see the canvas probe
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"browser.js","sourceRoot":"","sources":["../../src/verify/browser.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"browser.js","sourceRoot":"","sources":["../../src/verify/browser.ts"],"names":[],"mappings":"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"}
|
|
@@ -10,7 +10,7 @@
|
|
|
10
10
|
* Keep the table in step with `classify.ts`: a new failure there lands in `other` here until it
|
|
11
11
|
* gets a row, and `categories.test.ts` pins every existing message to its category.
|
|
12
12
|
*/
|
|
13
|
-
export type VerifyFailureCategory = 'page_error' | 'start_threw' | 'play_unclickable' | 'selection_stalled' | 'never_started' | 'webgpu_fallback' | 'mobile_parity' | 'no_canvas' | 'canvas_zero' | 'canvas_unclaimed' | 'frame_blank' | 'frame_black' | 'frame_flat' | 'gl_context_lost' | 'engine_error' | 'cors_blocked' | 'fell_out_of_world' | 'still_falling' | 'render_stalled' | 'other';
|
|
13
|
+
export type VerifyFailureCategory = 'page_error' | 'start_threw' | 'play_unclickable' | 'selection_stalled' | 'custom_start_unmarked' | 'never_started' | 'webgpu_fallback' | 'mobile_parity' | 'no_canvas' | 'canvas_zero' | 'canvas_unclaimed' | 'frame_blank' | 'frame_black' | 'frame_flat' | 'gl_context_lost' | 'engine_error' | 'cors_blocked' | 'fell_out_of_world' | 'still_falling' | 'render_stalled' | 'other';
|
|
14
14
|
export declare function categoriseVerifyFailure(message: string): VerifyFailureCategory;
|
|
15
15
|
/** The distinct categories of a run's failures, in first-seen order — what the beacon carries. */
|
|
16
16
|
export declare function verifyFailureCategories(failures: readonly string[]): VerifyFailureCategory[];
|
|
@@ -15,6 +15,7 @@ const TABLE = [
|
|
|
15
15
|
[/^The Play button was clicked but the game never started/, 'start_threw'],
|
|
16
16
|
[/^The Play button appeared but could not be clicked/, 'play_unclickable'],
|
|
17
17
|
[/^Picked \d+ pre-play selection/, 'selection_stalled'],
|
|
18
|
+
[/^The game installs its own start screen/, 'custom_start_unmarked'],
|
|
18
19
|
[/^The game never started/, 'never_started'],
|
|
19
20
|
[/^WebGPU was requested but the renderer silently fell back/, 'webgpu_fallback'],
|
|
20
21
|
[/^This game declares primaryPlatform "mobile"/, 'mobile_parity'],
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"categories.js","sourceRoot":"","sources":["../../src/verify/categories.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;
|
|
1
|
+
{"version":3,"file":"categories.js","sourceRoot":"","sources":["../../src/verify/categories.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAyBH,MAAM,KAAK,GAA4D;IACrE,CAAC,8BAA8B,EAAE,YAAY,CAAC;IAC9C,CAAC,yDAAyD,EAAE,aAAa,CAAC;IAC1E,CAAC,oDAAoD,EAAE,kBAAkB,CAAC;IAC1E,CAAC,gCAAgC,EAAE,mBAAmB,CAAC;IACvD,CAAC,yCAAyC,EAAE,uBAAuB,CAAC;IACpE,CAAC,yBAAyB,EAAE,eAAe,CAAC;IAC5C,CAAC,2DAA2D,EAAE,iBAAiB,CAAC;IAChF,CAAC,8CAA8C,EAAE,eAAe,CAAC;IACjE,CAAC,2BAA2B,EAAE,WAAW,CAAC;IAC1C,CAAC,yBAAyB,EAAE,aAAa,CAAC;IAC1C,CAAC,6CAA6C,EAAE,kBAAkB,CAAC;IACnE,CAAC,sCAAsC,EAAE,aAAa,CAAC;IACvD,CAAC,0BAA0B,EAAE,aAAa,CAAC;IAC3C,CAAC,gDAAgD,EAAE,YAAY,CAAC;IAChE,CAAC,6BAA6B,EAAE,iBAAiB,CAAC;IAClD,CAAC,uBAAuB,EAAE,cAAc,CAAC;IACzC,CAAC,oCAAoC,EAAE,cAAc,CAAC;IACtD,CAAC,mCAAmC,EAAE,mBAAmB,CAAC;IAC1D,CAAC,+BAA+B,EAAE,eAAe,CAAC;IAClD,CAAC,iCAAiC,EAAE,gBAAgB,CAAC;CACtD,CAAC;AAEF,4GAA4G;AAC5G,MAAM,eAAe,GAAG,uBAAuB,CAAC;AAEhD,MAAM,UAAU,uBAAuB,CAAC,OAAe;IACrD,MAAM,IAAI,GAAG,OAAO,CAAC,OAAO,CAAC,eAAe,EAAE,EAAE,CAAC,CAAC;IAClD,KAAK,MAAM,CAAC,OAAO,EAAE,QAAQ,CAAC,IAAI,KAAK,EAAE,CAAC;QACxC,IAAI,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC;YAAE,OAAO,QAAQ,CAAC;IAC1C,CAAC;IACD,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,kGAAkG;AAClG,MAAM,UAAU,uBAAuB,CAAC,QAA2B;IACjE,MAAM,IAAI,GAAG,IAAI,GAAG,EAAyB,CAAC;IAC9C,KAAK,MAAM,OAAO,IAAI,QAAQ;QAAE,IAAI,CAAC,GAAG,CAAC,uBAAuB,CAAC,OAAO,CAAC,CAAC,CAAC;IAC3E,OAAO,CAAC,GAAG,IAAI,CAAC,CAAC;AACnB,CAAC"}
|
|
@@ -120,6 +120,9 @@ export interface StartObservations {
|
|
|
120
120
|
gameStartDetected: boolean;
|
|
121
121
|
/** The start menu overlay was still displayed after settling. */
|
|
122
122
|
menuVisibleAfterSettle: boolean;
|
|
123
|
+
/** Game code replaced the engine start screen (`engine.setUIComponent('start', …)`), so the
|
|
124
|
+
* engine's Play button never exists and verify can only press a `data-bitmagic-play` control. */
|
|
125
|
+
customStartScreen?: boolean;
|
|
123
126
|
}
|
|
124
127
|
export interface VerifyObservations {
|
|
125
128
|
/** Console lines, each prefixed with its type, e.g. `error: …`. */
|
|
@@ -190,11 +193,20 @@ export interface VerifyResult {
|
|
|
190
193
|
warnings: string[];
|
|
191
194
|
}
|
|
192
195
|
/**
|
|
193
|
-
* The engine's line when the player has fallen out of the world and is being put back
|
|
196
|
+
* The engine's line when the player has fallen out of the world and is being put back
|
|
197
|
+
* ("Fell below -100, respawning..."), whatever the kill plane's height: a game may move it
|
|
198
|
+
* (`fallRescue.killPlaneY`) and the engine prints its own. "Vehicle fell below" (a vehicle put
|
|
199
|
+
* back, the player still in it) is a different line.
|
|
194
200
|
*
|
|
195
201
|
* A game the player cannot stand up in is not verified, however cleanly it renders. This was not
|
|
196
202
|
* theoretical: a forged level whose terrain never loaded rendered a perfect frame, threw nothing,
|
|
197
203
|
* and reported PASSED, while the player fell and respawned 14 times in a 45s settle.
|
|
198
204
|
*/
|
|
199
|
-
export declare
|
|
205
|
+
export declare function isRespawnLine(line: string): boolean;
|
|
206
|
+
/**
|
|
207
|
+
* The event the engine's fall rescue logs for each respawn — the same signal as the line, but
|
|
208
|
+
* readable without matching console text. Engines that predate it only print the line, so the
|
|
209
|
+
* count is the larger of the two and a respawn seen both ways is still one.
|
|
210
|
+
*/
|
|
211
|
+
export declare const PLAYER_RESPAWN_EVENT = "player-respawn";
|
|
200
212
|
export declare function classifyVerifyRun(observations: VerifyObservations, context?: ClassifyContext): VerifyResult;
|