execbro 2.1.2 → 2.3.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.
Files changed (138) hide show
  1. package/README.md +4 -3
  2. package/build/__tests__/integration/text-input.test.d.ts +2 -0
  3. package/build/__tests__/integration/text-input.test.d.ts.map +1 -0
  4. package/build/__tests__/integration/text-input.test.js +181 -0
  5. package/build/__tests__/integration/text-input.test.js.map +1 -0
  6. package/build/__tests__/unit/focusedInputTools.test.js +19 -6
  7. package/build/__tests__/unit/focusedInputTools.test.js.map +1 -1
  8. package/build/__tests__/unit/inputTarget.test.d.ts +2 -0
  9. package/build/__tests__/unit/inputTarget.test.d.ts.map +1 -0
  10. package/build/__tests__/unit/inputTarget.test.js +144 -0
  11. package/build/__tests__/unit/inputTarget.test.js.map +1 -0
  12. package/build/__tests__/unit/inputTargetTools.test.d.ts +2 -0
  13. package/build/__tests__/unit/inputTargetTools.test.d.ts.map +1 -0
  14. package/build/__tests__/unit/inputTargetTools.test.js +46 -0
  15. package/build/__tests__/unit/inputTargetTools.test.js.map +1 -0
  16. package/build/__tests__/unit/inputTextTool.test.d.ts +2 -0
  17. package/build/__tests__/unit/inputTextTool.test.d.ts.map +1 -0
  18. package/build/__tests__/unit/inputTextTool.test.js +120 -0
  19. package/build/__tests__/unit/inputTextTool.test.js.map +1 -0
  20. package/build/__tests__/unit/keyboardMetrics.test.d.ts +2 -0
  21. package/build/__tests__/unit/keyboardMetrics.test.d.ts.map +1 -0
  22. package/build/__tests__/unit/keyboardMetrics.test.js +58 -0
  23. package/build/__tests__/unit/keyboardMetrics.test.js.map +1 -0
  24. package/build/__tests__/unit/keyboardRaise.test.d.ts +2 -0
  25. package/build/__tests__/unit/keyboardRaise.test.d.ts.map +1 -0
  26. package/build/__tests__/unit/keyboardRaise.test.js +74 -0
  27. package/build/__tests__/unit/keyboardRaise.test.js.map +1 -0
  28. package/build/__tests__/unit/nativeInputValue.test.d.ts +2 -0
  29. package/build/__tests__/unit/nativeInputValue.test.d.ts.map +1 -0
  30. package/build/__tests__/unit/nativeInputValue.test.js +67 -0
  31. package/build/__tests__/unit/nativeInputValue.test.js.map +1 -0
  32. package/build/__tests__/unit/screenSpace.test.d.ts +2 -0
  33. package/build/__tests__/unit/screenSpace.test.d.ts.map +1 -0
  34. package/build/__tests__/unit/screenSpace.test.js +58 -0
  35. package/build/__tests__/unit/screenSpace.test.js.map +1 -0
  36. package/build/__tests__/unit/screenStateInputValue.test.d.ts +2 -0
  37. package/build/__tests__/unit/screenStateInputValue.test.d.ts.map +1 -0
  38. package/build/__tests__/unit/screenStateInputValue.test.js +49 -0
  39. package/build/__tests__/unit/screenStateInputValue.test.js.map +1 -0
  40. package/build/__tests__/unit/screenStateKeyboard.test.d.ts +2 -0
  41. package/build/__tests__/unit/screenStateKeyboard.test.d.ts.map +1 -0
  42. package/build/__tests__/unit/screenStateKeyboard.test.js +99 -0
  43. package/build/__tests__/unit/screenStateKeyboard.test.js.map +1 -0
  44. package/build/__tests__/unit/textEntry.test.d.ts +2 -0
  45. package/build/__tests__/unit/textEntry.test.d.ts.map +1 -0
  46. package/build/__tests__/unit/textEntry.test.js +291 -0
  47. package/build/__tests__/unit/textEntry.test.js.map +1 -0
  48. package/build/__tests__/unit/visibility.test.js +21 -0
  49. package/build/__tests__/unit/visibility.test.js.map +1 -1
  50. package/build/core/focusedInputTools.d.ts.map +1 -1
  51. package/build/core/focusedInputTools.js +13 -35
  52. package/build/core/focusedInputTools.js.map +1 -1
  53. package/build/core/guides.d.ts.map +1 -1
  54. package/build/core/guides.js +18 -4
  55. package/build/core/guides.js.map +1 -1
  56. package/build/core/index.d.ts +1 -1
  57. package/build/core/index.d.ts.map +1 -1
  58. package/build/core/index.js +1 -1
  59. package/build/core/index.js.map +1 -1
  60. package/build/core/injected/visibility.d.ts +14 -1
  61. package/build/core/injected/visibility.d.ts.map +1 -1
  62. package/build/core/injected/visibility.js +28 -4
  63. package/build/core/injected/visibility.js.map +1 -1
  64. package/build/core/injectedFilters.d.ts +31 -0
  65. package/build/core/injectedFilters.d.ts.map +1 -0
  66. package/build/core/injectedFilters.js +31 -0
  67. package/build/core/injectedFilters.js.map +1 -0
  68. package/build/core/inputTarget.d.ts +85 -0
  69. package/build/core/inputTarget.d.ts.map +1 -0
  70. package/build/core/inputTarget.js +364 -0
  71. package/build/core/inputTarget.js.map +1 -0
  72. package/build/core/inputTargetTools.d.ts +12 -0
  73. package/build/core/inputTargetTools.d.ts.map +1 -0
  74. package/build/core/inputTargetTools.js +26 -0
  75. package/build/core/inputTargetTools.js.map +1 -0
  76. package/build/core/inspector.d.ts +6 -0
  77. package/build/core/inspector.d.ts.map +1 -1
  78. package/build/core/inspector.js +200 -36
  79. package/build/core/inspector.js.map +1 -1
  80. package/build/core/ios.d.ts.map +1 -1
  81. package/build/core/ios.js +7 -1
  82. package/build/core/ios.js.map +1 -1
  83. package/build/core/keyboardMetrics.d.ts +11 -0
  84. package/build/core/keyboardMetrics.d.ts.map +1 -0
  85. package/build/core/keyboardMetrics.js +40 -0
  86. package/build/core/keyboardMetrics.js.map +1 -0
  87. package/build/core/keyboardRaise.d.ts +22 -0
  88. package/build/core/keyboardRaise.d.ts.map +1 -0
  89. package/build/core/keyboardRaise.js +74 -0
  90. package/build/core/keyboardRaise.js.map +1 -0
  91. package/build/core/nativeInputValue.d.ts +48 -0
  92. package/build/core/nativeInputValue.d.ts.map +1 -0
  93. package/build/core/nativeInputValue.js +113 -0
  94. package/build/core/nativeInputValue.js.map +1 -0
  95. package/build/core/pressables.d.ts +0 -32
  96. package/build/core/pressables.d.ts.map +1 -1
  97. package/build/core/pressables.js +5 -1061
  98. package/build/core/pressables.js.map +1 -1
  99. package/build/core/screenLayout.d.ts +3 -0
  100. package/build/core/screenLayout.d.ts.map +1 -1
  101. package/build/core/screenLayout.js +32 -0
  102. package/build/core/screenLayout.js.map +1 -1
  103. package/build/core/screenSpace.d.ts +75 -0
  104. package/build/core/screenSpace.d.ts.map +1 -0
  105. package/build/core/screenSpace.js +84 -0
  106. package/build/core/screenSpace.js.map +1 -0
  107. package/build/core/screenSpaceDevice.d.ts +15 -0
  108. package/build/core/screenSpaceDevice.d.ts.map +1 -0
  109. package/build/core/screenSpaceDevice.js +24 -0
  110. package/build/core/screenSpaceDevice.js.map +1 -0
  111. package/build/core/screenState.d.ts +39 -0
  112. package/build/core/screenState.d.ts.map +1 -1
  113. package/build/core/screenState.js +200 -16
  114. package/build/core/screenState.js.map +1 -1
  115. package/build/core/textEntry.d.ts +75 -0
  116. package/build/core/textEntry.d.ts.map +1 -0
  117. package/build/core/textEntry.js +252 -0
  118. package/build/core/textEntry.js.map +1 -0
  119. package/build/tools/componentTools.d.ts.map +1 -1
  120. package/build/tools/componentTools.js +63 -188
  121. package/build/tools/componentTools.js.map +1 -1
  122. package/build/tools/interactionTools.d.ts +13 -0
  123. package/build/tools/interactionTools.d.ts.map +1 -1
  124. package/build/tools/interactionTools.js +112 -2
  125. package/build/tools/interactionTools.js.map +1 -1
  126. package/build/tools/screenshotTools.d.ts.map +1 -1
  127. package/build/tools/screenshotTools.js +37 -72
  128. package/build/tools/screenshotTools.js.map +1 -1
  129. package/package.json +1 -1
  130. package/tools.json +10 -4
  131. package/build/__tests__/unit/focusedInput.test.d.ts +0 -2
  132. package/build/__tests__/unit/focusedInput.test.d.ts.map +0 -1
  133. package/build/__tests__/unit/focusedInput.test.js +0 -58
  134. package/build/__tests__/unit/focusedInput.test.js.map +0 -1
  135. package/build/core/focusedInput.d.ts +0 -27
  136. package/build/core/focusedInput.d.ts.map +0 -1
  137. package/build/core/focusedInput.js +0 -110
  138. package/build/core/focusedInput.js.map +0 -1
