@datamoc/mw_games 0.26.1 → 0.30.0
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/CHANGELOG.md +134 -0
- package/README.md +2 -1
- package/api-surface.json +564 -0
- package/dist/ai/Suggest.d.ts +54 -0
- package/dist/ai/Suggest.d.ts.map +1 -0
- package/dist/ai/Suggest.js +48 -0
- package/dist/ai/Suggest.js.map +1 -0
- package/dist/ai/index.d.ts +2 -0
- package/dist/ai/index.d.ts.map +1 -1
- package/dist/ai/index.js +1 -0
- package/dist/ai/index.js.map +1 -1
- package/dist/core/Input.d.ts +7 -0
- package/dist/core/Input.d.ts.map +1 -1
- package/dist/core/Input.js +9 -0
- package/dist/core/Input.js.map +1 -1
- package/dist/core/Random.d.ts +32 -5
- package/dist/core/Random.d.ts.map +1 -1
- package/dist/core/Random.js.map +1 -1
- package/dist/core/Replay.d.ts +28 -4
- package/dist/core/Replay.d.ts.map +1 -1
- package/dist/core/Replay.js +38 -9
- package/dist/core/Replay.js.map +1 -1
- package/dist/core/ReplayFile.d.ts +197 -0
- package/dist/core/ReplayFile.d.ts.map +1 -0
- package/dist/core/ReplayFile.js +257 -0
- package/dist/core/ReplayFile.js.map +1 -0
- package/dist/core/index.d.ts +4 -2
- package/dist/core/index.d.ts.map +1 -1
- package/dist/core/index.js +2 -1
- package/dist/core/index.js.map +1 -1
- package/dist/mw_games.global.js +113 -113
- package/dist/simulation/Training.d.ts +77 -0
- package/dist/simulation/Training.d.ts.map +1 -1
- package/dist/simulation/Training.js +87 -0
- package/dist/simulation/Training.js.map +1 -1
- package/dist/simulation/index.d.ts +2 -2
- package/dist/simulation/index.d.ts.map +1 -1
- package/dist/simulation/index.js +1 -1
- package/dist/simulation/index.js.map +1 -1
- package/dist/two-d/render/Beam.d.ts +136 -0
- package/dist/two-d/render/Beam.d.ts.map +1 -0
- package/dist/two-d/render/Beam.js +203 -0
- package/dist/two-d/render/Beam.js.map +1 -0
- package/dist/two-d/render/Flights.d.ts +90 -0
- package/dist/two-d/render/Flights.d.ts.map +1 -0
- package/dist/two-d/render/Flights.js +135 -0
- package/dist/two-d/render/Flights.js.map +1 -0
- package/dist/two-d/render/Particles.d.ts +57 -0
- package/dist/two-d/render/Particles.d.ts.map +1 -1
- package/dist/two-d/render/Particles.js +68 -1
- package/dist/two-d/render/Particles.js.map +1 -1
- package/dist/two-d/render/index.d.ts +5 -1
- package/dist/two-d/render/index.d.ts.map +1 -1
- package/dist/two-d/render/index.js +2 -0
- package/dist/two-d/render/index.js.map +1 -1
- package/dist/two-d/ui/MessageLog.d.ts +28 -0
- package/dist/two-d/ui/MessageLog.d.ts.map +1 -1
- package/dist/two-d/ui/MessageLog.js +23 -6
- package/dist/two-d/ui/MessageLog.js.map +1 -1
- package/dist/two-d/ui/OnScreenKeyboard.d.ts +91 -0
- package/dist/two-d/ui/OnScreenKeyboard.d.ts.map +1 -0
- package/dist/two-d/ui/OnScreenKeyboard.js +109 -0
- package/dist/two-d/ui/OnScreenKeyboard.js.map +1 -0
- package/dist/two-d/ui/TextPrompt.d.ts +122 -0
- package/dist/two-d/ui/TextPrompt.d.ts.map +1 -0
- package/dist/two-d/ui/TextPrompt.js +236 -0
- package/dist/two-d/ui/TextPrompt.js.map +1 -0
- package/dist/two-d/ui/index.d.ts +6 -2
- package/dist/two-d/ui/index.d.ts.map +1 -1
- package/dist/two-d/ui/index.js +3 -1
- package/dist/two-d/ui/index.js.map +1 -1
- package/dist/version.d.ts +1 -1
- package/dist/version.js +1 -1
- package/package.json +1 -1
- package/sbom.cdx.json +6 -6
- package/tools/browser-driver.d.mts +30 -0
- package/tools/browser-driver.mjs +146 -3
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"TextPrompt.js","sourceRoot":"","sources":["../../../src/two-d/ui/TextPrompt.ts"],"names":[],"mappings":"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"}
|
package/dist/two-d/ui/index.d.ts
CHANGED
|
@@ -2,8 +2,8 @@ export { theme, setTheme, defaultTheme, highContrastTheme, themeChanged } from '
|
|
|
2
2
|
export type { Theme } from './theme.ts';
|
|
3
3
|
export { Label } from './Label.ts';
|
|
4
4
|
export type { LabelOptions } from './Label.ts';
|
|
5
|
-
export { MessageLog, linesToDrop } from './MessageLog.ts';
|
|
6
|
-
export type { MessageLevel, MessageLogOptions } from './MessageLog.ts';
|
|
5
|
+
export { MessageLog, linesToDrop, takeLastEntries } from './MessageLog.ts';
|
|
6
|
+
export type { MessageLogEntry, MessageLevel, MessageLogOptions } from './MessageLog.ts';
|
|
7
7
|
export { fitWindowZoom, sharpenText } from './TextSharpness.ts';
|
|
8
8
|
export { RichLabel } from './RichLabel.ts';
|
|
9
9
|
export type { RichLabelOptions } from './RichLabel.ts';
|
|
@@ -30,6 +30,10 @@ export { TabbedList } from './TabbedList.ts';
|
|
|
30
30
|
export type { ListTab, TabbedListOptions } from './TabbedList.ts';
|
|
31
31
|
export { MessageBox } from './MessageBox.ts';
|
|
32
32
|
export type { MessageBoxOptions, MessagePage, Choice } from './MessageBox.ts';
|
|
33
|
+
export { TextPrompt } from './TextPrompt.ts';
|
|
34
|
+
export { OnScreenKeyboard, UPPERCASE_KEYBOARD } from './OnScreenKeyboard.ts';
|
|
35
|
+
export type { KeyboardKey, KeyboardLayout } from './OnScreenKeyboard.ts';
|
|
36
|
+
export type { TextPromptOptions } from './TextPrompt.ts';
|
|
33
37
|
export { VerticalLabel, layoutVertical } from './VerticalLabel.ts';
|
|
34
38
|
export type { VerticalLabelOptions, VerticalLayoutOptions, GlyphLayout } from './VerticalLabel.ts';
|
|
35
39
|
export { Slider, sliderFraction, sliderValueAt } from './Slider.ts';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/two-d/ui/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,YAAY,EAAE,iBAAiB,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAC5F,YAAY,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AAExC,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AACnC,YAAY,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAE/C,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/two-d/ui/index.ts"],"names":[],"mappings":"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"}
|
package/dist/two-d/ui/index.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
export { theme, setTheme, defaultTheme, highContrastTheme, themeChanged } from './theme.js';
|
|
2
2
|
export { Label } from './Label.js';
|
|
3
|
-
export { MessageLog, linesToDrop } from './MessageLog.js';
|
|
3
|
+
export { MessageLog, linesToDrop, takeLastEntries } from './MessageLog.js';
|
|
4
4
|
export { fitWindowZoom, sharpenText } from './TextSharpness.js';
|
|
5
5
|
export { RichLabel } from './RichLabel.js';
|
|
6
6
|
export { MarkupText } from './MarkupText.js';
|
|
@@ -15,6 +15,8 @@ export { ListView } from './ListView.js';
|
|
|
15
15
|
export { IconGrid } from './IconGrid.js';
|
|
16
16
|
export { TabbedList } from './TabbedList.js';
|
|
17
17
|
export { MessageBox } from './MessageBox.js';
|
|
18
|
+
export { TextPrompt } from './TextPrompt.js';
|
|
19
|
+
export { OnScreenKeyboard, UPPERCASE_KEYBOARD } from './OnScreenKeyboard.js';
|
|
18
20
|
export { VerticalLabel, layoutVertical } from './VerticalLabel.js';
|
|
19
21
|
export { Slider, sliderFraction, sliderValueAt } from './Slider.js';
|
|
20
22
|
export { Checkbox } from './Checkbox.js';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/two-d/ui/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,YAAY,EAAE,iBAAiB,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAG5F,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AAGnC,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/two-d/ui/index.ts"],"names":[],"mappings":"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"}
|
package/dist/version.d.ts
CHANGED
|
@@ -9,5 +9,5 @@
|
|
|
9
9
|
* this from `package.json` automatically, chosen because this project's own build already
|
|
10
10
|
* has no step before `tsc`/`vite` that this would need to run ahead of.
|
|
11
11
|
*/
|
|
12
|
-
export declare const version = "0.
|
|
12
|
+
export declare const version = "0.30.0";
|
|
13
13
|
//# sourceMappingURL=version.d.ts.map
|
package/dist/version.js
CHANGED
|
@@ -9,5 +9,5 @@
|
|
|
9
9
|
* this from `package.json` automatically, chosen because this project's own build already
|
|
10
10
|
* has no step before `tsc`/`vite` that this would need to run ahead of.
|
|
11
11
|
*/
|
|
12
|
-
export const version = '0.
|
|
12
|
+
export const version = '0.30.0';
|
|
13
13
|
//# sourceMappingURL=version.js.map
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@datamoc/mw_games",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.30.0",
|
|
4
4
|
"description": "A local-file game framework: renderer-free game logic, drawn through PixiJS in 2D or Babylon.js in 3D, with mobile and desktop packaging.",
|
|
5
5
|
"license": "MPL-2.0",
|
|
6
6
|
"repository": {
|
package/sbom.cdx.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"bomFormat": "CycloneDX",
|
|
3
3
|
"specVersion": "1.6",
|
|
4
|
-
"serialNumber": "urn:uuid:
|
|
4
|
+
"serialNumber": "urn:uuid:c01a2e88-ae91-5bd7-9d53-aa734fcd76de",
|
|
5
5
|
"version": 1,
|
|
6
6
|
"metadata": {
|
|
7
7
|
"tools": {
|
|
@@ -10,16 +10,16 @@
|
|
|
10
10
|
"type": "application",
|
|
11
11
|
"group": "datamoc",
|
|
12
12
|
"name": "tools/sbom.mjs",
|
|
13
|
-
"version": "0.
|
|
13
|
+
"version": "0.30.0"
|
|
14
14
|
}
|
|
15
15
|
]
|
|
16
16
|
},
|
|
17
17
|
"component": {
|
|
18
18
|
"type": "library",
|
|
19
|
-
"bom-ref": "pkg:npm/%40datamoc/mw_games@0.
|
|
19
|
+
"bom-ref": "pkg:npm/%40datamoc/mw_games@0.30.0",
|
|
20
20
|
"name": "@datamoc/mw_games",
|
|
21
|
-
"version": "0.
|
|
22
|
-
"purl": "pkg:npm/%40datamoc/mw_games@0.
|
|
21
|
+
"version": "0.30.0",
|
|
22
|
+
"purl": "pkg:npm/%40datamoc/mw_games@0.30.0",
|
|
23
23
|
"description": "A local-file game framework: renderer-free game logic, drawn through PixiJS in 2D or Babylon.js in 3D, with mobile and desktop packaging.",
|
|
24
24
|
"licenses": [
|
|
25
25
|
{
|
|
@@ -4601,7 +4601,7 @@
|
|
|
4601
4601
|
]
|
|
4602
4602
|
},
|
|
4603
4603
|
{
|
|
4604
|
-
"ref": "pkg:npm/%40datamoc/mw_games@0.
|
|
4604
|
+
"ref": "pkg:npm/%40datamoc/mw_games@0.30.0",
|
|
4605
4605
|
"dependsOn": [
|
|
4606
4606
|
"pkg:npm/%40babylonjs/core@9.29.0",
|
|
4607
4607
|
"pkg:npm/%40babylonjs/loaders@9.29.0",
|
|
@@ -1,6 +1,12 @@
|
|
|
1
1
|
export interface ServedDir {
|
|
2
2
|
url: string;
|
|
3
3
|
port: number;
|
|
4
|
+
/**
|
|
5
|
+
* Presses and releases one key through the engine's trusted input channel (P41): a
|
|
6
|
+
* named key from the table (`Enter`, `Escape`, `ArrowUp`, ...), or a single character
|
|
7
|
+
* that types itself. `holdMs` parks between the down and the up.
|
|
8
|
+
*/
|
|
9
|
+
press(key: string, holdMs?: number): Promise<void>;
|
|
4
10
|
close(): Promise<void>;
|
|
5
11
|
}
|
|
6
12
|
|
|
@@ -42,6 +48,15 @@ export interface DriveOptions {
|
|
|
42
48
|
chromeArgs?: string[];
|
|
43
49
|
firefoxArgs?: string[];
|
|
44
50
|
profileDir?: string;
|
|
51
|
+
/**
|
|
52
|
+
* The inner page viewport, applied through each engine's protocol call (CDP
|
|
53
|
+
* `Emulation.setDeviceMetricsOverride`, BiDi `browsingContext.setViewport`) rather
|
|
54
|
+
* than window flags, whose outer size is what a consumer's compensation kept
|
|
55
|
+
* rediscovering (P41).
|
|
56
|
+
*/
|
|
57
|
+
viewport?: { width: number; height: number };
|
|
58
|
+
/** show the browser window instead of running headless, for watching a driven run */
|
|
59
|
+
headed?: boolean;
|
|
45
60
|
}
|
|
46
61
|
|
|
47
62
|
/** the readiness predicate browser-smoke's waitForGame waits on, as page JS */
|
|
@@ -65,6 +80,21 @@ export function buildTapSequence(x: number, y: number): CdpMouseEvent[];
|
|
|
65
80
|
/** the BiDi input.performActions pointer half of a tap, at CSS pixels */
|
|
66
81
|
export function buildPointerActions(x: number, y: number): BidiPointerAction[];
|
|
67
82
|
|
|
83
|
+
/** everything a named key's press needs per protocol: DOM `code`, Windows VK, the typed character, the WebDriver key value; null for the unmapped */
|
|
84
|
+
export function keyInfoOf(key: string): { code: string; vk: number; bidi: string; text?: string } | null;
|
|
85
|
+
|
|
86
|
+
/** the CDP `Input.dispatchKeyEvent` pair one press is */
|
|
87
|
+
export function cdpKeySequence(key: string): unknown[] | null;
|
|
88
|
+
|
|
89
|
+
/** the BiDi `input.performActions` key sequence one press is, with the hold as a pause */
|
|
90
|
+
export function bidiKeyActions(key: string, holdMs?: number): unknown[] | null;
|
|
91
|
+
|
|
92
|
+
/**
|
|
93
|
+
* The in-page synthetic pointer sequence a tap is, as page JS - the Firefox tap path,
|
|
94
|
+
* because the BiDi pointer actions do not reach Pixi 8's canvas EventSystem (P41).
|
|
95
|
+
*/
|
|
96
|
+
export function pageTapSource(x: number, y: number): string;
|
|
97
|
+
|
|
68
98
|
/** unwraps a WebDriver BiDi remote value into plain JSON */
|
|
69
99
|
export function unwrapRemoteValue(node: unknown): unknown;
|
|
70
100
|
|
package/tools/browser-driver.mjs
CHANGED
|
@@ -146,6 +146,112 @@ export function buildTapSequence(x, y) {
|
|
|
146
146
|
];
|
|
147
147
|
}
|
|
148
148
|
|
|
149
|
+
/**
|
|
150
|
+
* The named keys a game binds, with everything each input protocol needs: the
|
|
151
|
+
* DOM `code`, the Windows virtual-key code CDP wants, the character the key types
|
|
152
|
+
* (so `press('a')` reaches `onText`), and the WebDriver key value BiDi's key actions
|
|
153
|
+
* speak (the raw DOM key for printables, the `\uE0xx` control codes for the rest).
|
|
154
|
+
* Pure data so the suite can pin every mapping without a browser.
|
|
155
|
+
*/
|
|
156
|
+
const NAMED_KEYS = {
|
|
157
|
+
Enter: { code: 'Enter', vk: 13, bidi: '\uE007' },
|
|
158
|
+
Escape: { code: 'Escape', vk: 27, bidi: '\uE00B' },
|
|
159
|
+
Tab: { code: 'Tab', vk: 9, bidi: '\uE004' },
|
|
160
|
+
Backspace: { code: 'Backspace', vk: 8, bidi: '\uE003' },
|
|
161
|
+
Delete: { code: 'Delete', vk: 46, bidi: '\uE017' },
|
|
162
|
+
ArrowUp: { code: 'ArrowUp', vk: 38, bidi: '\uE013' },
|
|
163
|
+
ArrowDown: { code: 'ArrowDown', vk: 40, bidi: '\uE015' },
|
|
164
|
+
ArrowLeft: { code: 'ArrowLeft', vk: 37, bidi: '\uE012' },
|
|
165
|
+
ArrowRight: { code: 'ArrowRight', vk: 39, bidi: '\uE014' },
|
|
166
|
+
Space: { code: 'Space', vk: 32, bidi: ' ', text: ' ' },
|
|
167
|
+
Shift: { code: 'ShiftLeft', vk: 16, bidi: '\uE008' },
|
|
168
|
+
F5: { code: 'F5', vk: 116, bidi: '\uE035' },
|
|
169
|
+
F9: { code: 'F9', vk: 120, bidi: '\uE039' },
|
|
170
|
+
};
|
|
171
|
+
|
|
172
|
+
/**
|
|
173
|
+
* Everything `press(key)` needs for one key: a printable character reads its own
|
|
174
|
+
* code off its spelling (`a` -> `KeyA`, `5` -> `Digit5`), a named key comes from the
|
|
175
|
+
* table, and anything else has no mapping (the caller hears `null`, not a guess).
|
|
176
|
+
*/
|
|
177
|
+
export function keyInfoOf(key) {
|
|
178
|
+
if (NAMED_KEYS[key]) return NAMED_KEYS[key];
|
|
179
|
+
if (key.length === 1) {
|
|
180
|
+
const lower = key.toLowerCase();
|
|
181
|
+
const code =
|
|
182
|
+
lower >= 'a' && lower <= 'z'
|
|
183
|
+
? `Key${key.toUpperCase()}`
|
|
184
|
+
: lower >= '0' && lower <= '9'
|
|
185
|
+
? `Digit${key}`
|
|
186
|
+
: null;
|
|
187
|
+
if (!code) return null;
|
|
188
|
+
return { code, vk: key.toUpperCase().charCodeAt(0), bidi: key, text: key };
|
|
189
|
+
}
|
|
190
|
+
return null;
|
|
191
|
+
}
|
|
192
|
+
|
|
193
|
+
/**
|
|
194
|
+
* The CDP `Input.dispatchKeyEvent` pair a press is: `keyDown` carries the character a
|
|
195
|
+
* text-producing key types, then `keyUp`. Pure so the suite pins the shape.
|
|
196
|
+
*/
|
|
197
|
+
export function cdpKeySequence(key) {
|
|
198
|
+
const info = keyInfoOf(key);
|
|
199
|
+
if (!info) return null;
|
|
200
|
+
return [
|
|
201
|
+
{
|
|
202
|
+
type: 'keyDown',
|
|
203
|
+
key,
|
|
204
|
+
code: info.code,
|
|
205
|
+
windowsVirtualKeyCode: info.vk,
|
|
206
|
+
...(info.text ? { text: info.text } : {}),
|
|
207
|
+
},
|
|
208
|
+
{ type: 'keyUp', key, code: info.code, windowsVirtualKeyCode: info.vk },
|
|
209
|
+
];
|
|
210
|
+
}
|
|
211
|
+
|
|
212
|
+
/**
|
|
213
|
+
* The BiDi `input.performActions` key sequence a press is: `keyDown`, a pause of
|
|
214
|
+
* the hold, `keyUp`, speaking the WebDriver key values. Pure for the same reason.
|
|
215
|
+
*/
|
|
216
|
+
export function bidiKeyActions(key, holdMs = 60) {
|
|
217
|
+
const info = keyInfoOf(key);
|
|
218
|
+
if (!info) return null;
|
|
219
|
+
return [
|
|
220
|
+
{
|
|
221
|
+
type: 'key',
|
|
222
|
+
id: 'mwg-keyboard',
|
|
223
|
+
actions: [
|
|
224
|
+
{ type: 'keyDown', value: info.bidi },
|
|
225
|
+
{ type: 'pause', duration: holdMs },
|
|
226
|
+
{ type: 'keyUp', value: info.bidi },
|
|
227
|
+
],
|
|
228
|
+
},
|
|
229
|
+
];
|
|
230
|
+
}
|
|
231
|
+
|
|
232
|
+
/**
|
|
233
|
+
* The in-page pointer sequence a tap is, as page JS: a full synthetic
|
|
234
|
+
* move/press/release (plus the click it composes to) at CSS pixels with the
|
|
235
|
+
* pointer identity a real mouse carries. This is the Firefox tap path, because
|
|
236
|
+
* the WebDriver BiDi `input.performActions` pointer half does not reach Pixi 8's
|
|
237
|
+
* canvas EventSystem (measured by the pixel-dungeon port: a title-screen button
|
|
238
|
+
* does not advance; the identical in-page dispatch does), and every Pixi consumer
|
|
239
|
+
* on Firefox would otherwise rediscover that. `buildPointerActions` stays exported
|
|
240
|
+
* for a consumer that wants the trusted sequence anyway.
|
|
241
|
+
*/
|
|
242
|
+
export function pageTapSource(x, y) {
|
|
243
|
+
return `(() => {
|
|
244
|
+
const canvas = document.querySelector("canvas");
|
|
245
|
+
const rect = canvas.getBoundingClientRect();
|
|
246
|
+
const base = { bubbles: true, cancelable: true, composed: true, pointerId: 1, pointerType: "mouse", isPrimary: true, button: 0, clientX: ${x}, clientY: ${y} };
|
|
247
|
+
canvas.dispatchEvent(new PointerEvent("pointermove", { ...base, buttons: 0 }));
|
|
248
|
+
canvas.dispatchEvent(new PointerEvent("pointerdown", { ...base, buttons: 1 }));
|
|
249
|
+
canvas.dispatchEvent(new PointerEvent("pointerup", { ...base, buttons: 0 }));
|
|
250
|
+
canvas.dispatchEvent(new MouseEvent("click", { bubbles: true, cancelable: true, composed: true, button: 0, buttons: 0, clientX: ${x}, clientY: ${y} }));
|
|
251
|
+
return { x: rect.x, y: rect.y, w: rect.width, h: rect.height };
|
|
252
|
+
})()`;
|
|
253
|
+
}
|
|
254
|
+
|
|
149
255
|
/**
|
|
150
256
|
* Unwraps a WebDriver BiDi remote value into plain JSON: primitives read off
|
|
151
257
|
* `.value`, arrays unwrap element-wise, objects/maps unwrap their key/value pairs,
|
|
@@ -417,7 +523,7 @@ export async function driveChrome(options = {}) {
|
|
|
417
523
|
const child = spawn(
|
|
418
524
|
executable,
|
|
419
525
|
[
|
|
420
|
-
'--headless',
|
|
526
|
+
...(options.headed ? [] : ['--headless']),
|
|
421
527
|
'--no-first-run',
|
|
422
528
|
'--no-default-browser-check',
|
|
423
529
|
'--disable-extensions',
|
|
@@ -451,6 +557,18 @@ export async function driveChrome(options = {}) {
|
|
|
451
557
|
await cdp.send('Runtime.enable');
|
|
452
558
|
await cdp.send('Log.enable');
|
|
453
559
|
|
|
560
|
+
//P41: the inner viewport, applied through the protocol rather than window flags -
|
|
561
|
+
//`--window-size` is the OUTER size (22x98 of window chrome on this build), so every
|
|
562
|
+
//consumer that compensated the flags was drift-fragile across browser updates.
|
|
563
|
+
if (options.viewport) {
|
|
564
|
+
await cdp.send('Emulation.setDeviceMetricsOverride', {
|
|
565
|
+
width: options.viewport.width,
|
|
566
|
+
height: options.viewport.height,
|
|
567
|
+
deviceScaleFactor: 1,
|
|
568
|
+
mobile: false,
|
|
569
|
+
});
|
|
570
|
+
}
|
|
571
|
+
|
|
454
572
|
let closed = false;
|
|
455
573
|
const evaluate = async (expression, awaitPromise = false) => {
|
|
456
574
|
const { result } = await cdp.send('Runtime.evaluate', {
|
|
@@ -480,6 +598,13 @@ export async function driveChrome(options = {}) {
|
|
|
480
598
|
await cdp.send('Input.dispatchMouseEvent', event);
|
|
481
599
|
}
|
|
482
600
|
},
|
|
601
|
+
/** presses and releases one key through Chrome's trusted input channel (P41) */
|
|
602
|
+
press: async (key, holdMs = 60) => {
|
|
603
|
+
const sequence = cdpKeySequence(key);
|
|
604
|
+
if (!sequence) throw new Error(`no key mapping for '${key}'`);
|
|
605
|
+
for (const event of sequence) await cdp.send('Input.dispatchKeyEvent', event);
|
|
606
|
+
await new Promise((tick) => setTimeout(tick, holdMs));
|
|
607
|
+
},
|
|
483
608
|
screenshot: async () => {
|
|
484
609
|
const { data } = await cdp.send('Page.captureScreenshot', { format: 'png', fromSurface: true });
|
|
485
610
|
return Buffer.from(data, 'base64');
|
|
@@ -542,7 +667,7 @@ export async function driveFirefox(options = {}) {
|
|
|
542
667
|
const child = spawn(
|
|
543
668
|
executable,
|
|
544
669
|
[
|
|
545
|
-
'--headless',
|
|
670
|
+
...(options.headed ? [] : ['--headless']),
|
|
546
671
|
'--no-remote',
|
|
547
672
|
'--profile',
|
|
548
673
|
profile,
|
|
@@ -590,6 +715,16 @@ export async function driveFirefox(options = {}) {
|
|
|
590
715
|
await send('session.subscribe', { events: ['log.entryAdded'] }, sessionId);
|
|
591
716
|
const { context } = await send('browsingContext.create', { type: 'tab' }, sessionId);
|
|
592
717
|
|
|
718
|
+
//P41: the inner viewport, through the protocol (Firefox's --height flag lands 85
|
|
719
|
+
//short of the inner size, which is what the window-flag compensation measured).
|
|
720
|
+
if (options.viewport) {
|
|
721
|
+
await send(
|
|
722
|
+
'browsingContext.setViewport',
|
|
723
|
+
{ context, viewport: { width: options.viewport.width, height: options.viewport.height } },
|
|
724
|
+
sessionId,
|
|
725
|
+
);
|
|
726
|
+
}
|
|
727
|
+
|
|
593
728
|
const evaluate = async (expression, awaitPromise = false) => {
|
|
594
729
|
const outer = await send(
|
|
595
730
|
'script.evaluate',
|
|
@@ -616,7 +751,15 @@ export async function driveFirefox(options = {}) {
|
|
|
616
751
|
);
|
|
617
752
|
const x = Math.round(point.x + point.w * xFraction);
|
|
618
753
|
const y = Math.round(point.y + point.h * yFraction);
|
|
619
|
-
|
|
754
|
+
//P41: the in-page synthetic sequence (see pageTapSource) - the BiDi pointer
|
|
755
|
+
//actions never reach Pixi 8's EventSystem, and this is the measured-working path.
|
|
756
|
+
await evaluate(pageTapSource(x, y), true);
|
|
757
|
+
},
|
|
758
|
+
/** presses and releases one key through WebDriver's key actions (P41) */
|
|
759
|
+
press: async (key, holdMs = 60) => {
|
|
760
|
+
const actions = bidiKeyActions(key, holdMs);
|
|
761
|
+
if (!actions) throw new Error(`no key mapping for '${key}'`);
|
|
762
|
+
await send('input.performActions', { context, actions }, sessionId);
|
|
620
763
|
},
|
|
621
764
|
screenshot: async () => {
|
|
622
765
|
const { data } = await send('browsingContext.captureScreenshot', { context }, sessionId);
|