@bitmagic/cli 0.1.52-dev.10 → 0.1.52-dev.12

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.
Files changed (75) hide show
  1. package/README.md +44 -8
  2. package/dist/assets/add.js +2 -1
  3. package/dist/assets/add.js.map +1 -1
  4. package/dist/assets/voxelize-glb.d.ts +17 -1
  5. package/dist/assets/voxelize-glb.js +43 -19
  6. package/dist/assets/voxelize-glb.js.map +1 -1
  7. package/dist/cli.d.ts +8 -0
  8. package/dist/cli.js +6 -6
  9. package/dist/cli.js.map +1 -1
  10. package/dist/commands/generate.js +36 -67
  11. package/dist/commands/generate.js.map +1 -1
  12. package/dist/commands/judge.d.ts +5 -0
  13. package/dist/commands/judge.js +28 -7
  14. package/dist/commands/judge.js.map +1 -1
  15. package/dist/commands/levels.d.ts +10 -17
  16. package/dist/commands/levels.js +48 -48
  17. package/dist/commands/levels.js.map +1 -1
  18. package/dist/commands/publish.d.ts +6 -1
  19. package/dist/commands/publish.js +29 -15
  20. package/dist/commands/publish.js.map +1 -1
  21. package/dist/commands/verify.d.ts +4 -0
  22. package/dist/commands/verify.js +94 -51
  23. package/dist/commands/verify.js.map +1 -1
  24. package/dist/editor/journal.js +13 -7
  25. package/dist/editor/journal.js.map +1 -1
  26. package/dist/generate/model.d.ts +8 -2
  27. package/dist/generate/model.js +69 -21
  28. package/dist/generate/model.js.map +1 -1
  29. package/dist/generate/prop.d.ts +2 -0
  30. package/dist/generate/prop.js +1 -1
  31. package/dist/generate/prop.js.map +1 -1
  32. package/dist/judge/record.d.ts +3 -0
  33. package/dist/judge/record.js +3 -0
  34. package/dist/judge/record.js.map +1 -1
  35. package/dist/levels/registry.d.ts +5 -2
  36. package/dist/levels/registry.js +32 -27
  37. package/dist/levels/registry.js.map +1 -1
  38. package/dist/project/jobs.js +16 -20
  39. package/dist/project/jobs.js.map +1 -1
  40. package/dist/project/platform-declaration.d.ts +51 -0
  41. package/dist/project/platform-declaration.js +81 -0
  42. package/dist/project/platform-declaration.js.map +1 -0
  43. package/dist/publish/platform.d.ts +4 -8
  44. package/dist/publish/platform.js +19 -53
  45. package/dist/publish/platform.js.map +1 -1
  46. package/dist/scaffold/project-files.js +19 -5
  47. package/dist/scaffold/project-files.js.map +1 -1
  48. package/dist/verify/artifacts.d.ts +19 -0
  49. package/dist/verify/artifacts.js +34 -0
  50. package/dist/verify/artifacts.js.map +1 -0
  51. package/dist/verify/browser.d.ts +10 -0
  52. package/dist/verify/browser.js +79 -9
  53. package/dist/verify/browser.js.map +1 -1
  54. package/dist/verify/classify.d.ts +37 -1
  55. package/dist/verify/classify.js +66 -2
  56. package/dist/verify/classify.js.map +1 -1
  57. package/dist/verify/device.d.ts +43 -0
  58. package/dist/verify/device.js +59 -0
  59. package/dist/verify/device.js.map +1 -0
  60. package/dist/verify/iterate.d.ts +21 -2
  61. package/dist/verify/iterate.js +43 -36
  62. package/dist/verify/iterate.js.map +1 -1
  63. package/dist/verify/mobile-parity.d.ts +42 -0
  64. package/dist/verify/mobile-parity.js +84 -0
  65. package/dist/verify/mobile-parity.js.map +1 -0
  66. package/dist/verify/platform.d.ts +47 -0
  67. package/dist/verify/platform.js +89 -0
  68. package/dist/verify/platform.js.map +1 -0
  69. package/dist/verify/result.d.ts +90 -6
  70. package/dist/verify/result.js +89 -10
  71. package/dist/verify/result.js.map +1 -1
  72. package/dist/verify/url.d.ts +9 -1
  73. package/dist/verify/url.js +10 -2
  74. package/dist/verify/url.js.map +1 -1
  75. package/package.json +4 -4