@@ -0,0 +1,12 @@
1
+ import type { ExecutionResult } from "./types.js";
2
+ import { type InputOp, type InputQuery, type InputResult } from "./inputTarget.js";
3
+ export type ExecuteFn = (expression: string, device?: string) => Promise<ExecutionResult>;
4
+ /**
5
+ * Runs one resolver operation and normalises every failure — executor error,
6
+ * unparseable output, app-side miss — into { found: false, reason }.
7
+ *
8
+ * Callers get exactly one shape to branch on and never have to catch, which is
9
+ * what lets the orchestration above read as a straight line.
10
+ */
11
+ export declare function runInputOp(op: InputOp, query?: InputQuery, device?: string, execute?: ExecuteFn): Promise<InputResult>;
12
+ //# sourceMappingURL=inputTargetTools.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"inputTargetTools.d.ts","sourceRoot":"","sources":["../../src/core/inputTargetTools.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAClD,OAAO,EAAwB,KAAK,OAAO,EAAE,KAAK,UAAU,EAAE,KAAK,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAEzG,MAAM,MAAM,SAAS,GAAG,CAAC,UAAU,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,KAAK,OAAO,CAAC,eAAe,CAAC,CAAC;AAK1F;;;;;;GAMG;AACH,wBAAsB,UAAU,CAC5B,EAAE,EAAE,OAAO,EACX,KAAK,CAAC,EAAE,UAAU,EAClB,MAAM,CAAC,EAAE,MAAM,EACf,OAAO,GAAE,SAA0B,GACpC,OAAO,CAAC,WAAW,CAAC,CAetB"}
@@ -0,0 +1,26 @@
1
+ import { executeInApp } from "./executor.js";
2
+ import { buildInputExpression } from "./inputTarget.js";
3
+ const defaultExecute = (expression, device) => executeInApp(expression, true, { originatingToolName: "input_text" }, device);
4
+ /**
5
+ * Runs one resolver operation and normalises every failure — executor error,
6
+ * unparseable output, app-side miss — into { found: false, reason }.
7
+ *
8
+ * Callers get exactly one shape to branch on and never have to catch, which is
9
+ * what lets the orchestration above read as a straight line.
10
+ */
11
+ export async function runInputOp(op, query, device, execute = defaultExecute) {
12
+ const exec = await execute(buildInputExpression(op, query), device);
13
+ if (!exec.success) {
14
+ return { found: false, reason: exec.error ?? "executor failed" };
15
+ }
16
+ try {
17
+ return JSON.parse(exec.result ?? "");
18
+ }
19
+ catch {
20
+ return {
21
+ found: false,
22
+ reason: `could not parse resolver output: ${String(exec.result).slice(0, 200)}`
23
+ };
24
+ }
25
+ }
26
+ //# sourceMappingURL=inputTargetTools.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"inputTargetTools.js","sourceRoot":"","sources":["../../src/core/inputTargetTools.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAE7C,OAAO,EAAE,oBAAoB,EAAmD,MAAM,kBAAkB,CAAC;AAIzG,MAAM,cAAc,GAAc,CAAC,UAAU,EAAE,MAAM,EAAE,EAAE,CACrD,YAAY,CAAC,UAAU,EAAE,IAAI,EAAE,EAAE,mBAAmB,EAAE,YAAY,EAAE,EAAE,MAAM,CAAC,CAAC;AAElF;;;;;;GAMG;AACH,MAAM,CAAC,KAAK,UAAU,UAAU,CAC5B,EAAW,EACX,KAAkB,EAClB,MAAe,EACf,UAAqB,cAAc;IAEnC,MAAM,IAAI,GAAG,MAAM,OAAO,CAAC,oBAAoB,CAAC,EAAE,EAAE,KAAK,CAAC,EAAE,MAAM,CAAC,CAAC;IAEpE,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;QAChB,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,CAAC,KAAK,IAAI,iBAAiB,EAAE,CAAC;IACrE,CAAC;IAED,IAAI,CAAC;QACD,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,IAAI,EAAE,CAAgB,CAAC;IACxD,CAAC;IAAC,MAAM,CAAC;QACL,OAAO;YACH,KAAK,EAAE,KAAK;YACZ,MAAM,EAAE,oCAAoC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE;SAClF,CAAC;IACN,CAAC;AACL,CAAC"}
@@ -1,5 +1,6 @@
1
1
  import type { ExecutionResult } from "./types.js";
