@astur-mobile/core 0.5.0-beta.3 → 0.5.0-beta.5

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.
@@ -0,0 +1,42 @@
1
+ import { PNG } from 'pngjs';
2
+ import type { Bounds } from '@astur-mobile/protocol';
3
+ /**
4
+ * The colour painted over masked regions. Magenta because nothing in a real UI
5
+ * is this colour by accident, so a mask that lands in the wrong place is
6
+ * obvious in the attached image rather than silently hiding a regression.
7
+ */
8
+ export declare const MASK_COLOR: {
9
+ r: number;
10
+ g: number;
11
+ b: number;
12
+ };
13
+ export interface ImageSize {
14
+ width: number;
15
+ height: number;
16
+ }
17
+ export declare function decodePng(image: Buffer): PNG;
18
+ export declare function encodePng(png: PNG): Buffer;
19
+ export declare function pngSize(image: Buffer): ImageSize;
20
+ /**
21
+ * How many screenshot pixels there are per unit of element bounds.
22
+ *
23
+ * The two are not always the same space. Android reports bounds in physical
24
+ * pixels, so the factor is 1. iOS reports points while its screenshot is in
25
+ * pixels, so a 3x device reports 393x852 against a 1178x2556 image.
26
+ *
27
+ * Derived from the height rather than an average of both axes: the width often
28
+ * disagrees by a pixel (393 * 3 is 1179, but the image is 1178 wide) because
29
+ * the screenshot is rounded, and averaging that in skews every crop slightly.
30
+ */
31
+ export declare function screenshotScale(image: ImageSize, viewport: Bounds | ImageSize): number;
32
+ /**
33
+ * Element bounds converted into screenshot pixels and clamped to the image.
34
+ *
35
+ * Clamping is not defensive tidying — it is required. Rounding means an element
36
+ * flush against the right edge can compute one pixel wider than the screenshot,
37
+ * and a crop past the edge throws or produces a torn image.
38
+ */
39
+ export declare function toPixelRect(bounds: Bounds, scale: number, image: ImageSize): Bounds;
40
+ export declare function cropPng(image: Buffer, rect: Bounds): Buffer;
41
+ export declare function maskPng(image: Buffer, rects: Bounds[]): Buffer;
42
+ //# sourceMappingURL=image.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"image.d.ts","sourceRoot":"","sources":["../src/image.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,OAAO,CAAC;AAC5B,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,wBAAwB,CAAC;AAGrD;;;;GAIG;AACH,eAAO,MAAM,UAAU;;;;CAAgC,CAAC;AAExD,MAAM,WAAW,SAAS;IACxB,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,wBAAgB,SAAS,CAAC,KAAK,EAAE,MAAM,GAAG,GAAG,CAE5C;AAED,wBAAgB,SAAS,CAAC,GAAG,EAAE,GAAG,GAAG,MAAM,CAE1C;AAED,wBAAgB,OAAO,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,CAahD;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,eAAe,CAAC,KAAK,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,GAAG,SAAS,GAAG,MAAM,CAMtF;AAED;;;;;;GAMG;AACH,wBAAgB,WAAW,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,SAAS,GAAG,MAAM,CAYnF;AAED,wBAAgB,OAAO,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,CAQ3D;AAED,wBAAgB,OAAO,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,MAAM,CAqB9D"}
package/dist/image.js ADDED
@@ -0,0 +1,87 @@
1
+ import { PNG } from 'pngjs';
2
+ import { AsturError } from './errors.js';
3
+ /**
4
+ * The colour painted over masked regions. Magenta because nothing in a real UI
5
+ * is this colour by accident, so a mask that lands in the wrong place is
6
+ * obvious in the attached image rather than silently hiding a regression.
7
+ */
8
+ export const MASK_COLOR = { r: 0xff, g: 0x00, b: 0xff };
9
+ export function decodePng(image) {
10
+ return PNG.sync.read(image);
11
+ }
12
+ export function encodePng(png) {
13
+ return PNG.sync.write(png);
14
+ }
15
+ export function pngSize(image) {
16
+ // The IHDR chunk is fixed-position, so this avoids decoding megabytes of
17
+ // pixels just to read two numbers — but that also means a non-PNG buffer
18
+ // reads as garbage or throws a bare RangeError, so check first and say what
19
+ // is actually wrong.
20
+ if (image.length < 24) {
21
+ throw new AsturError('INVALID_SCREENSHOT', `Expected a PNG screenshot but received ${image.length} bytes.`);
22
+ }
23
+ return { width: image.readUInt32BE(16), height: image.readUInt32BE(20) };
24
+ }
25
+ /**
26
+ * How many screenshot pixels there are per unit of element bounds.
27
+ *
28
+ * The two are not always the same space. Android reports bounds in physical
29
+ * pixels, so the factor is 1. iOS reports points while its screenshot is in
30
+ * pixels, so a 3x device reports 393x852 against a 1178x2556 image.
31
+ *
32
+ * Derived from the height rather than an average of both axes: the width often
33
+ * disagrees by a pixel (393 * 3 is 1179, but the image is 1178 wide) because
34
+ * the screenshot is rounded, and averaging that in skews every crop slightly.
35
+ */
36
+ export function screenshotScale(image, viewport) {
37
+ if (!viewport.height) {
38
+ return 1;
39
+ }
40
+ return image.height / viewport.height;
41
+ }
42
+ /**
43
+ * Element bounds converted into screenshot pixels and clamped to the image.
44
+ *
45
+ * Clamping is not defensive tidying — it is required. Rounding means an element
46
+ * flush against the right edge can compute one pixel wider than the screenshot,
47
+ * and a crop past the edge throws or produces a torn image.
48
+ */
49
+ export function toPixelRect(bounds, scale, image) {
50
+ const x = Math.max(0, Math.round(bounds.x * scale));
51
+ const y = Math.max(0, Math.round(bounds.y * scale));
52
+ const width = Math.round(bounds.width * scale);
53
+ const height = Math.round(bounds.height * scale);
54
+ return {
55
+ x,
56
+ y,
57
+ width: Math.max(1, Math.min(width, image.width - x)),
58
+ height: Math.max(1, Math.min(height, image.height - y))
59
+ };
60
+ }
61
+ export function cropPng(image, rect) {
62
+ const source = decodePng(image);
63
+ const clamped = toPixelRect(rect, 1, source);
64
+ const target = new PNG({ width: clamped.width, height: clamped.height });
65
+ PNG.bitblt(source, target, clamped.x, clamped.y, clamped.width, clamped.height, 0, 0);
66
+ return encodePng(target);
67
+ }
68
+ export function maskPng(image, rects) {
69
+ if (rects.length === 0) {
70
+ return image;
71
+ }
72
+ const png = decodePng(image);
73
+ for (const rect of rects) {
74
+ const area = toPixelRect(rect, 1, png);
75
+ for (let y = area.y; y < area.y + area.height; y += 1) {
76
+ for (let x = area.x; x < area.x + area.width; x += 1) {
77
+ const index = (png.width * y + x) << 2;
78
+ png.data[index] = MASK_COLOR.r;
79
+ png.data[index + 1] = MASK_COLOR.g;
80
+ png.data[index + 2] = MASK_COLOR.b;
81
+ png.data[index + 3] = 0xff;
82
+ }
83
+ }
84
+ }
85
+ return encodePng(png);
86
+ }
87
+ //# sourceMappingURL=image.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"image.js","sourceRoot":"","sources":["../src/image.ts"],"names":[],"mappings":"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"}
package/dist/index.d.ts CHANGED
@@ -3,10 +3,14 @@ export * from './agent.js';
3
3
  export * from './cdpWebEvaluator.js';