@@ -3,6 +3,7 @@ import { chromium } from 'playwright-core';
3
3
  import { browserGlArgs } from '../browser-gl.js';
4
4
  import { CliError } from '../errors.js';
5
5
  import { RESPAWN_LINE, } from './classify.js';
6
+ import { parseMobileParityGap } from './mobile-parity.js';
6
7
  import { DEFAULT_SETTLE_CONFIG, SETTLE_POLL_MS, isFreefalling, settleVerdict, } from './settle.js';
7
8
  import { deriveEventsObservation } from './events.js';
8
9
  export const DEFAULT_START_INTERACTION = {
@@ -66,7 +67,8 @@ export class VerifyBrowserSession {
66
67
  // browser phase throws (e.g. page.goto timing out) — artifacts are the point of a failing run.
67
68
  const consoleLines = [];
68
69
  const pageErrors = [];
69
- const context = await this.browser.newContext({ viewport: { width: 1280, height: 720 } });
70
+ const contextOptions = options.device ?? DESKTOP_CONTEXT_OPTIONS;
71
+ const context = await this.browser.newContext(contextOptions);
70
72
  try {
71
73
  const page = await context.newPage();
72
74
  await armContextLossProbe(page);
@@ -82,7 +84,7 @@ export class VerifyBrowserSession {
82
84
  // worth having. The console log (written in `finally` below) is the useful artifact here.
83
85
  if (options.captureScreenshot !== false) {
84
86
  try {
85
- fs.writeFileSync(options.screenshotPath, await page.screenshot());
87
+ fs.writeFileSync(options.screenshotPath, await page.screenshot(SCREENSHOT_OPTIONS));
86
88
  }
87
89
  catch {
88
90
  // Page may already be unusable (closed context, crashed renderer) — nothing to save.
@@ -93,7 +95,7 @@ export class VerifyBrowserSession {
93
95
  }
94
96
  const interaction = options.startInteraction === undefined
95
97
  ? null
96
- : await performStartInteraction(page, consoleLines, options.startInteraction);
98
+ : await performStartInteraction(page, consoleLines, options.startInteraction, options.device?.hasTouch === true);
97
99
  // Verify settles adaptively — a game that provably reached stable gameplay is observed
98
100
  // after a few seconds instead of the full fixed window, with `settleMs` as the hard cap.
99
101
  // The smoke check keeps the fixed wait: its game lives in an iframe this probe does not
@@ -142,7 +144,7 @@ export class VerifyBrowserSession {
142
144
  let screenshotBytes = null;
143
145
  let canvasFrame = null;
144
146
  if (options.captureScreenshot !== false) {
145
- const screenshotBuffer = await page.screenshot();
147
+ const screenshotBuffer = await page.screenshot(SCREENSHOT_OPTIONS);
146
148
  fs.writeFileSync(options.screenshotPath, screenshotBuffer);
147
149
  screenshotBytes = screenshotBuffer.length;
148
150
  canvasFrame = canvas === null
@@ -176,6 +178,9 @@ export class VerifyBrowserSession {
176
178
  menuVisibleAfterSettle: await isMenuVisible(page),
177
179
  };
178
180
  }
181
+ // Only meaningful on a run that emulated a phone: on desktop the engine never builds
182
+ // MobileControls at all, so zero affordances there is the correct state, not a finding.
183
+ const touchControls = options.device === undefined ? undefined : await countTouchAffordances(page);
179
184
  return {
180
185
  consoleLines,
181
186
  pageErrors,
@@ -188,6 +193,13 @@ export class VerifyBrowserSession {
188
193
  snapshot,
189
194
  settle,
190
195
  events,
196
+ touchControls,
197
+ viewport: contextOptions.viewport,
198
+ // From the console this run already captured — the engine logs the check on every game
199
+ // start, desktop included (see verify/mobile-parity.ts). Behind the same gate as the
200
+ // snapshot and event probes: the check only runs at game start, so a run that never
201
+ // starts one has observed nothing, and `publish`'s smoke check keeps its exact shape.
202
+ mobileParity: engineTarget === null ? undefined : parseMobileParityGap(consoleLines),
191
203
  };
192
204
  }
193
205
  finally {
@@ -199,6 +211,19 @@ export class VerifyBrowserSession {
199
211
  }
200
212
  }
201
213
  }
214
+ /**
215
+ * Every capture, on every platform.
216
+ *
217
+ * `scale: 'css'` rather than Playwright's default `'device'` because a phone context runs at
218
+ * deviceScaleFactor 3, and `measureCanvasFrame` below samples the captured image using the
219
+ * canvas's CSS-pixel rect. At device scale those coordinates would be off by 3x and the
220
+ * black-frame check would measure the wrong region of the image entirely. CSS scale keeps that
221
+ * invariant true on both paths — at DSF 1 the two are identical, so the desktop artifact is
222
+ * unchanged — and keeps the mobile PNG small enough for `bitmagic judge`'s image limit.
223
+ */
224
+ const SCREENSHOT_OPTIONS = { scale: 'css' };
225
+ /** The context every run used before device emulation existed, and still the default. */
226
+ const DESKTOP_CONTEXT_OPTIONS = { viewport: { width: 1280, height: 720 } };
202
227
  /** Window counter the init script below increments on every rAF tick. */
203
228
  const FRAME_COUNT_FLAG = '__bitmagicFrameCount';
204
229
  /**
@@ -505,8 +530,10 @@ async function measureCanvasFrame(page, screenshot, rect) {
505
530
  const image = new Image();
506
531
  image.src = input.dataUrl;
507
532
  await image.decode();
508
- // The screenshot is a viewport capture at deviceScaleFactor 1, so its pixels are the
509
- // page's CSS pixels; clamp to the image in case the canvas overhangs the viewport.
533
+ // The screenshot is a viewport capture taken at CSS scale (`SCREENSHOT_OPTIONS`), so its
534
+ // pixels are the page's CSS pixels whatever the device pixel ratio which is what lets
535
+ // this rect, read from getBoundingClientRect, index straight into the image on a phone
536
+ // context at deviceScaleFactor 3. Clamp in case the canvas overhangs the viewport.
510
537
  const left = Math.max(0, input.left);
511
538
  const top = Math.max(0, input.top);
512
539
  const width = Math.min(input.width, image.naturalWidth - left);
@@ -563,7 +590,8 @@ function hasStartMarker(consoleLines, marker) {
563
590
  return consoleLines.some((line) => line.includes(marker));
564
591
  }
565
592
  /**
566
- * Start gameplay the way a player does: wait for the engine Play button and click it. The button
593
+ * Start gameplay the way a player does: wait for the engine Play button and press it a click on
594
+ * the desktop run, a tap on the mobile one (see `tap` below). The button
567
595
  * only becomes visible once the world has finished loading, so "button appeared" doubles as a
568
596
  * load-complete signal. Games without the button (auto-starting genres, custom start UIs) are
569
597
  * accepted through the start marker instead.
@@ -572,7 +600,17 @@ function hasStartMarker(consoleLines, marker) {
572
600
  * failing game still leaves its menu screenshot and console log as artifacts, and classification
573
601
  * decides pass/fail from what is recorded here.
574
602
  */
575
- async function performStartInteraction(page, consoleLines, options) {
603
+ async function performStartInteraction(page, consoleLines, options,
604
+ /**
605
+ * Press Play with a touch tap instead of a mouse click.
606
+ *
607
+ * Derived from the context's own `hasTouch` rather than passed as its own flag, so the
608
+ * mismatch is unrepresentable: `tap()` throws outright on a context without touch. The mobile
609
+ * run must press Play the way its player does — the StartScreen binds `touchend` as well as
610
+ * `click`, and mobile gameplay start reads the transient user activation a real gesture leaves
611
+ * behind before it asks for fullscreen.
612
+ */
613
+ tap) {
576
614
  const button = page.locator(options.playButtonSelector).first();
577
615
  let playButtonSeen = false;
578
616
  let playButtonClicked = false;
@@ -592,7 +630,7 @@ async function performStartInteraction(page, consoleLines, options) {
592
630
  }
593
631
  if (playButtonSeen) {
594
632
  try {
595
- await button.click({ timeout: 5_000 });
633
+ await (tap ? button.tap({ timeout: 5_000 }) : button.click({ timeout: 5_000 }));
596
634
  playButtonClicked = true;
597
635
  }
598
636
  catch {
@@ -606,6 +644,38 @@ async function performStartInteraction(page, consoleLines, options) {
606
644
  }
607
645
  return { playButtonSeen, playButtonClicked };
608
646
  }
647
+ /**
648
+ * How many touch affordances the engine's MobileControls actually put on screen.
649
+ *
650
+ * The direct evidence that the mobile branch ran: `MobileControls` builds its UI only when
651
+ * `isMobileRuntime()` is true, so a phone-emulated run that ends with none of these elements
652
+ * either never took the branch or has no touch bindings at all. Matched by the engine's own
653
+ * stable class names rather than by structure, because the joystick and the action buttons are
654
+ * plain divs the game may restyle.
655
+ *
656
+ * Null on any failure, under the same "not observed is never a failure" contract as every other
657
+ * probe here.
658
+ */
659
+ async function countTouchAffordances(page) {
660
+ try {
661
+ return await page.evaluate(() => {
662
+ /* eslint-disable no-undef -- browser-side callback, see the canvas probe above. */
663
+ try {
664
+ return {
665
+ joysticks: document.querySelectorAll('.hud-mobile-joystick-outer').length,
666
+ buttons: document.querySelectorAll('.hud-mobile-button').length,
667
+ };
668
+ }
669
+ catch {
670
+ return null;
671
+ }
672
+ /* eslint-enable no-undef */
673
+ });
674
+ }
675
+ catch {
676
+ return null;
677
+ }
678
+ }
609
679
  /**
610
680
  * Whether the engine's start menu overlay is still displayed. After a successful start the
611
681
  * StartScreen fades out and sets `display: none`; a menu still up at the end of the run means
@@ -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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"}
@@ -1,4 +1,6 @@
1
1
  import { type EventsObservation } from './events.js';
2
+ import type { MobileParityGap } from './mobile-parity.js';
3
+ import type { VerifyPlatform } from './platform.js';
2
4
  export interface CanvasObservation {
3
5
  /** CSS pixel size from getBoundingClientRect() — whether the canvas is visible/laid out. */
4
6
  width: number;
@@ -79,6 +81,16 @@ export interface StateSnapshot {
79
81
  } | null;
80
82
  npcCount: number | null;
81
83
  }
84
+ /**
85
+ * What the engine's MobileControls actually rendered, counted by the engine's own class names.
86
+ *
87
+ * Only taken on a phone-emulated run — on desktop MobileControls is never built, so zero there
88
+ * is the correct state rather than a finding. Null means the probe could not be taken.
89
+ */
90
+ export interface TouchControlsObservation {
91
+ joysticks: number;
92
+ buttons: number;
93
+ }
82
94
  /** How the settle ended: early because the game was provably stable, or at the `--timeout` cap. */
83
95
  export interface SettleObservation {
84
96
  durationMs: number;
@@ -129,6 +141,30 @@ export interface VerifyObservations {
129
141
  /** The semantic gameplay-event trace (`?eventlog=1` + `window.__bmDebug`). Null when the
130
142
  * engine predates the namespace ("not observed"), absent on the smoke check. */
131
143
  events?: EventsObservation | null;
144
+ /** Touch affordances counted on a phone-emulated run. Absent on a desktop run, where the
145
+ * engine never builds MobileControls; null when the probe could not be taken. */
146
+ touchControls?: TouchControlsObservation | null;
147
+ /** The context viewport this run used, in CSS pixels. The screenshot-size floor is a function
148
+ * of how many pixels the frame has; absent keeps the desktop-calibrated constant. */
149
+ viewport?: {
150
+ width: number;
151
+ height: number;
152
+ };
153
+ /** The engine's mobile-parity verdict, read from the console it logs on every game start.
154
+ * Null when it reported no gap — a clean game, or a genre without the check. */
155
+ mobileParity?: MobileParityGap | null;
156
+ }
157
+ /**
158
+ * What the run was, as far as the classifier needs to know.
159
+ *
160
+ * Optional in full so `publish`'s smoke check keeps calling `classifyVerifyRun` with one argument
161
+ * and classifying exactly as it always has.
162
+ */
163
+ export interface ClassifyContext {
164
+ /** Which platform this run booted. */
165
+ platform?: VerifyPlatform;
166
+ /** `game.json` declares `primaryPlatform: "mobile"`, which escalates a parity gap to a failure. */
167
+ mobilePrimary?: boolean;
132
168
  }
133
169
  export interface VerifyResult {
134
170
  ok: boolean;
@@ -143,4 +179,4 @@ export interface VerifyResult {
143
179
  * and reported PASSED, while the player fell and respawned 14 times in a 45s settle.
144
180
  */
145
181
  export declare const RESPAWN_LINE = "Fell below -100";
146
- export declare function classifyVerifyRun(observations: VerifyObservations): VerifyResult;
182
+ export declare function classifyVerifyRun(observations: VerifyObservations, context?: ClassifyContext): VerifyResult;
@@ -38,6 +38,28 @@ const UNTOUCHED_CANVAS_HEIGHT = 150;
38
38
  * real frame — a smoke signal, not a pixel assertion.
39
39
  */
40
40
  const MIN_SCREENSHOT_BYTES = 20_000;
41
+ /** What the constant above was measured against. */
42
+ const REFERENCE_VIEWPORT_AREA = 1280 * 720;
43
+ /**
44
+ * The floor above, scaled to the pixel count this run actually captured.
45
+ *
46
+ * A mobile run captures a phone viewport at CSS scale — 390x664 is ~28% of 1280x720 — and BOTH
47
+ * the blank case and a real frame shrink with it. A fixed 20KB would therefore be ~3.5x stricter
48
+ * on mobile than the number it was calibrated as, which is how a legitimately dark but perfectly
49
+ * fine phone frame would start failing. Scaling keeps the headroom the measurement bought.
50
+ *
51
+ * An absent viewport — publish's smoke check, and any caller predating this — keeps the constant
52
+ * exactly, so nothing that classified before this existed classifies differently now.
53
+ */
54
+ function minScreenshotBytes(viewport) {
55
+ if (viewport === undefined || viewport.width <= 0 || viewport.height <= 0) {
56
+ return MIN_SCREENSHOT_BYTES;
57
+ }
58
+ const scaled = MIN_SCREENSHOT_BYTES * ((viewport.width * viewport.height) / REFERENCE_VIEWPORT_AREA);
59
+ // Never ABOVE the desktop figure: a bigger-than-reference viewport does not make a blank frame
60
+ // proportionally bigger, so raising the bar there would invent failures.
61
+ return Math.round(Math.min(MIN_SCREENSHOT_BYTES, scaled));
62
+ }
41
63
  /**
42
64
  * Below this fraction of non-black pixels in the canvas rect, the frame is treated as black.
43
65
  *
@@ -93,7 +115,13 @@ const CORS_BLOCK = 'has been blocked by CORS policy';
93
115
  * even when a game's custom controller never prints that line.
94
116
  */
95
117
  const FREEFALL_FAILURE_Y = -50;
96
- export function classifyVerifyRun(observations) {
118
+ /**
119
+ * How to bind both sides at once, quoted back verbatim so the fix is copy-pasteable rather than
120
+ * a doc reference. Matches the API `game/agent-docs/control-system.md` documents.
121
+ */
122
+ const REGISTER_CUSTOM_ACTION_HINT = 'Bind both sides in one call: playerController.registerCustomAction({ action, '
123
+ + "desktop: { keys: ['KeyF'] }, mobile: { label: 'ATTACK', behavior: 'tap' } }).";
124
+ export function classifyVerifyRun(observations, context = {}) {
97
125
  const failures = [];
98
126
  const warnings = [];
99
127
  for (const error of observations.pageErrors) {
@@ -133,6 +161,41 @@ export function classifyVerifyRun(observations) {
133
161
  + 'the WebGPU path may or may not have been exercised.');
134
162
  }
135
163
  }
164
+ // The engine's own mobile-parity check, which it runs at every game start and which nothing
165
+ // read until now. Null means it reported no gap — a clean game, an older engine, or a genre
166
+ // whose controller has no parity check (the 2D genres) — and "not observed" is never a failure.
167
+ const parity = observations.mobileParity;
168
+ if (parity) {
169
+ if (parity.unpairedDesktopKeys.length > 0) {
170
+ const keys = parity.unpairedDesktopKeys.join(', ');
171
+ if (context.mobilePrimary === true) {
172
+ // The game says it is FOR phones, so an action a phone cannot reach is not a portability
173
+ // nicety — its own players cannot play it.
174
+ failures.push('This game declares primaryPlatform "mobile", but these actions have no touch button, '
175
+ + `so its own players cannot reach them: ${keys}. ${REGISTER_CUSTOM_ACTION_HINT}`);
176
+ }
177
+ else {
178
+ warnings.push(`These actions have no touch button, so phone players cannot reach them: ${keys}. `
179
+ + 'Published games get played on phones whichever platform they were built for. '
180
+ + REGISTER_CUSTOM_ACTION_HINT);
181
+ }
182
+ }
183
+ if (parity.unpairedMobileActions.length > 0) {
184
+ // Never escalated, on any platform: a touch-only gesture with no keyboard equivalent is a
185
+ // legitimate design, and the engine's own docs say so.
186
+ warnings.push(`These touch buttons have no desktop key: ${parity.unpairedMobileActions.join(', ')}. `
187
+ + 'Fine for a genuine touch-only gesture (swipe, drag); otherwise give each one a desktop '
188
+ + 'key so the action is reachable and testable on both.');
189
+ }
190
+ }
191
+ // Only on a run that emulated a phone — on desktop the engine never builds MobileControls, so
192
+ // absent (not zero) is the correct state there. A warning, never a failure: a 2D genre or a
193
+ // game with an entirely custom touch HUD legitimately renders none of these elements.
194
+ const touch = observations.touchControls;
195
+ if (touch && touch.joysticks === 0 && touch.buttons === 0) {
196
+ warnings.push('The mobile run rendered no touch controls — no joystick and no action buttons. If this '
197
+ + 'game is meant to be playable on a phone, nothing on screen lets a player move or act.');
198
+ }
136
199
  const { canvas } = observations;
137
200
  if (!canvas) {
138
201
  failures.push('No <canvas> was rendered inside #game-container — the game did not start.');
@@ -146,7 +209,8 @@ export function classifyVerifyRun(observations) {
146
209
  `${UNTOUCHED_CANVAS_HEIGHT} HTML default) — nothing claimed it.`);
147
210
  }
148
211
  }
149
- if (observations.screenshotBytes !== null && observations.screenshotBytes < MIN_SCREENSHOT_BYTES) {
212
+ const minBytes = minScreenshotBytes(observations.viewport);
213
+ if (observations.screenshotBytes !== null && observations.screenshotBytes < minBytes) {
150
214
  failures.push(`The screenshot is implausibly small (${observations.screenshotBytes} bytes) — the frame ` +
151
215
  'looks blank.');
152
216
  }
@@ -1 +1 @@
1
- {"version":3,"file":"classify.js","sourceRoot":"","sources":["../../src/verify/classify.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"classify.js","sourceRoot":"","sources":["../../src/verify/classify.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,43 @@
1
+ /**
2
+ * The phone `bitmagic verify --platform mobile` emulates.
3
+ *
4
+ * Zero new dependencies: `playwright-core` — already the CLI's only browser dependency — ships
5
+ * the device registry, and the whole descriptor goes into `newContext` as Playwright documents.
6
+ * What it buys, in order of how much it matters: `isMobile`, which makes Chromium honour the
7
+ * page's `meta viewport` tag so the engine lays out at phone width instead of a desktop
8
+ * fallback; `hasTouch`, without which the start interaction cannot tap; the viewport and
9
+ * `screen` sizes game code reads directly; and `deviceScaleFactor` 3, which is what actually
10
+ * exercises the engine's mobile pixel-ratio clamp (`RenderPixelRatio.ts` caps mobile at 2) — an
11
+ * emulation at DPR 1 would never reach it.
12
+ *
13
+ * The descriptor's iOS `userAgent` rides along deliberately rather than being stripped. The
14
+ * engine decides mobile-ness from `?platform=mobile` (`isMobileRuntime.ts`), so the UA is not
15
+ * what makes the run mobile — but plenty of game and engine code sniffs the UA directly rather
16
+ * than asking the engine, which is the same reason `installForcedMobileTouchShim` exists at all.
17
+ * A run whose UA says desktop while everything else says phone would make those sniffs disagree
18
+ * with the mode under test. Consistency is what is wanted here, not literal truth about which
19
+ * binary is running. (`defaultBrowserType: 'webkit'` is inert — only Playwright's test runner
20
+ * reads it; `newContext` does not.)
21
+ */
22
+ import { devices } from 'playwright-core';
23
+ import type { MobileOrientation } from '../project/platform-declaration.js';
24
+ /** Context options for a phone run — a `playwright-core` device descriptor, verbatim. */
25
+ export type VerifyDeviceOptions = (typeof devices)[keyof typeof devices];
26
+ /**
27
+ * Which registry entries. A mid-size modern phone: narrow enough that a HUD laid out for a
28
+ * desktop viewport visibly breaks, and common enough that its dimensions are what most players
29
+ * actually hold.
30
+ *
31
+ * The registry's own `landscape` variant rather than swapping the portrait one's axes: those are
32
+ * Playwright's measured numbers for a rotated phone (750x340 viewport, screen still reported
33
+ * portrait), and a hand-rotated 664x390 would only be a guess at the same thing.
34
+ */
35
+ export declare const MOBILE_DEVICE_NAMES: Record<MobileOrientation, string>;
36
+ /**
37
+ * The device a mobile check runs on, oriented the way the game asks to be played —
38
+ * `worldProfileData.mobileOrientation` in world.json, portrait when it says nothing. A
39
+ * landscape-locked game verified in a portrait window is not being verified.
40
+ */
41
+ export declare function mobileContextOptions(orientation: MobileOrientation): VerifyDeviceOptions;
42
+ /** `iPhone 14 (390x664, DPR 3)` — what the run tells the creator it emulated. */
43
+ export declare function describeMobileDevice(orientation: MobileOrientation): string;
@@ -0,0 +1,59 @@
1
+ /**
2
+ * The phone `bitmagic verify --platform mobile` emulates.
3
+ *
4
+ * Zero new dependencies: `playwright-core` — already the CLI's only browser dependency — ships
5
+ * the device registry, and the whole descriptor goes into `newContext` as Playwright documents.
6
+ * What it buys, in order of how much it matters: `isMobile`, which makes Chromium honour the
7
+ * page's `meta viewport` tag so the engine lays out at phone width instead of a desktop
8
+ * fallback; `hasTouch`, without which the start interaction cannot tap; the viewport and
9
+ * `screen` sizes game code reads directly; and `deviceScaleFactor` 3, which is what actually
10
+ * exercises the engine's mobile pixel-ratio clamp (`RenderPixelRatio.ts` caps mobile at 2) — an
11
+ * emulation at DPR 1 would never reach it.
12
+ *
13
+ * The descriptor's iOS `userAgent` rides along deliberately rather than being stripped. The
14
+ * engine decides mobile-ness from `?platform=mobile` (`isMobileRuntime.ts`), so the UA is not
15
+ * what makes the run mobile — but plenty of game and engine code sniffs the UA directly rather
16
+ * than asking the engine, which is the same reason `installForcedMobileTouchShim` exists at all.
17
+ * A run whose UA says desktop while everything else says phone would make those sniffs disagree
18
+ * with the mode under test. Consistency is what is wanted here, not literal truth about which
19
+ * binary is running. (`defaultBrowserType: 'webkit'` is inert — only Playwright's test runner
20
+ * reads it; `newContext` does not.)
21
+ */
22
+ import { devices } from 'playwright-core';
23
+ import { CliError } from '../errors.js';
24
+ /**
25
+ * Which registry entries. A mid-size modern phone: narrow enough that a HUD laid out for a
26
+ * desktop viewport visibly breaks, and common enough that its dimensions are what most players
27
+ * actually hold.
28
+ *
29
+ * The registry's own `landscape` variant rather than swapping the portrait one's axes: those are
30
+ * Playwright's measured numbers for a rotated phone (750x340 viewport, screen still reported
31
+ * portrait), and a hand-rotated 664x390 would only be a guess at the same thing.
32
+ */
33
+ export const MOBILE_DEVICE_NAMES = {
34
+ portrait: 'iPhone 14',
35
+ landscape: 'iPhone 14 landscape',
36
+ };
37
+ /**
38
+ * The device a mobile check runs on, oriented the way the game asks to be played —
39
+ * `worldProfileData.mobileOrientation` in world.json, portrait when it says nothing. A
40
+ * landscape-locked game verified in a portrait window is not being verified.
41
+ */
42
+ export function mobileContextOptions(orientation) {
43
+ const name = MOBILE_DEVICE_NAMES[orientation];
44
+ const device = devices[name];
45
+ if (device === undefined) {
46
+ // Only reachable if a playwright-core upgrade retires the entry. Say so plainly: an agent
47
+ // told "verification failed" would start editing game code over a missing device profile.
48
+ throw new CliError(`Playwright no longer ships a "${name}" device profile, so the mobile viewport cannot be `
49
+ + 'emulated. This is a CLI problem, not a problem with your game — report it.');
50
+ }
51
+ return device;
52
+ }
53
+ /** `iPhone 14 (390x664, DPR 3)` — what the run tells the creator it emulated. */
54
+ export function describeMobileDevice(orientation) {
55
+ const device = mobileContextOptions(orientation);
56
+ const { width, height } = device.viewport;
57
+ return `${MOBILE_DEVICE_NAMES[orientation]} (${width}x${height}, DPR ${device.deviceScaleFactor})`;
58
+ }
59
+ //# sourceMappingURL=device.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"device.js","sourceRoot":"","sources":["../../src/verify/device.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,OAAO,EAAE,OAAO,EAAE,MAAM,iBAAiB,CAAC;AAC1C,OAAO,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAC;AAMxC;;;;;;;;GAQG;AACH,MAAM,CAAC,MAAM,mBAAmB,GAAsC;IACpE,QAAQ,EAAE,WAAW;IACrB,SAAS,EAAE,qBAAqB;CACjC,CAAC;AAEF;;;;GAIG;AACH,MAAM,UAAU,oBAAoB,CAAC,WAA8B;IACjE,MAAM,IAAI,GAAG,mBAAmB,CAAC,WAAW,CAAC,CAAC;IAC9C,MAAM,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC7B,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;QACzB,0FAA0F;QAC1F,0FAA0F;QAC1F,MAAM,IAAI,QAAQ,CAChB,iCAAiC,IAAI,qDAAqD;cACtF,4EAA4E,CACjF,CAAC;IACJ,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,iFAAiF;AACjF,MAAM,UAAU,oBAAoB,CAAC,WAA8B;IACjE,MAAM,MAAM,GAAG,oBAAoB,CAAC,WAAW,CAAC,CAAC;IACjD,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,MAAM,CAAC,QAAQ,CAAC;IAC1C,OAAO,GAAG,mBAAmB,CAAC,WAAW,CAAC,KAAK,KAAK,IAAI,MAAM,SAAS,MAAM,CAAC,iBAAiB,GAAG,CAAC;AACrG,CAAC"}
@@ -1,6 +1,19 @@
1
+ /**
2
+ * `bitmagic verify --watch`: the warm inner loop.
3
+ *
4
+ * One-shot verify pays Chrome launch + full tsc build + vite spawn on every run — most of a
5
+ * minute before the game is even observed. The watch loop pays each of those once: `tsc --watch`
6
+ * keeps the build incremental, vite stays up (the command owns it, like one-shot), and one
7
+ * launched Chrome runs every iteration in a fresh browser context. What triggers an iteration is
8
+ * `editor/watch.ts`'s coordinator — the same debounce + compile gate `bitmagic dev` uses, so an
9
+ * agent's five-file edit burst becomes one re-verify, and a red build reports its type errors
10
+ * instead of wasting a browser run on the previous emit.
11
+ */
1
12
  import { type RendererChoice } from '../browser-gl.js';
2
13
  import type { Output } from '../output.js';
3
14
  import { type VerifyObservations } from './classify.js';
15
+ import type { VerifyPlatform } from './platform.js';
16
+ import type { MobileOrientation } from '../project/platform-declaration.js';
4
17
  /**
5
18
  * Runs verify iterations one at a time. A change that lands mid-iteration queues exactly one
6
19
  * follow-up — not one per change, because the follow-up will see all of them anyway.
@@ -29,14 +42,20 @@ export interface VerifyWatchOptions {
29
42
  /** Path to the project's `tsc` binary (for `tsc --watch`). */
30
43
  tsc: string;
31
44
  artifactDir: string;
32
- consolePath: string;
33
- screenshotPath: string;
34
45
  /** The vite dev server's port — already up; the loop only builds URLs from it. */
35
46
  port: number;
36
47
  renderer: RendererChoice;
37
48
  settleMs: number;
38
49
  /** Skip the screenshot pipeline (default in watch mode). */
39
50
  fast: boolean;
51
+ /**
52
+ * Which platforms each iteration covers, lead first. Two platforms roughly double an
53
+ * iteration: Chrome launch — the fixed cost the whole watch loop exists to amortise — is
54
+ * still paid once and shared, but the page load and the adaptive settle happen per platform.
55
+ */
56
+ platforms: VerifyPlatform[];
57
+ orientation: MobileOrientation;
58
+ mobilePrimary: boolean;
40
59
  output: Output;
41
60
  describeRunState: (observations: VerifyObservations) => string;
42
61
  }