2
2
  import type { RawComponentStack } from "./componentSource.js";
3
+ import { type ScreenSpaceMetrics } from "./screenSpace.js";
3
4
  /**
4
5
  * Check if the Element Inspector overlay is currently active.
5
6
  */
@@ -25,6 +26,11 @@ export declare function inspectAtPoint(x: number, y: number, options?: {
25
26
  includeProps?: boolean;
26
27
  includeFrame?: boolean;
27
28
  device?: string;
29
+ /**
30
+ * Top inset used to lift raw measurements into screen space. Omit (or pass a zero
31
+ * inset) to hit-test in raw fiber space — the pre-normalisation behaviour.
32
+ */
33
+ screenSpace?: ScreenSpaceMetrics;
28
34
  }): Promise<ExecutionResult>;
29
35
  /**
30
36
  * Harvests raw _debugStack strings for whatever sits at (x, y). Returns an
@@ -1 +1 @@
1
- {"version":3,"file":"inspector.d.ts","sourceRoot":"","sources":["../../src/core/inspector.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAGlD,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AAO9D;;GAEG;AACH,wBAAsB,iBAAiB,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAqCzE;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAsB,cAAc,CAChC,CAAC,EAAE,MAAM,EACT,CAAC,EAAE,MAAM,EACT,OAAO,GAAE;IACL,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,MAAM,CAAC,EAAE,MAAM,CAAC;CACd,GACP,OAAO,CAAC,eAAe,CAAC,CAiN1B;AAED;;;;GAIG;AACH,wBAAsB,oBAAoB,CACtC,CAAC,EAAE,MAAM,EACT,CAAC,EAAE,MAAM,EACT,MAAM,CAAC,EAAE,MAAM,GAChB,OAAO,CAAC,iBAAiB,EAAE,CAAC,CAc9B;AAED;;;GAGG;AACH,wBAAsB,gBAAgB,CAClC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAChC,MAAM,EAAE,iBAAiB,EAAE,GAC5B,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAUlC"}
1
+ {"version":3,"file":"inspector.d.ts","sourceRoot":"","sources":["../../src/core/inspector.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAGlD,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AAE9D,OAAO,EAA0B,KAAK,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AAMnF;;GAEG;AACH,wBAAsB,iBAAiB,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAqCzE;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAsB,cAAc,CAChC,CAAC,EAAE,MAAM,EACT,CAAC,EAAE,MAAM,EACT,OAAO,GAAE;IACL,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB;;;OAGG;IACH,WAAW,CAAC,EAAE,kBAAkB,CAAC;CAC/B,GACP,OAAO,CAAC,eAAe,CAAC,CAmX1B;AAED;;;;GAIG;AACH,wBAAsB,oBAAoB,CACtC,CAAC,EAAE,MAAM,EACT,CAAC,EAAE,MAAM,EACT,MAAM,CAAC,EAAE,MAAM,GAChB,OAAO,CAAC,iBAAiB,EAAE,CAAC,CAc9B;AAED;;;GAGG;AACH,wBAAsB,gBAAgB,CAClC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAChC,MAAM,EAAE,iBAAiB,EAAE,GAC5B,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAUlC"}
@@ -1,5 +1,7 @@
1
1
  import { executeInApp } from "./jsExecute.js";
2
2
  import { resolveStacksToSource, buildDebugStackHarvestExpression } from "./componentSource.js";
3
+ import { RN_PRIMITIVES_SRC, GENERIC_COMPONENT_SRC } from "./injectedFilters.js";
4
+ import { SCREEN_SPACE_HELPER_JS } from "./screenSpace.js";
3
5
  // ============================================================================
4
6
  // Coordinate-Based Element Inspection (via DevTools Inspector API)
5
7
  // ============================================================================
@@ -61,7 +63,8 @@ export async function isInspectorActive(device) {
61
63
  * that window by construction.
62
64
  */