4
4
  export * from './config.js';
5
5
  export * from './errors.js';
6
+ export * from './image.js';
6
7
  export * from './inspector.js';
7
8
  export * from './keyboard.js';
8
9
  export * from './locator.js';
9
10
  export * from './session.js';
10
11
  export * from './wait.js';
11
12
  export * from './webBridge.js';
13
+ export * from './flutter/vmService.js';
14
+ export * from './flutter/network.js';
15
+ export * from './reactNative/network.js';
12
16
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,wBAAwB,CAAC;AACvC,cAAc,YAAY,CAAC;AAC3B,cAAc,sBAAsB,CAAC;AACrC,cAAc,aAAa,CAAC;AAC5B,cAAc,aAAa,CAAC;AAC5B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,eAAe,CAAC;AAC9B,cAAc,cAAc,CAAC;AAC7B,cAAc,cAAc,CAAC;AAC7B,cAAc,WAAW,CAAC;AAC1B,cAAc,gBAAgB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,wBAAwB,CAAC;AACvC,cAAc,YAAY,CAAC;AAC3B,cAAc,sBAAsB,CAAC;AACrC,cAAc,aAAa,CAAC;AAC5B,cAAc,aAAa,CAAC;AAC5B,cAAc,YAAY,CAAC;AAC3B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,eAAe,CAAC;AAC9B,cAAc,cAAc,CAAC;AAC7B,cAAc,cAAc,CAAC;AAC7B,cAAc,WAAW,CAAC;AAC1B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,wBAAwB,CAAC;AACvC,cAAc,sBAAsB,CAAC;AACrC,cAAc,0BAA0B,CAAC"}
package/dist/index.js CHANGED
@@ -3,10 +3,14 @@ export * from './agent.js';
3
3
  export * from './cdpWebEvaluator.js';