63
65
  export async function inspectAtPoint(x, y, options = {}) {
64
- const { includeProps = true, includeFrame = true, device } = options;
66
+ const { includeProps = true, includeFrame = true, device, screenSpace } = options;
67
+ const metrics = screenSpace ?? { platform: "ios", topInset: 0 };
65
68
  const expression = `
66
69
  new Promise(function(resolve) {
67
70
  var hook = globalThis.__REACT_DEVTOOLS_GLOBAL_HOOK__;
@@ -107,13 +110,28 @@ export async function inspectAtPoint(x, y, options = {}) {
107
110
  return null;
108
111
  }
109
112
 
113
+ // Collection bounds. These exist only to stop a pathological/cyclic tree from
114
+ // hanging the runtime — they must NOT bite on real screens. The previous values
115
+ // (500 hosts / depth 250) did: on a mid-size Expo app 45% of measurable hosts fell
116
+ // outside them (914 -> 500), and because the hit-test then silently ran against the
117
+ // survivors, inspect_at_point returned components from the screen *underneath* an
118
+ // open modal. Real measurements: test-app 200 hosts / depth 255, gifted 201 / 252,
119
+ // Boardwise 914 / 281. Anything that trips these limits now reports it.
120
+ var MAX_HOSTS = 20000;
121
+ var MAX_DEPTH = 2000;
122
+ var truncatedByCount = false;
123
+ var truncatedByDepth = false;
124
+
110
125
  var hostFibers = [];
111
126
  function walkFibers(fiber, depth) {
112
127
  var cur = fiber;
113
128
  while (cur) {
114
- if (hostFibers.length >= 500) return;
129
+ if (hostFibers.length >= MAX_HOSTS) { truncatedByCount = true; return; }
115
130
  if (typeof cur.type === 'string' && getMeasurable(cur)) hostFibers.push(cur);
116
- if (cur.child && depth < 250) walkFibers(cur.child, depth + 1);
131
+ if (cur.child) {
132
+ if (depth < MAX_DEPTH) walkFibers(cur.child, depth + 1);
133
+ else truncatedByDepth = true;
134
+ }
117
135
  cur = cur.sibling;
118
136
  }
119
137
  }
@@ -121,9 +139,14 @@ export async function inspectAtPoint(x, y, options = {}) {
121
139
 
122
140
  if (hostFibers.length === 0) return resolve({ error: 'No measurable host components found. App may not be fully rendered.' });
123
141
 
142
+ // Index fibers so the named element's own frame can be resolved later.
143
+ var hostIndex = new Map();
144
+ for (var hi = 0; hi < hostFibers.length; hi++) hostIndex.set(hostFibers[hi], hi);
145
+
124
146
  var measurements = new Array(hostFibers.length).fill(null);
125
147
  var pending = hostFibers.length;
126
148
  var settled = false;
149
+ var timedOut = false;
127
150
 
128
151
  function done() {
129
152
  if (settled) return;
@@ -131,6 +154,9 @@ export async function inspectAtPoint(x, y, options = {}) {
131
154
  resolve(buildResult(hostFibers, measurements));
132
155
  }
133
156
 
157
+ ${SCREEN_SPACE_HELPER_JS}
158
+ var SCREEN_SPACE = ${JSON.stringify(metrics)};
159
+
134
160
  hostFibers.forEach(function(fiber, i) {
135
161
  try {
136
162
  getMeasurable(fiber).measureInWindow(function(fx, fy, fw, fh) {
@@ -145,13 +171,43 @@ export async function inspectAtPoint(x, y, options = {}) {
145
171
  });
146
172
 
147
173
  // Fallback: some measureInWindow callbacks never fire (off-screen Fabric leaves,
148
- // detached ScrollView content). Resolve with whatever measurements landed in 300ms.
149
- setTimeout(done, 300);
174
+ // detached ScrollView content). Scale the budget with the node count so lifting the
175
+ // 500-host cap doesn't just convert a truncation into a timeout — a flat 300ms was
176
+ // ample for 200 nodes but is not for 900+. Still far below the 8s outer timeout.
177
+ var measureBudgetMs = Math.min(3000, 400 + hostFibers.length * 2);
178
+ setTimeout(function() { timedOut = true; done(); }, measureBudgetMs);
150
179
 
151
180
  function buildResult(fibers, measurements) {
152
181
  var targetX = ${x};
153
182
  var targetY = ${y};
154
183
 
184
+ // Lift measurements into screen space once, before anything reads them, so the
185
+ // hit-test, the element frame, hitFrame and the hierarchy all share the caller's
186
+ // coordinate space.
187
+ //
188
+ // Root containers are exempt. The band rule ("a y above the safe-area inset means
189
+ // this node measured from a modal's container") holds for leaf elements — which is
190
+ // all the screenshot formatters ever fed it — but a full-screen root legitimately
191
+ // starts at y=0, and shifting it produced NativeStackView at (0,59) with height 912,
192
+ // running 59pt off the bottom of a 912pt screen. A node at y=0 that is as tall as the
193
+ // tallest thing measured is the root, not modal content.
194
+ if (SCREEN_SPACE.topInset > 0) {
195
+ // hostFibers[0] is the first host reached from the fiber root — the app's root
196
+ // view — so its height is the screen height. Deriving it from the tallest
197
+ // measurement instead does not work: scrollable content routinely exceeds the
198
+ // screen, which lifts the threshold above every real root and exempts nothing.
199
+ var screenH = (measurements[0] && measurements[0].height) || 0;
200
+ // 0.9 rather than (screenH - inset): the app container sits a little inside the
201
+ // window (measured 844 against a 912 screen) and must still count as a root.
202
+ var rootMinH = screenH > 0 ? screenH * 0.9 : Infinity;
203
+ for (var ms = 0; ms < measurements.length; ms++) {
204
+ var mm2 = measurements[ms];
205
+ if (!mm2) continue;
206
+ if (mm2.y === 0 && mm2.height >= rootMinH) continue;
207
+ mm2.y = toScreenSpaceY(mm2.y, SCREEN_SPACE);
208
+ }
209
+ }
210
+
155
211
  var hits = [];
156
212
  for (var i = 0; i < measurements.length; i++) {
157
213
  var m = measurements[i];
@@ -170,26 +226,105 @@ export async function inspectAtPoint(x, y, options = {}) {
170
226
  hits.sort(function(a, b) { return (a.width * a.height) - (b.width * b.height); });
171
227
  var best = hits[0];
172
228
 
173
- // RN primitives and internal components to skip when surfacing the "element" name.
174
- // We want the nearest *custom* component, not a library wrapper.
175
- var RN_PRIMITIVES = /^(View|Text|Image|ScrollView|FlatList|SectionList|TextInput|TouchableOpacity|TouchableHighlight|TouchableNativeFeedback|TouchableWithoutFeedback|Pressable|Button|Switch|ActivityIndicator|SafeAreaView|KeyboardAvoidingView|Animated\\(.*|withAnimated.*|ForwardRef.*|memo\\(.*|Context\\.Consumer|Context\\.Provider|VirtualizedList.*|CellRenderer.*|FrameSizeProvider|MaybeScreenContainer|RCT.*|RNS.*|Navigation.*|Screen$|ScreenStack|ScreenContainer|ScreenContentWrapper|SceneView|DelayedFreeze|Freeze|Suspender|DebugContainer|StaticContainer|Expo.*|LinearGradient|ViewManagerAdapter_.*|Svg.*|Defs|Path|Rect|Circle|G|Line|Polygon|Polyline|Ellipse|ClipPath|GestureHandler.*|NativeViewGestureHandler|Reanimated.*|BottomTabNavigator|TabLayout|RouteNode|Route$|MaybeScreen|SafeAreaProvider.*|GestureDetector|PanGestureHandler|DropShadow|BlurView|MaskedView.*)$/;
229
+ // Shared with screenState/inputTarget via injectedFilters.ts. This file used to carry
230
+ // its own divergent copy that listed Pressable/TextInput/View as skippable, so the
231
+ // climb walked straight past the very components holding onPress/testID and landed on
232
+ // a context provider — reporting ScrollViewContext with props {value:{horizontal:false}}
233
+ // for a button. Keep these imported; do not re-inline them.
234
+ var RN_PRIMITIVES = ${RN_PRIMITIVES_SRC};
235
+ var GENERIC_COMPONENT = ${GENERIC_COMPONENT_SRC};
176
236
 
177
- function getNearestNamed(fiber, skipPrimitives) {
178
- var cur = fiber;
179
- var fallback = null;
180
- while (cur) {
181
- if (cur.type && typeof cur.type !== 'string') {
182
- var name = cur.type.displayName || cur.type.name;
183
- if (name) {
184
- if (!fallback) fallback = { name: name, fiber: cur };
185
- if (!skipPrimitives || !RN_PRIMITIVES.test(name)) {
186
- return { name: name, fiber: cur };
187
- }
188
- }
237
+ function isInteractive(fiber) {
238
+ var p = fiber.memoizedProps;
239
+ if (!p || typeof p !== 'object') return false;
240
+ return typeof p.onPress === 'function'
241
+ || typeof p.onLongPress === 'function'
242
+ || typeof p.onChangeText === 'function'
243
+ || p.testID !== undefined
244
+ || p.accessibilityRole === 'button';
245
+ }
246
+
247
+ // Pick the component a human would say they touched.
248
+ //
249
+ // Priority: the nearest interactive fiber (onPress/testID/...), then — because the
250
+ // handler usually lives on a generic TouchableOpacity inside a meaningful wrapper —
251
+ // keep climbing a few levels for a custom component that owns it. That yields
252
+ // ListItemRow over TouchableOpacity in a component-driven app, while still yielding
253
+ // Pressable (not a far-away screen component) in an app built from bare primitives.
254
+ var CUSTOM_LOOKAHEAD = 6;
255
+ function isCustomName(name) {
256
+ return !RN_PRIMITIVES.test(name) && !GENERIC_COMPONENT.test(name);
257
+ }
258
+ function namedOf(fiber) {
259
+ if (!fiber || !fiber.type || typeof fiber.type === 'string') return null;
260
+ var n = fiber.type.displayName || fiber.type.name;
261
+ return n ? { name: n, fiber: fiber } : null;
262
+ }
263
+ function pickElement(startFiber) {
264
+ var cur = startFiber;
265
+ var interactive = null;
266
+ var firstCustom = null;
267
+ var anyNamed = null;
268
+ var steps = 0;
269
+ while (cur && steps < 40) {
270
+ var nd = namedOf(cur);
271
+ if (nd) {
272
+ if (!anyNamed) anyNamed = nd;
273
+ if (!firstCustom && isCustomName(nd.name)) firstCustom = nd;
274
+ if (!interactive && isInteractive(cur)) { interactive = nd; break; }
189
275
  }
190
276
  cur = cur.return;
277
+ steps++;
278
+ }
279
+
280
+ if (interactive) {
281
+ // The handler usually sits on a generic TouchableOpacity/Pressable inside the
282
+ // component that gives it meaning. Climb from the interactive node (NOT from
283
+ // the hit node) for that owner: searching from the hit node instead would
284
+ // latch onto an unrelated custom child on the way up — e.g. picking the
285
+ // ThemedText label rather than the RoleButton that owns the press.
286
+ var up = interactive.fiber;
287
+ var upSteps = 0;
288
+ while (up && upSteps <= CUSTOM_LOOKAHEAD) {
289
+ var und = namedOf(up);
290
+ if (und && isCustomName(und.name)) return und;
291
+ up = up.return;
292
+ upSteps++;
293
+ }
294
+ return interactive;
191
295
  }
192
- return fallback;
296
+ return firstCustom || anyNamed;
297
+ }
298
+
299
+ // Frame of the named element itself = its nearest measured host descendant.
300
+ // Previously the reported frame was the innermost hit host while the element name and
301
+ // props came from an ancestor, so the two described different boxes and any tap target
302
+ // computed from the frame was wrong.
303
+ // The component's own box: its nearest measured host descendant.
304
+ //
305
+ // Look the fiber up by identity OR by its alternate. React double-buffers fibers, so
306
+ // a re-render between the collection walk and this descent leaves the subtree mixed:
307
+ // bailed-out nodes keep the same object and hit, re-rendered ones are new objects and
308
+ // miss. An identity-only lookup therefore skipped a 128x48 button box and reported
309
+ // the 20x20 icon nested inside it as the button's frame.
310
+ //
311
+ // Not a union of the subtree: for a screen component that spans its scrollable
312
+ // content, which reported a 5289pt-tall "frame" for a 912pt screen.
313
+ function measurementFor(f) {
314
+ var idx = hostIndex.get(f);
315
+ if (idx === undefined && f.alternate) idx = hostIndex.get(f.alternate);
316
+ return idx !== undefined ? measurements[idx] : null;
317
+ }
318
+ function frameOfNamed(namedFiber) {
319
+ var found = null;
320
+ (function down(f, d) {
321
+ if (found || !f || d > 40) return;
322
+ var m = measurementFor(f);
323
+ if (m && m.width > 0 && m.height > 0) { found = m; return; }
324
+ var c = f.child;
325
+ while (c && !found) { down(c, d + 1); c = c.sibling; }
326
+ })(namedFiber, 0);
327
+ return found;
193
328
  }
194
329
 
195
330
  function buildPath(fiber) {
@@ -207,9 +342,9 @@ export async function inspectAtPoint(x, y, options = {}) {
207
342
  return path.slice(-8).join(' > ');
208
343
  }
209
344
 
210
- // Find nearest custom component (skipping RN primitives) for the element name,
211
- // but fall back to the nearest named component if nothing custom is found.
212
- var named = getNearestNamed(best.fiber.return || best.fiber, true);
345
+ // Start at the hit fiber itself, not its parent: the hit host can be the interactive
346
+ // node, and starting at .return made that unreachable.
347
+ var named = pickElement(best.fiber);
213
348
  var result = {
214
349
  point: { x: targetX, y: targetY },
215
350
  element: named ? named.name : best.fiber.type,
@@ -218,7 +353,23 @@ export async function inspectAtPoint(x, y, options = {}) {
218
353
  };
219
354
 
220
355
  if (${includeFrame}) {
221
- result.frame = { x: best.x, y: best.y, width: best.width, height: best.height };
356
+ var namedFrame = named ? frameOfNamed(named.fiber) : null;
357
+ var elFrame = namedFrame || best;
358
+ result.frame = { x: elFrame.x, y: elFrame.y, width: elFrame.width, height: elFrame.height };
359
+ // The innermost host actually hit, when it differs from the element's own box.
360
+ if (namedFrame && (namedFrame.x !== best.x || namedFrame.y !== best.y ||
361
+ namedFrame.width !== best.width || namedFrame.height !== best.height)) {
362
+ result.hitFrame = { x: best.x, y: best.y, width: best.width, height: best.height };
363
+ }
364
+ }
365
+
366
+ if (truncatedByCount || truncatedByDepth || (timedOut && pending > 0)) {
367
+ result.incomplete = {
368
+ reason: truncatedByCount ? 'host-limit' : (truncatedByDepth ? 'depth-limit' : 'measure-timeout'),
369
+ hostsCollected: hostFibers.length,
370
+ measurementsMissing: pending > 0 ? pending : 0,
371
+ note: 'Result may be inaccurate: some on-screen nodes were not measured, so the hit-test could resolve to an outer or occluded element.'
372
+ };
222
373
  }
223
374
 
224
375
  if (${includeProps} && named && named.fiber.memoizedProps) {
@@ -246,16 +397,28 @@ export async function inspectAtPoint(x, y, options = {}) {
246
397
  if (Object.keys(props).length > 0) result.props = props;
247
398
  }
248
399
 
249
- // Hierarchy: custom-named component for each hit, deduped, innermost→outermost
400
+ // Hierarchy: the hit element's real ancestor chain, innermost→outermost.
401
+ //
402
+ // This used to be built from *other hits* — every measured node containing the point,
403
+ // each mapped to its nearest named component. Those hits are not necessarily
404
+ // ancestors of the element: with a modal open, nodes from the screen underneath also
405
+ // contain the point, so the chain interleaved ancestors from two different screens.
406
+ // Walking .return keeps it to genuine ancestors.
250
407
  var hierarchy = [];
251
- for (var j = 0; j < Math.min(hits.length, 15); j++) {
252
- var n2 = getNearestNamed(hits[j].fiber.return, true) || getNearestNamed(hits[j].fiber, true);
253
- if (n2 && !hierarchy.some(function(h) { return h.name === n2.name; })) {
254
- hierarchy.push({
255
- name: n2.name,
256
- frame: { x: hits[j].x, y: hits[j].y, width: hits[j].width, height: hits[j].height }
257
- });
408
+ var seenNames = {};
409
+ var hcur = named ? named.fiber : best.fiber;
410
+ while (hcur && hierarchy.length < 15) {
411
+ if (hcur.type && typeof hcur.type !== 'string') {
412
+ var hname = hcur.type.displayName || hcur.type.name;
413
+ if (hname && !RN_PRIMITIVES.test(hname) && !seenNames[hname]) {
414
+ seenNames[hname] = true;
415
+ var hframe = frameOfNamed(hcur);
416
+ hierarchy.push(hframe
417
+ ? { name: hname, frame: { x: hframe.x, y: hframe.y, width: hframe.width, height: hframe.height } }
418
+ : { name: hname });
419
+ }
258
420
  }
421
+ hcur = hcur.return;
259
422
  }
260
423
  if (hierarchy.length > 1) result.hierarchy = hierarchy;
261
424
 
@@ -264,9 +427,10 @@ export async function inspectAtPoint(x, y, options = {}) {
264
427
  })
265
428
  `;
266
429
  // awaitPromise:true so CDP Runtime.evaluate returns the resolved value.
267
- // 5000ms timeout >> the inner 300ms cap; leaves headroom for slow Fabric
268
- // measure paths without letting a hung Hermes runtime stall the tool.
269
- return executeInApp(expression, true, { timeoutMs: 5000, originatingToolName: "inspect_at_point" }, device);
430
+ // 8000ms outer timeout sits above the inner measure budget (up to 3000ms on very large
431
+ // screens) with headroom for slow Fabric measure paths, without letting a hung Hermes
432
+ // runtime stall the tool.
433
+ return executeInApp(expression, true, { timeoutMs: 8000, originatingToolName: "inspect_at_point" }, device);
270
434
  }