4
4
  export * from './config.js';
5
5
  export * from './errors.js';
6
+ export * from './image.js';
6
7
  export * from './inspector.js';
7
8
  export * from './keyboard.js';
8
9
  export * from './locator.js';
9
10
  export * from './session.js';
10
11
  export * from './wait.js';
11
12
  export * from './webBridge.js';
13
+ export * from './flutter/vmService.js';
14
+ export * from './flutter/network.js';
15
+ export * from './reactNative/network.js';
12
16
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,wBAAwB,CAAC;AACvC,cAAc,YAAY,CAAC;AAC3B,cAAc,sBAAsB,CAAC;AACrC,cAAc,aAAa,CAAC;AAC5B,cAAc,aAAa,CAAC;AAC5B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,eAAe,CAAC;AAC9B,cAAc,cAAc,CAAC;AAC7B,cAAc,cAAc,CAAC;AAC7B,cAAc,WAAW,CAAC;AAC1B,cAAc,gBAAgB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,wBAAwB,CAAC;AACvC,cAAc,YAAY,CAAC;AAC3B,cAAc,sBAAsB,CAAC;AACrC,cAAc,aAAa,CAAC;AAC5B,cAAc,aAAa,CAAC;AAC5B,cAAc,YAAY,CAAC;AAC3B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,eAAe,CAAC;AAC9B,cAAc,cAAc,CAAC;AAC7B,cAAc,cAAc,CAAC;AAC7B,cAAc,WAAW,CAAC;AAC1B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,wBAAwB,CAAC;AACvC,cAAc,sBAAsB,CAAC;AACrC,cAAc,0BAA0B,CAAC"}
@@ -1,4 +1,15 @@
1
1
  import type { Coordinates, KeyboardDismissMode } from '@astur-mobile/protocol';
2
2
  import type { PlatformSession } from './session.js';
3
+ /**
4
+ * Whether `pressKey(key)` means "type this character" rather than "send this
5
+ * key". Both platforms have to agree on the answer or a digit-by-digit flow —
6
+ * the usual shape for OTP entry — needs a platform branch in the test.
7
+ *
8
+ * A single character a user could type qualifies. Control characters do not, so
9
+ * `'\n'` still resolves as a named key, and neither does anything longer than
10
+ * one character, which leaves named keys (`'BACK'`) and raw Android keycode
11
+ * numbers (`'66'`) untouched.
12
+ */
13
+ export declare function isPrintableCharacter(key: string): boolean;
3
14
  export declare function preparePointerTargetForKeyboard(session: PlatformSession, point: Coordinates, mode?: KeyboardDismissMode): Promise<boolean>;
4
15
  //# sourceMappingURL=keyboard.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"keyboard.d.ts","sourceRoot":"","sources":["../src/keyboard.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAEV,WAAW,EACX,mBAAmB,EAEpB,MAAM,wBAAwB,CAAC;AAChC,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAGpD,wBAAsB,+BAA+B,CACnD,OAAO,EAAE,eAAe,EACxB,KAAK,EAAE,WAAW,EAClB,IAAI,CAAC,EAAE,mBAAmB,GACzB,OAAO,CAAC,OAAO,CAAC,CAclB"}
1
+ {"version":3,"file":"keyboard.d.ts","sourceRoot":"","sources":["../src/keyboard.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAEV,WAAW,EACX,mBAAmB,EAEpB,MAAM,wBAAwB,CAAC;AAChC,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAGpD;;;;;;;;;GASG;AACH,wBAAgB,oBAAoB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAEzD;AAED,wBAAsB,+BAA+B,CACnD,OAAO,EAAE,eAAe,EACxB,KAAK,EAAE,WAAW,EAClB,IAAI,CAAC,EAAE,mBAAmB,GACzB,OAAO,CAAC,OAAO,CAAC,CAclB"}
package/dist/keyboard.js CHANGED
@@ -1,4 +1,17 @@
1
1
  import { delay } from './wait.js';
2
+ /**
3
+ * Whether `pressKey(key)` means "type this character" rather than "send this
4
+ * key". Both platforms have to agree on the answer or a digit-by-digit flow —
5
+ * the usual shape for OTP entry — needs a platform branch in the test.
6
+ *
7
+ * A single character a user could type qualifies. Control characters do not, so
8
+ * `'\n'` still resolves as a named key, and neither does anything longer than
9
+ * one character, which leaves named keys (`'BACK'`) and raw Android keycode
10
+ * numbers (`'66'`) untouched.
11
+ */
12
+ export function isPrintableCharacter(key) {
13
+ return [...key].length === 1 && !/\p{C}/u.test(key);
14
+ }
2
15
  export async function preparePointerTargetForKeyboard(session, point, mode) {
3
16
  const dismissMode = mode ?? session.capabilities.keyboard?.dismiss ?? 'auto';
4
17
  if (dismissMode === 'preserve' || !session.getKeyboardState || !session.dismissKeyboard) {
@@ -1 +1 @@
1
- {"version":3,"file":"keyboard.js","sourceRoot":"","sources":["../src/keyboard.ts"],"names":[],"mappings":"AAOA,OAAO,EAAE,KAAK,EAAE,MAAM,WAAW,CAAC;AAElC,MAAM,CAAC,KAAK,UAAU,+BAA+B,CACnD,OAAwB,EACxB,KAAkB,EAClB,IAA0B;IAE1B,MAAM,WAAW,GAAG,IAAI,IAAI,OAAO,CAAC,YAAY,CAAC,QAAQ,EAAE,OAAO,IAAI,MAAM,CAAC;IAC7E,IAAI,WAAW,KAAK,UAAU,IAAI,CAAC,OAAO,CAAC,gBAAgB,IAAI,CAAC,OAAO,CAAC,eAAe,EAAE,CAAC;QACxF,OAAO,KAAK,CAAC;IACf,CAAC;IAED,MAAM,KAAK,GAAG,MAAM,OAAO,CAAC,gBAAgB,EAAE,CAAC,KAAK,CAAC,GAAkB,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC;IAChG,IAAI,CAAC,KAAK,CAAC,OAAO,IAAI,CAAC,KAAK,CAAC,MAAM,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,MAAM,EAAE,KAAK,CAAC,EAAE,CAAC;QAC3E,OAAO,KAAK,CAAC;IACf,CAAC;IAED,MAAM,OAAO,CAAC,eAAe,EAAE,CAAC;IAChC,MAAM,qBAAqB,CAAC,OAAO,CAAC,CAAC;IACrC,OAAO,IAAI,CAAC;AACd,CAAC;AAED,SAAS,aAAa,CAAC,MAAc,EAAE,KAAkB;IACvD,OAAO,KAAK,CAAC,CAAC,IAAI,MAAM,CAAC,CAAC;WACrB,KAAK,CAAC,CAAC,IAAI,MAAM,CAAC,CAAC,GAAG,MAAM,CAAC,KAAK;WAClC,KAAK,CAAC,CAAC,IAAI,MAAM,CAAC,CAAC;WACnB,KAAK,CAAC,CAAC,IAAI,MAAM,CAAC,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC;AAC3C,CAAC;AAED,KAAK,UAAU,qBAAqB,CAAC,OAAwB;IAC3D,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,KAAK,CAAC;IAEpC,OAAO,IAAI,CAAC,GAAG,EAAE,IAAI,QAAQ,EAAE,CAAC;QAC9B,MAAM,KAAK,GAAG,MAAM,OAAO,CAAC,gBAAgB,EAAE,EAAE,CAAC,KAAK,CAAC,GAAkB,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC;QAClG,IAAI,CAAC,KAAK,EAAE,OAAO,EAAE,CAAC;YACpB,OAAO;QACT,CAAC;QAED,MAAM,KAAK,CAAC,GAAG,CAAC,CAAC;IACnB,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"keyboard.js","sourceRoot":"","sources":["../src/keyboard.ts"],"names":[],"mappings":"AAOA,OAAO,EAAE,KAAK,EAAE,MAAM,WAAW,CAAC;AAElC;;;;;;;;;GASG;AACH,MAAM,UAAU,oBAAoB,CAAC,GAAW;IAC9C,OAAO,CAAC,GAAG,GAAG,CAAC,CAAC,MAAM,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AACtD,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,+BAA+B,CACnD,OAAwB,EACxB,KAAkB,EAClB,IAA0B;IAE1B,MAAM,WAAW,GAAG,IAAI,IAAI,OAAO,CAAC,YAAY,CAAC,QAAQ,EAAE,OAAO,IAAI,MAAM,CAAC;IAC7E,IAAI,WAAW,KAAK,UAAU,IAAI,CAAC,OAAO,CAAC,gBAAgB,IAAI,CAAC,OAAO,CAAC,eAAe,EAAE,CAAC;QACxF,OAAO,KAAK,CAAC;IACf,CAAC;IAED,MAAM,KAAK,GAAG,MAAM,OAAO,CAAC,gBAAgB,EAAE,CAAC,KAAK,CAAC,GAAkB,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC;IAChG,IAAI,CAAC,KAAK,CAAC,OAAO,IAAI,CAAC,KAAK,CAAC,MAAM,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,MAAM,EAAE,KAAK,CAAC,EAAE,CAAC;QAC3E,OAAO,KAAK,CAAC;IACf,CAAC;IAED,MAAM,OAAO,CAAC,eAAe,EAAE,CAAC;IAChC,MAAM,qBAAqB,CAAC,OAAO,CAAC,CAAC;IACrC,OAAO,IAAI,CAAC;AACd,CAAC;AAED,SAAS,aAAa,CAAC,MAAc,EAAE,KAAkB;IACvD,OAAO,KAAK,CAAC,CAAC,IAAI,MAAM,CAAC,CAAC;WACrB,KAAK,CAAC,CAAC,IAAI,MAAM,CAAC,CAAC,GAAG,MAAM,CAAC,KAAK;WAClC,KAAK,CAAC,CAAC,IAAI,MAAM,CAAC,CAAC;WACnB,KAAK,CAAC,CAAC,IAAI,MAAM,CAAC,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC;AAC3C,CAAC;AAED,KAAK,UAAU,qBAAqB,CAAC,OAAwB;IAC3D,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,KAAK,CAAC;IAEpC,OAAO,IAAI,CAAC,GAAG,EAAE,IAAI,QAAQ,EAAE,CAAC;QAC9B,MAAM,KAAK,GAAG,MAAM,OAAO,CAAC,gBAAgB,EAAE,EAAE,CAAC,KAAK,CAAC,GAAkB,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC;QAClG,IAAI,CAAC,KAAK,EAAE,OAAO,EAAE,CAAC;YACpB,OAAO;QACT,CAAC;QAED,MAAM,KAAK,CAAC,GAAG,CAAC,CAAC;IACnB,CAAC;AACH,CAAC"}
package/dist/locator.d.ts CHANGED
@@ -1,4 +1,5 @@
1
1
  import type { AndroidNativeSelector, Bounds, Coordinates, DoubleTapOptions, ElementFillOptions, ElementSelector, LongPressOptions, MobileElementSnapshot, MobileRole, RoleSelectorOptions, TapOptions } from '@astur-mobile/protocol';
2
+ import { type ImageSize } from './image.js';
2
3
  import type { PlatformSession } from './session.js';
3
4
  import { type WaitOptions } from './wait.js';
4
5
  export declare const by: {
@@ -102,6 +103,22 @@ export declare class MobileLocator {
102
103
  textContent(options?: WaitOptions): Promise<string>;
103
104
  inputValue(options?: WaitOptions): Promise<string>;
104
105
  bounds(options?: WaitOptions): Promise<Bounds>;
106
+ /**
107
+ * A PNG of just this element, cropped out of a full-screen capture.
108
+ *
109
+ * Cropping on the host rather than asking the platform for an element capture
110
+ * keeps one code path across every driver, and the platforms that can do it
111
+ * natively disagree about what "the element" includes (shadows, ripples).
112
+ *
113
+ * Masks are applied to the whole screen before the crop, because a mask is
114
+ * expressed in screen coordinates — masking after the crop would need every
115
+ * rect translated into the element's space for no benefit.
116
+ */
117
+ screenshot(options?: WaitOptions & {
118
+ mask?: MobileLocator[];
119
+ }): Promise<Buffer>;
120
+ /** Identifies the device a baseline belongs to. See {@link screenshotKey}. */
121
+ screenshotKey(): Promise<string>;
105
122
  isEnabled(options?: WaitOptions): Promise<boolean>;
106
123
  isDisabled(options?: WaitOptions): Promise<boolean>;
107
124
  isSelected(options?: WaitOptions): Promise<boolean>;
@@ -115,4 +132,26 @@ export declare function flattenTree(root: MobileElementSnapshot): MobileElementS
115
132
  export declare function centerOf(bounds: Bounds): Coordinates;
116
133
  export declare function pointInBounds(bounds: Bounds, xRatio: number, yRatio: number): Coordinates;
117
134
  export declare function formatSelector(selector: ElementSelector): string;
135
+ /**
136
+ * A full-screen capture with any masked regions painted out, plus the factor
137
+ * needed to map element bounds onto its pixels.
138
+ *
139
+ * Shared by device and element screenshots so both resolve the scale the same
140
+ * way — the two spaces are identical on Android but differ by the device pixel
141
+ * ratio on iOS, and getting that wrong crops the wrong part of the screen.
142
+ */
143
+ export declare function captureMaskedScreenshot(session: PlatformSession, mask?: MobileLocator[]): Promise<Buffer>;
144
+ /** Image dimensions plus how element bounds map onto them. */
145
+ export declare function screenshotGeometry(session: PlatformSession, image: Buffer): Promise<{
146
+ size: ImageSize;
147
+ scale: number;
148
+ }>;
149
+ /**
150
+ * Identifies which device a baseline was recorded on.
151
+ *
152
+ * Resolution alone is not enough: a React Native and a Flutter build of the
153
+ * same screen render differently on the same emulator, and comparing across
154
+ * them produces a diff that looks like a regression instead of a mismatch.
155
+ */
156
+ export declare function screenshotKey(session: PlatformSession): Promise<string>;
118
157
  //# sourceMappingURL=locator.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"locator.d.ts","sourceRoot":"","sources":["../src/locator.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"locator.d.ts","sourceRoot":"","sources":["../src/locator.ts"],"names":[],"mappings":"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"}
package/dist/locator.js CHANGED
@@ -1,4 +1,5 @@
1
1
  import { AsturError } from './errors.js';
2
+ import { cropPng, maskPng, pngSize, screenshotScale, toPixelRect } from './image.js';
2
3
  import { preparePointerTargetForKeyboard } from './keyboard.js';
3
4
  import { delay, waitFor } from './wait.js';
4
5
  export const by = {
@@ -331,6 +332,27 @@ export class MobileLocator {
331
332
  async bounds(options = {}) {
332
333
  return (await this.snapshot(options)).bounds;
333
334
  }
335
+ /**
336
+ * A PNG of just this element, cropped out of a full-screen capture.
337
+ *
338
+ * Cropping on the host rather than asking the platform for an element capture
339
+ * keeps one code path across every driver, and the platforms that can do it
340
+ * natively disagree about what "the element" includes (shadows, ripples).
341
+ *
342
+ * Masks are applied to the whole screen before the crop, because a mask is
343
+ * expressed in screen coordinates — masking after the crop would need every
344
+ * rect translated into the element's space for no benefit.
345
+ */
346
+ async screenshot(options = {}) {
347
+ const bounds = await this.bounds(options);
348
+ const image = await captureMaskedScreenshot(this.session, options.mask);
349
+ const { size, scale } = await screenshotGeometry(this.session, image);
350
+ return cropPng(image, toPixelRect(bounds, scale, size));
351
+ }
352
+ /** Identifies the device a baseline belongs to. See {@link screenshotKey}. */
353
+ async screenshotKey() {
354
+ return screenshotKey(this.session);
355
+ }
334
356
  async isEnabled(options = {}) {
335
357
  return (await this.snapshot(options)).enabled;
336
358
  }
@@ -520,4 +542,59 @@ function formatExpected(expected) {
520
542
  function isCoordinates(target) {
521
543
  return typeof target.x === 'number' && typeof target.y === 'number';
522
544
  }
545
+ /**
546
+ * A full-screen capture with any masked regions painted out, plus the factor
547
+ * needed to map element bounds onto its pixels.
548
+ *
549
+ * Shared by device and element screenshots so both resolve the scale the same
550
+ * way — the two spaces are identical on Android but differ by the device pixel
551
+ * ratio on iOS, and getting that wrong crops the wrong part of the screen.
552
+ */
553
+ export async function captureMaskedScreenshot(session, mask) {
554
+ const image = await session.screenshot();
555
+ // Nothing to mask means nothing to measure. Decoding the header regardless
556
+ // would make a plain screenshot fail on any driver whose capture this code
557
+ // does not need to understand.
558
+ if (!mask?.length) {
559
+ return image;
560
+ }
561
+ const { size, scale } = await screenshotGeometry(session, image);
562
+ const rects = [];
563
+ for (const locator of mask) {
564
+ // A mask that matches nothing is not a failure: masking an element that
565
+ // only appears sometimes is a normal reason to mask it in the first place.
566
+ const bounds = await locator.bounds({ timeout: 1_000 }).catch(() => undefined);
567
+ if (bounds) {
568
+ rects.push(toPixelRect(bounds, scale, size));
569
+ }
570
+ }
571
+ return maskPng(image, rects);
572
+ }
573
+ /** Image dimensions plus how element bounds map onto them. */
574
+ export async function screenshotGeometry(session, image) {
575
+ const size = pngSize(image);
576
+ const viewport = await resolveViewport(session, size);
577
+ return { size, scale: screenshotScale(size, viewport) };
578
+ }
579
+ /**
580
+ * Identifies which device a baseline was recorded on.
581
+ *
582
+ * Resolution alone is not enough: a React Native and a Flutter build of the
583
+ * same screen render differently on the same emulator, and comparing across
584
+ * them produces a diff that looks like a regression instead of a mismatch.
585
+ */
586
+ export async function screenshotKey(session) {
587
+ const info = session.deviceInfo;
588
+ const viewport = await resolveViewport(session, { width: 0, height: 0 });
589
+ // `renderer` first: on iOS the tree engine is always 'native', so keying on
590
+ // `uiEngine` alone would hand a Flutter build the React Native baseline.
591
+ const engine = info.renderer ?? info.uiEngine ?? 'native';
592
+ return `${info.platform}-${engine}-${Math.round(viewport.width)}x${Math.round(viewport.height)}`;
593
+ }
594
+ async function resolveViewport(session, fallback) {
595
+ if (!session.getViewport) {
596
+ return { x: 0, y: 0, ...fallback };
597
+ }
598
+ return await session.getViewport().catch(() => ({ x: 0, y: 0, ...fallback }));
599
+ }
523
600
  //# sourceMappingURL=locator.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"locator.js","sourceRoot":"","sources":["../src/locator.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"locator.js","sourceRoot":"","sources":["../src/locator.ts"],"names":[],"mappings":"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"}