271
435
  /**
272
436
  * Harvests raw _debugStack strings for whatever sits at (x, y). Returns an
@@ -1 +1 @@
1
- {"version":3,"file":"inspector.js","sourceRoot":"","sources":["../../src/core/inspector.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"inspector.js","sourceRoot":"","sources":["../../src/core/inspector.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"ios.d.ts","sourceRoot":"","sources":["../../src/core/ios.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ios.d.ts","sourceRoot":"","sources":["../../src/core/ios.ts"],"names":[],"mappings":"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"}
package/build/core/ios.js CHANGED
@@ -816,7 +816,13 @@ export async function iosInputText(text, udid) {
816
816
  return preflight.error;
817
817
  const { driver, targetUdid } = preflight;
818
818
  if (driver === "axe") {
819
- await runAxe("type", text, "--udid", targetUdid);
819
+ // Submit one HID event per chunk instead of AXe's default 200. Text
820
+ // arriving out of order has been observed on device ("Alice" landing as
821
+ // "Aicel", "CASEB" as "CSEBA" — in both cases the second keystroke last),
822
+ // and a single large submission is the plausible cause. Measured at the
823
+ // same latency as plain `axe type` (1432ms vs 1519ms for 19 chars), so
824
+ // the serialisation is free.
825
+ await runAxe("batch", "--udid", targetUdid, "--type-chunk-size", "1", "--step", `type '${text.replace(/'/g, "'\\''")}'`);
820
826
  }
821
827
  else {
822
828
  const { stderr } = await runIdb("ui", "text", "--udid", targetUdid, text);