react-native-ai-debugger 2.12.2 → 2.12.4

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 (292) hide show
  1. package/README.md +15 -1
  2. package/build/__tests__/unit/autoReconnectOptOut.test.js +3 -0
  3. package/build/__tests__/unit/autoReconnectOptOut.test.js.map +1 -1
  4. package/build/__tests__/unit/cdpCommand.test.d.ts +2 -0
  5. package/build/__tests__/unit/cdpCommand.test.d.ts.map +1 -0
  6. package/build/__tests__/unit/cdpCommand.test.js +84 -0
  7. package/build/__tests__/unit/cdpCommand.test.js.map +1 -0
  8. package/build/__tests__/unit/chromium.test.d.ts +2 -0
  9. package/build/__tests__/unit/chromium.test.d.ts.map +1 -0
  10. package/build/__tests__/unit/chromium.test.js +118 -0
  11. package/build/__tests__/unit/chromium.test.js.map +1 -0
  12. package/build/__tests__/unit/chromiumDevice.test.d.ts +2 -0
  13. package/build/__tests__/unit/chromiumDevice.test.d.ts.map +1 -0
  14. package/build/__tests__/unit/chromiumDevice.test.js +115 -0
  15. package/build/__tests__/unit/chromiumDevice.test.js.map +1 -0
  16. package/build/__tests__/unit/chromiumDialogAnswer.test.d.ts +2 -0
  17. package/build/__tests__/unit/chromiumDialogAnswer.test.d.ts.map +1 -0
  18. package/build/__tests__/unit/chromiumDialogAnswer.test.js +71 -0
  19. package/build/__tests__/unit/chromiumDialogAnswer.test.js.map +1 -0
  20. package/build/__tests__/unit/chromiumDialogRaces.test.d.ts +2 -0
  21. package/build/__tests__/unit/chromiumDialogRaces.test.d.ts.map +1 -0
  22. package/build/__tests__/unit/chromiumDialogRaces.test.js +100 -0
  23. package/build/__tests__/unit/chromiumDialogRaces.test.js.map +1 -0
  24. package/build/__tests__/unit/chromiumDialogs.test.d.ts +2 -0
  25. package/build/__tests__/unit/chromiumDialogs.test.d.ts.map +1 -0
  26. package/build/__tests__/unit/chromiumDialogs.test.js +167 -0
  27. package/build/__tests__/unit/chromiumDialogs.test.js.map +1 -0
  28. package/build/__tests__/unit/chromiumDiscovery.test.d.ts +2 -0
  29. package/build/__tests__/unit/chromiumDiscovery.test.d.ts.map +1 -0
  30. package/build/__tests__/unit/chromiumDiscovery.test.js +302 -0
  31. package/build/__tests__/unit/chromiumDiscovery.test.js.map +1 -0
  32. package/build/__tests__/unit/chromiumDom.test.d.ts +2 -0
  33. package/build/__tests__/unit/chromiumDom.test.d.ts.map +1 -0
  34. package/build/__tests__/unit/chromiumDom.test.js +119 -0
  35. package/build/__tests__/unit/chromiumDom.test.js.map +1 -0
  36. package/build/__tests__/unit/chromiumGate.test.d.ts +2 -0
  37. package/build/__tests__/unit/chromiumGate.test.d.ts.map +1 -0
  38. package/build/__tests__/unit/chromiumGate.test.js +149 -0
  39. package/build/__tests__/unit/chromiumGate.test.js.map +1 -0
  40. package/build/__tests__/unit/chromiumInput.test.d.ts +2 -0
  41. package/build/__tests__/unit/chromiumInput.test.d.ts.map +1 -0
  42. package/build/__tests__/unit/chromiumInput.test.js +113 -0
  43. package/build/__tests__/unit/chromiumInput.test.js.map +1 -0
  44. package/build/__tests__/unit/chromiumKeys.test.d.ts +2 -0
  45. package/build/__tests__/unit/chromiumKeys.test.d.ts.map +1 -0
  46. package/build/__tests__/unit/chromiumKeys.test.js +26 -0
  47. package/build/__tests__/unit/chromiumKeys.test.js.map +1 -0
  48. package/build/__tests__/unit/chromiumScreen.test.d.ts +2 -0
  49. package/build/__tests__/unit/chromiumScreen.test.d.ts.map +1 -0
  50. package/build/__tests__/unit/chromiumScreen.test.js +390 -0
  51. package/build/__tests__/unit/chromiumScreen.test.js.map +1 -0
  52. package/build/__tests__/unit/chromiumStaleTarget.test.d.ts +2 -0
  53. package/build/__tests__/unit/chromiumStaleTarget.test.d.ts.map +1 -0
  54. package/build/__tests__/unit/chromiumStaleTarget.test.js +26 -0
  55. package/build/__tests__/unit/chromiumStaleTarget.test.js.map +1 -0
  56. package/build/__tests__/unit/connectionGaps.test.d.ts +2 -0
  57. package/build/__tests__/unit/connectionGaps.test.d.ts.map +1 -0
  58. package/build/__tests__/unit/connectionGaps.test.js +14 -0
  59. package/build/__tests__/unit/connectionGaps.test.js.map +1 -0
  60. package/build/__tests__/unit/contextPreambleGlobals.test.d.ts +2 -0
  61. package/build/__tests__/unit/contextPreambleGlobals.test.d.ts.map +1 -0
  62. package/build/__tests__/unit/contextPreambleGlobals.test.js +25 -0
  63. package/build/__tests__/unit/contextPreambleGlobals.test.js.map +1 -0
  64. package/build/__tests__/unit/deviceResolver.test.js +9 -0
  65. package/build/__tests__/unit/deviceResolver.test.js.map +1 -1
  66. package/build/__tests__/unit/electronLaunch.test.d.ts +2 -0
  67. package/build/__tests__/unit/electronLaunch.test.d.ts.map +1 -0
  68. package/build/__tests__/unit/electronLaunch.test.js +165 -0
  69. package/build/__tests__/unit/electronLaunch.test.js.map +1 -0
  70. package/build/__tests__/unit/fiberRoots.test.d.ts +2 -0
  71. package/build/__tests__/unit/fiberRoots.test.d.ts.map +1 -0
  72. package/build/__tests__/unit/fiberRoots.test.js +95 -0
  73. package/build/__tests__/unit/fiberRoots.test.js.map +1 -0
  74. package/build/__tests__/unit/fiberRootsDrift.test.d.ts +2 -0
  75. package/build/__tests__/unit/fiberRootsDrift.test.d.ts.map +1 -0
  76. package/build/__tests__/unit/fiberRootsDrift.test.js +23 -0
  77. package/build/__tests__/unit/fiberRootsDrift.test.js.map +1 -0
  78. package/build/__tests__/unit/hostAddress.test.d.ts +2 -0
  79. package/build/__tests__/unit/hostAddress.test.d.ts.map +1 -0
  80. package/build/__tests__/unit/hostAddress.test.js +38 -0
  81. package/build/__tests__/unit/hostAddress.test.js.map +1 -0
  82. package/build/__tests__/unit/inputTargetWrapperTestID.test.d.ts +2 -0
  83. package/build/__tests__/unit/inputTargetWrapperTestID.test.d.ts.map +1 -0
  84. package/build/__tests__/unit/inputTargetWrapperTestID.test.js +73 -0
  85. package/build/__tests__/unit/inputTargetWrapperTestID.test.js.map +1 -0
  86. package/build/__tests__/unit/iosTerminateNotRunning.test.d.ts +2 -0
  87. package/build/__tests__/unit/iosTerminateNotRunning.test.d.ts.map +1 -0
  88. package/build/__tests__/unit/iosTerminateNotRunning.test.js +39 -0
  89. package/build/__tests__/unit/iosTerminateNotRunning.test.js.map +1 -0
  90. package/build/__tests__/unit/measureComponent.test.js +1 -1
  91. package/build/__tests__/unit/measureComponent.test.js.map +1 -1
  92. package/build/__tests__/unit/navigation.test.js +20 -0
  93. package/build/__tests__/unit/navigation.test.js.map +1 -1
  94. package/build/__tests__/unit/networkInterceptorFetchMock.test.d.ts +2 -0
  95. package/build/__tests__/unit/networkInterceptorFetchMock.test.d.ts.map +1 -0
  96. package/build/__tests__/unit/networkInterceptorFetchMock.test.js +90 -0
  97. package/build/__tests__/unit/networkInterceptorFetchMock.test.js.map +1 -0
  98. package/build/__tests__/unit/networkInterceptorXhr.test.js +12 -0
  99. package/build/__tests__/unit/networkInterceptorXhr.test.js.map +1 -1
  100. package/build/__tests__/unit/networkMockTool.test.js +12 -1
  101. package/build/__tests__/unit/networkMockTool.test.js.map +1 -1
  102. package/build/__tests__/unit/pressKeyMobile.test.d.ts +2 -0
  103. package/build/__tests__/unit/pressKeyMobile.test.d.ts.map +1 -0
  104. package/build/__tests__/unit/pressKeyMobile.test.js +63 -0
  105. package/build/__tests__/unit/pressKeyMobile.test.js.map +1 -0
  106. package/build/__tests__/unit/reloadAppAutoConnect.test.js +4 -1
  107. package/build/__tests__/unit/reloadAppAutoConnect.test.js.map +1 -1
  108. package/build/__tests__/unit/tapAndroidSerial.test.js +16 -0
  109. package/build/__tests__/unit/tapAndroidSerial.test.js.map +1 -1
  110. package/build/__tests__/unit/textEntry.test.js +9 -0
  111. package/build/__tests__/unit/textEntry.test.js.map +1 -1
  112. package/build/core/android.d.ts +10 -0
  113. package/build/core/android.d.ts.map +1 -1
  114. package/build/core/android.js +17 -0
  115. package/build/core/android.js.map +1 -1
  116. package/build/core/appContext.d.ts.map +1 -1
  117. package/build/core/appContext.js +11 -13
  118. package/build/core/appContext.js.map +1 -1
  119. package/build/core/appDetection.d.ts.map +1 -1
  120. package/build/core/appDetection.js +7 -4
  121. package/build/core/appDetection.js.map +1 -1
  122. package/build/core/cdpCommand.d.ts +4 -0
  123. package/build/core/cdpCommand.d.ts.map +1 -0
  124. package/build/core/cdpCommand.js +58 -0
  125. package/build/core/cdpCommand.js.map +1 -0
  126. package/build/core/chromium.d.ts +157 -0
  127. package/build/core/chromium.d.ts.map +1 -0
  128. package/build/core/chromium.js +480 -0
  129. package/build/core/chromium.js.map +1 -0
  130. package/build/core/chromiumCapabilities.d.ts +11 -0
  131. package/build/core/chromiumCapabilities.d.ts.map +1 -0
  132. package/build/core/chromiumCapabilities.js +35 -0
  133. package/build/core/chromiumCapabilities.js.map +1 -0
  134. package/build/core/chromiumDialogAnswer.d.ts +11 -0
  135. package/build/core/chromiumDialogAnswer.d.ts.map +1 -0
  136. package/build/core/chromiumDialogAnswer.js +61 -0
  137. package/build/core/chromiumDialogAnswer.js.map +1 -0
  138. package/build/core/chromiumDialogs.d.ts +46 -0
  139. package/build/core/chromiumDialogs.d.ts.map +1 -0
  140. package/build/core/chromiumDialogs.js +88 -0
  141. package/build/core/chromiumDialogs.js.map +1 -0
  142. package/build/core/chromiumScreen.d.ts +97 -0
  143. package/build/core/chromiumScreen.d.ts.map +1 -0
  144. package/build/core/chromiumScreen.js +498 -0
  145. package/build/core/chromiumScreen.js.map +1 -0
  146. package/build/core/componentSearch.d.ts.map +1 -1
  147. package/build/core/componentSearch.js +7 -26
  148. package/build/core/componentSearch.js.map +1 -1
  149. package/build/core/componentSource.d.ts.map +1 -1
  150. package/build/core/componentSource.js +3 -11
  151. package/build/core/componentSource.js.map +1 -1
  152. package/build/core/componentTree.d.ts.map +1 -1
  153. package/build/core/componentTree.js +4 -18
  154. package/build/core/componentTree.js.map +1 -1
  155. package/build/core/connection.d.ts +13 -0
  156. package/build/core/connection.d.ts.map +1 -1
  157. package/build/core/connection.js +99 -18
  158. package/build/core/connection.js.map +1 -1
  159. package/build/core/connectionState.d.ts +2 -1
  160. package/build/core/connectionState.d.ts.map +1 -1
  161. package/build/core/connectionState.js +3 -0
  162. package/build/core/connectionState.js.map +1 -1
  163. package/build/core/deviceResolver.d.ts.map +1 -1
  164. package/build/core/deviceResolver.js +8 -5
  165. package/build/core/deviceResolver.js.map +1 -1
  166. package/build/core/electronLaunch.d.ts +25 -0
  167. package/build/core/electronLaunch.d.ts.map +1 -0
  168. package/build/core/electronLaunch.js +113 -0
  169. package/build/core/electronLaunch.js.map +1 -0
  170. package/build/core/errors.d.ts +1 -1
  171. package/build/core/errors.d.ts.map +1 -1
  172. package/build/core/errors.js.map +1 -1
  173. package/build/core/guides.d.ts.map +1 -1
  174. package/build/core/guides.js +17 -8
  175. package/build/core/guides.js.map +1 -1
  176. package/build/core/hostAddress.d.ts +6 -0
  177. package/build/core/hostAddress.d.ts.map +1 -0
  178. package/build/core/hostAddress.js +32 -0
  179. package/build/core/hostAddress.js.map +1 -0
  180. package/build/core/injected/fiberRoots.d.ts +2 -0
  181. package/build/core/injected/fiberRoots.d.ts.map +1 -0
  182. package/build/core/injected/fiberRoots.js +60 -0
  183. package/build/core/injected/fiberRoots.js.map +1 -0
  184. package/build/core/inputTarget.d.ts.map +1 -1
  185. package/build/core/inputTarget.js +49 -10
  186. package/build/core/inputTarget.js.map +1 -1
  187. package/build/core/inspector.d.ts.map +1 -1
  188. package/build/core/inspector.js +6 -22
  189. package/build/core/inspector.js.map +1 -1
  190. package/build/core/ios.d.ts +12 -0
  191. package/build/core/ios.d.ts.map +1 -1
  192. package/build/core/ios.js +40 -1
  193. package/build/core/ios.js.map +1 -1
  194. package/build/core/jsExecute.d.ts.map +1 -1
  195. package/build/core/jsExecute.js +20 -1
  196. package/build/core/jsExecute.js.map +1 -1
  197. package/build/core/measureComponent.d.ts.map +1 -1
  198. package/build/core/measureComponent.js +4 -8
  199. package/build/core/measureComponent.js.map +1 -1
  200. package/build/core/metro.d.ts +20 -1
  201. package/build/core/metro.d.ts.map +1 -1
  202. package/build/core/metro.js +146 -9
  203. package/build/core/metro.js.map +1 -1
  204. package/build/core/mockRules.d.ts +1 -0
  205. package/build/core/mockRules.d.ts.map +1 -1
  206. package/build/core/mockRules.js +8 -0
  207. package/build/core/mockRules.js.map +1 -1
  208. package/build/core/nativeLogs.js +1 -1
  209. package/build/core/nativeLogs.js.map +1 -1
  210. package/build/core/navigate.d.ts +2 -0
  211. package/build/core/navigate.d.ts.map +1 -1
  212. package/build/core/navigate.js +1 -0
  213. package/build/core/navigate.js.map +1 -1
  214. package/build/core/navigation.d.ts.map +1 -1
  215. package/build/core/navigation.js +61 -11
  216. package/build/core/navigation.js.map +1 -1
  217. package/build/core/networkInterceptor.d.ts +2 -2
  218. package/build/core/networkInterceptor.d.ts.map +1 -1
  219. package/build/core/networkInterceptor.js +98 -4
  220. package/build/core/networkInterceptor.js.map +1 -1
  221. package/build/core/pressables.d.ts.map +1 -1
  222. package/build/core/pressables.js +6 -13
  223. package/build/core/pressables.js.map +1 -1
  224. package/build/core/redux.d.ts.map +1 -1
  225. package/build/core/redux.js +6 -10
  226. package/build/core/redux.js.map +1 -1
  227. package/build/core/register.d.ts.map +1 -1
  228. package/build/core/register.js +5 -2
  229. package/build/core/register.js.map +1 -1
  230. package/build/core/rnGlobalsBootstrap.d.ts.map +1 -1
  231. package/build/core/rnGlobalsBootstrap.js +3 -1
  232. package/build/core/rnGlobalsBootstrap.js.map +1 -1
  233. package/build/core/screenLayout.d.ts.map +1 -1
  234. package/build/core/screenLayout.js +4 -13
  235. package/build/core/screenLayout.js.map +1 -1
  236. package/build/core/screenStaleness.d.ts.map +1 -1
  237. package/build/core/screenStaleness.js +2 -0
  238. package/build/core/screenStaleness.js.map +1 -1
  239. package/build/core/screenState.d.ts.map +1 -1
  240. package/build/core/screenState.js +4 -11
  241. package/build/core/screenState.js.map +1 -1
  242. package/build/core/swipeDiagnosis.d.ts.map +1 -1
  243. package/build/core/swipeDiagnosis.js +3 -10
  244. package/build/core/swipeDiagnosis.js.map +1 -1
  245. package/build/core/textEntry.d.ts +1 -1
  246. package/build/core/textEntry.d.ts.map +1 -1
  247. package/build/core/textEntry.js +8 -0
  248. package/build/core/textEntry.js.map +1 -1
  249. package/build/core/types.d.ts +4 -2
  250. package/build/core/types.d.ts.map +1 -1
  251. package/build/pro/chromiumKeys.d.ts +19 -0
  252. package/build/pro/chromiumKeys.d.ts.map +1 -0
  253. package/build/pro/chromiumKeys.js +68 -0
  254. package/build/pro/chromiumKeys.js.map +1 -0
  255. package/build/pro/chromiumSwipe.d.ts +35 -0
  256. package/build/pro/chromiumSwipe.d.ts.map +1 -0
  257. package/build/pro/chromiumSwipe.js +105 -0
  258. package/build/pro/chromiumSwipe.js.map +1 -0
  259. package/build/pro/chromiumTap.d.ts +12 -0
  260. package/build/pro/chromiumTap.d.ts.map +1 -0
  261. package/build/pro/chromiumTap.js +155 -0
  262. package/build/pro/chromiumTap.js.map +1 -0
  263. package/build/pro/tap.d.ts +1 -0
  264. package/build/pro/tap.d.ts.map +1 -1
  265. package/build/pro/tap.js +7 -1
  266. package/build/pro/tap.js.map +1 -1
  267. package/build/tools/componentTools.d.ts.map +1 -1
  268. package/build/tools/componentTools.js +31 -3
  269. package/build/tools/componentTools.js.map +1 -1
  270. package/build/tools/connectionTools.d.ts.map +1 -1
  271. package/build/tools/connectionTools.js +66 -28
  272. package/build/tools/connectionTools.js.map +1 -1
  273. package/build/tools/deviceTools.d.ts.map +1 -1
  274. package/build/tools/deviceTools.js +42 -1
  275. package/build/tools/deviceTools.js.map +1 -1
  276. package/build/tools/executionTools.d.ts.map +1 -1
  277. package/build/tools/executionTools.js +6 -2
  278. package/build/tools/executionTools.js.map +1 -1
  279. package/build/tools/interactionTools.d.ts.map +1 -1
  280. package/build/tools/interactionTools.js +151 -8
  281. package/build/tools/interactionTools.js.map +1 -1
  282. package/build/tools/navigationTools.d.ts.map +1 -1
  283. package/build/tools/navigationTools.js +2 -1
  284. package/build/tools/navigationTools.js.map +1 -1
  285. package/build/tools/networkTools.d.ts.map +1 -1
  286. package/build/tools/networkTools.js +20 -5
  287. package/build/tools/networkTools.js.map +1 -1
  288. package/build/tools/screenshotTools.d.ts.map +1 -1
  289. package/build/tools/screenshotTools.js +452 -373
  290. package/build/tools/screenshotTools.js.map +1 -1
  291. package/package.json +1 -1
  292. package/tools.json +29 -1
@@ -0,0 +1 @@
1
+ {"version":3,"file":"chromiumDiscovery.test.js","sourceRoot":"","sources":["../../../src/__tests__/unit/chromiumDiscovery.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=chromiumDom.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"chromiumDom.test.d.ts","sourceRoot":"","sources":["../../../src/__tests__/unit/chromiumDom.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,119 @@
1
+ import { describe, it, expect, afterEach } from "@jest/globals";
2
+ import { buildDomCollectJs, buildDomPrepareJs } from "../../core/chromium.js";
3
+ function el(tagName, opts = {}, children = []) {
4
+ const e = { tagName, attrs: {}, textContent: "", innerText: "", scrolls: [], ...opts, children };
5
+ for (const c of children)
6
+ c.parent = e;
7
+ return e;
8
+ }
9
+ function descendants(e) {
10
+ return e.children.flatMap((c) => [c, ...descendants(c)]);
11
+ }
12
+ function wire(e) {
13
+ const node = e;
14
+ node.id = e.attrs.id ?? "";
15
+ node.isConnected = true;
16
+ node.getAttribute = (n) => e.attrs[n] ?? null;
17
+ node.getBoundingClientRect = () => {
18
+ const r = e.hidden ? { x: 0, y: 0, width: 0, height: 0 } : (e.rect ?? { x: 10, y: 10, width: 100, height: 20 });
19
+ return { ...r, top: r.y, left: r.x, bottom: r.y + r.height, right: r.x + r.width };
20
+ };
21
+ node.contains = (o) => { for (let p = o; p; p = p.parent)
22
+ if (p === e)
23
+ return true; return false; };
24
+ node.querySelectorAll = (sel) => {
25
+ const all = descendants(e);
26
+ return sel === "*" ? all : all.filter((d) => d.tagName === "INPUT" || d.tagName === "TEXTAREA" || d.isContentEditable);
27
+ };
28
+ node.scrollIntoView = (opts) => { e.scrolls.push(opts); };
29
+ e.children.forEach(wire);
30
+ }
31
+ const g = globalThis;
32
+ const GLOBALS = ["document", "getComputedStyle", "innerWidth", "innerHeight", "devicePixelRatio", "__eb_domTargets"];
33
+ function mount(body) {
34
+ wire(body);
35
+ g.document = { body, activeElement: body, elementFromPoint: () => null };
36
+ g.getComputedStyle = () => ({ visibility: "visible" });
37
+ g.innerWidth = 400;
38
+ g.innerHeight = 600;
39
+ g.devicePixelRatio = 1;
40
+ }
41
+ const collect = (q) => JSON.parse(new Function(`return ${buildDomCollectJs(q)};`)());
42
+ afterEach(() => { for (const k of GLOBALS)
43
+ delete g[k]; });
44
+ describe("DOM collector, text mode", () => {
45
+ it("does not fall back to a visible container when the matching text is hidden inside it", () => {
46
+ const hidden = el("SPAN", { textContent: "Delete", innerText: "", hidden: true });
47
+ const menu = el("DIV", { textContent: "Menu Delete", innerText: "Menu" }, [el("SPAN", { textContent: "Menu", innerText: "Menu" }), hidden]);
48
+ mount(el("BODY", {}, [menu]));
49
+ expect(collect({ mode: "tap", text: "Delete" }).candidates).toEqual([]);
50
+ });
51
+ it("still finds the visible innermost match", () => {
52
+ const btn = el("BUTTON", { textContent: "Save", innerText: "Save" }, [el("SPAN", { textContent: "Save", innerText: "Save" })]);
53
+ mount(el("BODY", {}, [btn]));
54
+ const r = collect({ mode: "tap", text: "Save" });
55
+ expect(r.candidates.map((c) => c.tag)).toEqual(["span"]);
56
+ });
57
+ });
58
+ describe("DOM collector, text mode on a deep page", () => {
59
+ it("keeps innermost matches in linear time, not one contains() per pair", () => {
60
+ let leaf = el("SPAN", { textContent: "x", innerText: "x" });
61
+ for (let n = 0; n < 300; n++)
62
+ leaf = el("DIV", { textContent: "x", innerText: "x" }, [leaf]);
63
+ const sibling = el("P", { textContent: "x", innerText: "x" });
64
+ mount(el("BODY", {}, [leaf, sibling]));
65
+ let calls = 0;
66
+ for (const d of [leaf, ...descendants(leaf), sibling]) {
67
+ const node = d;
68
+ const orig = node.contains;
69
+ node.contains = (o) => { calls++; return orig(o); };
70
+ }
71
+ const r = collect({ mode: "tap", text: "x" });
72
+ expect(r.candidates.map((c) => c.tag)).toEqual(["span", "p"]);
73
+ expect(calls).toBeLessThan(1000);
74
+ });
75
+ it("reports a hidden window in its viewport", () => {
76
+ mount(el("BODY", {}, []));
77
+ g.document.visibilityState = "hidden";
78
+ expect(collect({ mode: "tap", text: "x" }).viewport.hidden).toBe(true);
79
+ });
80
+ });
81
+ describe("DOM collector, input mode on a wrapper", () => {
82
+ it("lists every field under a wrapper testID instead of picking the first", () => {
83
+ const form = el("FORM", { attrs: { "data-testid": "login-form" } }, [
84
+ el("INPUT", { type: "email", value: "" }),
85
+ el("INPUT", { type: "password", value: "" }),
86
+ ]);
87
+ mount(el("BODY", {}, [form]));
88
+ expect(collect({ mode: "input", testID: "login-form" }).candidates).toHaveLength(2);
89
+ });
90
+ it("never names a tap target or matches text by a password's value", () => {
91
+ const pw = el("INPUT", { type: "password", value: "hunter2", attrs: { id: "password" } });
92
+ mount(el("BODY", {}, [pw]));
93
+ expect(collect({ mode: "tap", testID: "password" }).candidates.map((c) => c.text)).toEqual(["[password]"]);
94
+ expect(collect({ mode: "tap", text: "hunter" }).candidates).toEqual([]);
95
+ });
96
+ it("never lists a password field's value", () => {
97
+ const form = el("FORM", { attrs: { "data-testid": "login-form" } }, [
98
+ el("INPUT", { type: "email", value: "a@b.co" }),
99
+ el("INPUT", { type: "password", value: "hunter2" }),
100
+ ]);
101
+ mount(el("BODY", {}, [form]));
102
+ expect(collect({ mode: "input", testID: "login-form" }).candidates.map((c) => c.value)).toEqual(["a@b.co", "[password]"]);
103
+ });
104
+ it("resolves a wrapper around exactly one field", () => {
105
+ const wrap = el("DIV", { attrs: { "data-testid": "email" } }, [el("INPUT", { type: "email", value: "" }), el("BUTTON", { type: "submit" })]);
106
+ mount(el("BODY", {}, [wrap]));
107
+ expect(collect({ mode: "input", testID: "email" }).candidates.map((c) => c.tag)).toEqual(["input"]);
108
+ });
109
+ });
110
+ describe("prepare script", () => {
111
+ it("scrolls instantly, so the rect it reads next is the post-scroll one on a scroll-behavior:smooth page", () => {
112
+ const target = el("BUTTON", { rect: { x: 10, y: 900, width: 100, height: 20 } });
113
+ mount(el("BODY", {}, [target]));
114
+ g.__eb_domTargets = [target];
115
+ new Function(`return ${buildDomPrepareJs(0)};`)();
116
+ expect(target.scrolls).toEqual([{ block: "center", inline: "center", behavior: "instant" }]);
117
+ });
118
+ });
119
+ //# sourceMappingURL=chromiumDom.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"chromiumDom.test.js","sourceRoot":"","sources":["../../../src/__tests__/unit/chromiumDom.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=chromiumGate.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"chromiumGate.test.d.ts","sourceRoot":"","sources":["../../../src/__tests__/unit/chromiumGate.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,149 @@
1
+ process.env.RN_AI_DEVTOOLS_TEST_MODE = "1";
2
+ import { describe, it, expect, beforeEach, afterEach } from "@jest/globals";
3
+ import WebSocket from "ws";
4
+ const { connectedApps } = await import("../../core/state.js");
5
+ const { peekTargetPlatform, getFirstConnectedApp, chromiumAppFor } = await import("../../core/connection.js");
6
+ const { CHROMIUM_TOOLS, chromiumGate } = await import("../../core/chromiumCapabilities.js");
7
+ const { toolRegistry } = await import("../../index.js");
8
+ function makeApp(id, deviceName, platform) {
9
+ return {
10
+ ws: { readyState: WebSocket.OPEN },
11
+ deviceInfo: { id, title: deviceName, description: "", appId: "", type: platform === "chromium" ? "page" : "node", webSocketDebuggerUrl: `ws://x/${id}`, deviceName },
12
+ port: platform === "chromium" ? 9222 : 8081,
13
+ platform,
14
+ };
15
+ }
16
+ describe("chromiumGate", () => {
17
+ it("lets the P5 screen-reading and launch tools through on chromium", () => {
18
+ for (const t of ["get_screen_state", "get_screen_layout", "inspect_at_point", "measure", "electron_launch_app"]) {
19
+ expect(chromiumGate(t, "chromium")).toBeNull();
20
+ }
21
+ });
22
+ it("lets an allowlisted tool through on chromium", () => {
23
+ expect(chromiumGate("get_logs", "chromium")).toBeNull();
24
+ });
25
+ it("rejects a non-allowlisted tool on chromium, naming the tool", () => {
26
+ const r = chromiumGate("pinch", "chromium");
27
+ expect(r?.isError).toBe(true);
28
+ expect(r?.content[0].text).toContain("pinch");
29
+ expect(r?._failureKind).toBe("platform_mismatch");
30
+ });
31
+ it("uses the override message where there is an obvious substitute", () => {
32
+ expect(chromiumGate("navigate", "chromium")?.content[0].text).toContain("execute_in_app");
33
+ });
34
+ it("never touches mobile or unknown platforms", () => {
35
+ expect(chromiumGate("swipe", "ios")).toBeNull();
36
+ expect(chromiumGate("swipe", "android")).toBeNull();
37
+ expect(chromiumGate("swipe", undefined)).toBeNull();
38
+ });
39
+ it("allowlists only tools that actually exist", () => {
40
+ const devOnly = new Set(["reset_telemetry"]);
41
+ for (const name of CHROMIUM_TOOLS)
42
+ if (!devOnly.has(name))
43
+ expect(toolRegistry.has(name)).toBe(true);
44
+ });
45
+ });
46
+ describe("peekTargetPlatform", () => {
47
+ beforeEach(() => connectedApps.clear());
48
+ afterEach(() => connectedApps.clear());
49
+ it("reads the platform of the app the device argument names", () => {
50
+ connectedApps.set("a", makeApp("a", "iPhone 17 Pro", "ios"));
51
+ connectedApps.set("b", makeApp("b", "FluentTalk", "chromium"));
52
+ expect(peekTargetPlatform("get_screen_state", "FluentTalk")).toBe("chromium");
53
+ expect(peekTargetPlatform("get_screen_state", "iPhone")).toBe("ios");
54
+ });
55
+ it("fails open when the device string is ambiguous or unknown", () => {
56
+ connectedApps.set("a", makeApp("a", "FluentTalk", "chromium"));
57
+ connectedApps.set("b", makeApp("b", "FluentTalk#2", "chromium"));
58
+ expect(peekTargetPlatform("tap", "Fluent")).toBeUndefined();
59
+ expect(peekTargetPlatform("tap", "nothing-like-this")).toBeUndefined();
60
+ });
61
+ it("with no device argument, answers for the app the handler will default to", () => {
62
+ connectedApps.set("a", makeApp("a", "FluentTalk", "chromium"));
63
+ expect(peekTargetPlatform("get_screen_state", undefined)).toBe("chromium");
64
+ connectedApps.set("b", makeApp("b", "iPhone 17 Pro", "ios"));
65
+ expect(peekTargetPlatform("get_screen_state", undefined)).toBe("ios");
66
+ expect(getFirstConnectedApp()?.deviceInfo.deviceName).toBe("iPhone 17 Pro");
67
+ });
68
+ it("never infers a platform for a bare ios_/android_ tool call", () => {
69
+ connectedApps.set("a", makeApp("a", "FluentTalk", "chromium"));
70
+ expect(peekTargetPlatform("ios_screenshot", undefined)).toBeUndefined();
71
+ expect(peekTargetPlatform("android_key_event", undefined)).toBeUndefined();
72
+ });
73
+ it("ignores apps whose socket is not open", () => {
74
+ const closed = makeApp("a", "FluentTalk", "chromium");
75
+ closed.ws.readyState = WebSocket.CLOSED;
76
+ connectedApps.set("a", closed);
77
+ expect(peekTargetPlatform("get_screen_state", undefined)).toBeUndefined();
78
+ });
79
+ });
80
+ describe("chromiumAppFor", () => {
81
+ beforeEach(() => connectedApps.clear());
82
+ afterEach(() => connectedApps.clear());
83
+ it("returns the named chromium window, not the first one", () => {
84
+ connectedApps.set("a", makeApp("a", "FluentTalk", "chromium"));
85
+ connectedApps.set("b", makeApp("b", "FluentTalk#2", "chromium"));
86
+ expect(chromiumAppFor("tap", "FluentTalk#2")?.deviceInfo.id).toBe("b");
87
+ expect(chromiumAppFor("tap", "FluentTalk")?.deviceInfo.id).toBe("a");
88
+ });
89
+ it("resolves a chromium window by a substring of its page url", () => {
90
+ const pop = makeApp("a", "FluentTalk", "chromium");
91
+ pop.deviceInfo.url = "http://localhost:5173/index.html?window=popover";
92
+ const main = makeApp("b", "FluentTalk#2", "chromium");
93
+ main.deviceInfo.url = "http://localhost:5173/index.html?window=main";
94
+ connectedApps.set("a", pop);
95
+ connectedApps.set("b", main);
96
+ connectedApps.set("i", makeApp("i", "iPhone Air", "ios"));
97
+ expect(chromiumAppFor("tap", "window=main")?.deviceInfo.id).toBe("b");
98
+ expect(chromiumAppFor("tap", "FluentTalk")?.deviceInfo.id).toBe("a");
99
+ expect(peekTargetPlatform("tap", "iPhone")).toBe("ios");
100
+ expect(peekTargetPlatform("tap", "localhost")).toBeUndefined();
101
+ });
102
+ it("never lets a page url turn a mobile device name ambiguous", () => {
103
+ const page = makeApp("p", "Preview", "chromium");
104
+ page.deviceInfo.url = "http://localhost:5173/?preview=iphone";
105
+ connectedApps.set("p", page);
106
+ connectedApps.set("i", makeApp("i", "iPhone Air", "ios"));
107
+ expect(peekTargetPlatform("tap", "iPhone")).toBe("ios");
108
+ expect(peekTargetPlatform("tap", "preview=iphone")).toBe("chromium");
109
+ });
110
+ it("returns null for a mobile target", () => {
111
+ connectedApps.set("a", makeApp("a", "iPhone 17 Pro", "ios"));
112
+ connectedApps.set("b", makeApp("b", "FluentTalk", "chromium"));
113
+ expect(chromiumAppFor("tap", "iPhone")).toBeNull();
114
+ });
115
+ it("bare call: chromium only when chromium is the default target", () => {
116
+ connectedApps.set("a", makeApp("a", "FluentTalk", "chromium"));
117
+ expect(chromiumAppFor("screenshot", undefined)?.deviceInfo.id).toBe("a");
118
+ connectedApps.set("b", makeApp("b", "iPhone 17 Pro", "ios"));
119
+ expect(chromiumAppFor("screenshot", undefined)).toBeNull();
120
+ });
121
+ it("returns null (fails open) for an ambiguous or unknown device string", () => {
122
+ connectedApps.set("a", makeApp("a", "FluentTalk", "chromium"));
123
+ connectedApps.set("b", makeApp("b", "FluentTalk#2", "chromium"));
124
+ expect(chromiumAppFor("tap", "Fluent")).toBeNull();
125
+ expect(chromiumAppFor("tap", "nothing-like-this")).toBeNull();
126
+ });
127
+ });
128
+ describe("screenshot on chromium", () => {
129
+ it("is allowlisted, and the mobile screenshot tools point at it", () => {
130
+ expect(chromiumGate("screenshot", "chromium")).toBeNull();
131
+ expect(chromiumGate("ios_screenshot", "chromium")?.content[0].text).toContain("screenshot({ device");
132
+ expect(chromiumGate("android_screenshot", "chromium")?.content[0].text).toContain("screenshot({ device");
133
+ });
134
+ });
135
+ describe("tap on chromium", () => {
136
+ it("is allowlisted", () => {
137
+ expect(chromiumGate("tap", "chromium")).toBeNull();
138
+ });
139
+ });
140
+ describe("input_text on chromium", () => {
141
+ it("is allowlisted, and the default refusal lists the interaction tools", () => {
142
+ expect(chromiumGate("input_text", "chromium")).toBeNull();
143
+ expect(chromiumGate("swipe", "chromium")).toBeNull();
144
+ expect(chromiumGate("press_key", "chromium")).toBeNull();
145
+ expect(chromiumGate("handle_dialog", "chromium")).toBeNull();
146
+ expect(chromiumGate("pinch", "chromium")?.content[0].text).toContain("screenshot, tap, input_text, swipe (wheel scroll and drag), press_key, handle_dialog");
147
+ });
148
+ });
149
+ //# sourceMappingURL=chromiumGate.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"chromiumGate.test.js","sourceRoot":"","sources":["../../../src/__tests__/unit/chromiumGate.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=chromiumInput.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"chromiumInput.test.d.ts","sourceRoot":"","sources":["../../../src/__tests__/unit/chromiumInput.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,113 @@
1
+ import { describe, it, expect } from "@jest/globals";
2
+ import { parseKeyCombo, wheelDelta, dragPath, scrollVerdict, MOD } from "../../core/chromium.js";
3
+ function ok(input) {
4
+ const r = parseKeyCombo(input);
5
+ if ("error" in r)
6
+ throw new Error(r.error);
7
+ return r;
8
+ }
9
+ describe("parseKeyCombo", () => {
10
+ it("Enter carries windowsVirtualKeyCode 13 and text, or it does not submit a form", () => {
11
+ const r = ok("Enter");
12
+ expect(r.mods).toBe(0);
13
+ expect(r.key).toMatchObject({ key: "Enter", code: "Enter", windowsVirtualKeyCode: 13, text: "\r" });
14
+ });
15
+ it("Shift+Tab sets the shift bit and sends no text", () => {
16
+ const r = ok("Shift+Tab");
17
+ expect(r.mods).toBe(MOD.Shift);
18
+ expect(r.key).toMatchObject({ key: "Tab", windowsVirtualKeyCode: 9 });
19
+ expect(r.key.text).toBeUndefined();
20
+ });
21
+ it("is case-insensitive and keeps no text under Meta, so the letter is not typed into the field", () => {
22
+ const r = ok("meta+K");
23
+ expect(r.mods).toBe(MOD.Meta);
24
+ expect(r.key).toMatchObject({ key: "k", code: "KeyK", windowsVirtualKeyCode: 75 });
25
+ expect(r.key.text).toBeUndefined();
26
+ });
27
+ it("a plain character types itself", () => {
28
+ expect(ok("a").key).toMatchObject({ key: "a", code: "KeyA", windowsVirtualKeyCode: 65, text: "a" });
29
+ expect(ok("7").key).toMatchObject({ key: "7", code: "Digit7", windowsVirtualKeyCode: 55, text: "7" });
30
+ });
31
+ it("Shift+a types the capital", () => {
32
+ expect(ok("Shift+a").key.text).toBe("A");
33
+ });
34
+ it("accepts aliases and several modifiers", () => {
35
+ const r = ok("Cmd+Shift+Esc");
36
+ expect(r.mods).toBe(MOD.Meta | MOD.Shift);
37
+ expect(r.key.key).toBe("Escape");
38
+ expect(ok("ctrl+enter").mods).toBe(MOD.Control);
39
+ expect(ok("Space").key).toMatchObject({ key: " ", code: "Space", text: " " });
40
+ expect(ok("F12").key.windowsVirtualKeyCode).toBe(123);
41
+ });
42
+ it("a '+' key is reachable", () => {
43
+ expect(ok("+").key.key).toBe("+");
44
+ expect(ok("Shift++").mods).toBe(MOD.Shift);
45
+ });
46
+ it("an unknown key lists the valid names", () => {
47
+ const r = parseKeyCombo("Hyper+Q");
48
+ expect("error" in r && r.error).toMatch(/Hyper/);
49
+ const u = parseKeyCombo("Launch");
50
+ expect("error" in u && u.error).toMatch(/Enter.*Escape.*ArrowUp/s);
51
+ expect("error" in parseKeyCombo("")).toBe(true);
52
+ expect("error" in parseKeyCombo("Shift")).toBe(true);
53
+ });
54
+ });
55
+ describe("wheelDelta", () => {
56
+ const vp1 = { w: 1000, h: 800, dpr: 1 };
57
+ it("up reveals content below: positive deltaY, 33% of the height by default", () => {
58
+ expect(wheelDelta("up", undefined, vp1)).toEqual({ dx: 0, dy: 264 });
59
+ expect(wheelDelta("down", undefined, vp1)).toEqual({ dx: 0, dy: -264 });
60
+ });
61
+ it("left reveals content to the right, like the finger moving right-to-left", () => {
62
+ expect(wheelDelta("left", undefined, vp1)).toEqual({ dx: 330, dy: 0 });
63
+ expect(wheelDelta("right", undefined, vp1)).toEqual({ dx: -330, dy: 0 });
64
+ });
65
+ it("distance is screenshot pixels, divided by pxPerCss at dpr 2", () => {
66
+ expect(wheelDelta("up", 400, { w: 380, h: 600, dpr: 2 })).toEqual({ dx: 0, dy: 200 });
67
+ });
68
+ it("uses the downscaled factor past the cap (1440x900 @2 delivers 2000 wide)", () => {
69
+ const k = 2000 / 1440;
70
+ expect(wheelDelta("up", 500, { w: 1440, h: 900, dpr: 2 }).dy).toBeCloseTo(500 / k);
71
+ });
72
+ });
73
+ describe("dragPath", () => {
74
+ it("starts on start, ends exactly on end, at least 5 steps, monotonic in time and space", () => {
75
+ const p = dragPath({ x: 10, y: 20 }, { x: 110, y: 20 }, 50);
76
+ expect(p[0]).toEqual({ x: 10, y: 20, at: 0 });
77
+ expect(p[p.length - 1]).toEqual({ x: 110, y: 20, at: 50 });
78
+ expect(p.length).toBeGreaterThanOrEqual(6);
79
+ for (let i = 1; i < p.length; i++) {
80
+ expect(p[i].at).toBeGreaterThan(p[i - 1].at);
81
+ expect(p[i].x).toBeGreaterThan(p[i - 1].x);
82
+ }
83
+ });
84
+ it("is about 60 Hz", () => {
85
+ expect(dragPath({ x: 0, y: 0 }, { x: 0, y: 100 }, 500).length).toBe(Math.round(500 / 16) + 1);
86
+ });
87
+ });
88
+ describe("scrollVerdict", () => {
89
+ const at = (top, left = 0, maxTop = 1000, maxLeft = 0) => ({ container: "<div.list>", top, left, maxTop, maxLeft });
90
+ it("reports the movement on the axis", () => {
91
+ expect(scrollVerdict(at(0), at(264), { dx: 0, dy: 264 })).toEqual({ moved: 264 });
92
+ });
93
+ it("no container under the point", () => {
94
+ expect(scrollVerdict({ container: null }, { container: null }, { dx: 0, dy: 100 }).warning).toMatch(/no scroll container/);
95
+ });
96
+ it("already at top", () => {
97
+ expect(scrollVerdict(at(0), at(0), { dx: 0, dy: -100 }).warning).toMatch(/already at the top/);
98
+ });
99
+ it("already at end", () => {
100
+ expect(scrollVerdict(at(1000), at(1000), { dx: 0, dy: 100 }).warning).toMatch(/already at the end/);
101
+ });
102
+ it("not scrollable on this axis", () => {
103
+ expect(scrollVerdict(at(0), at(0), { dx: 100, dy: 0 }).warning).toMatch(/not scrollable horizontally/);
104
+ });
105
+ it("an inner list at its end hands the wheel to the page: that counts as scrolled, attributed to the page", () => {
106
+ const inner = (pageTop) => ({ container: "<div.list>", top: 1000, left: 0, maxTop: 1000, maxLeft: 0, page: { top: pageTop, left: 0 } });
107
+ expect(scrollVerdict(inner(0), inner(264), { dx: 0, dy: 264 })).toEqual({ moved: 264, chainedTo: "the page" });
108
+ });
109
+ it("mid-scroll and did not move", () => {
110
+ expect(scrollVerdict(at(500), at(500), { dx: 0, dy: 100 }).warning).toMatch(/did not move/);
111
+ });
112
+ });
113
+ //# sourceMappingURL=chromiumInput.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"chromiumInput.test.js","sourceRoot":"","sources":["../../../src/__tests__/unit/chromiumInput.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=chromiumKeys.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"chromiumKeys.test.d.ts","sourceRoot":"","sources":["../../../src/__tests__/unit/chromiumKeys.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,26 @@
1
+ import { describe, it, expect, jest } from "@jest/globals";
2
+ const evaluateJson = jest.fn(async (_ws, js) => {
3
+ if (js.includes("__eb_domTargets = els")) {
4
+ return { viewport: { w: 800, h: 600, dpr: 1 }, focused: false, total: 1, candidates: [{ i: 0, tag: "input", text: "", testID: "note", label: null, placeholder: null, value: "abc", rect: { x: 0, y: 0, w: 10, h: 10 } }] };
5
+ }
6
+ if (js.includes("Retry.\" });\n var F ="))
7
+ return { focused: false };
8
+ return null;
9
+ });
10
+ const sendCdpCommand = jest.fn(async () => ({}));
11
+ jest.unstable_mockModule("../../core/cdpCommand.js", () => ({ evaluateJson, sendCdpCommand }));
12
+ const { chromiumPressKey } = await import("../../pro/chromiumKeys.js");
13
+ const { parseKeyCombo } = await import("../../core/chromium.js");
14
+ describe("chromiumPressKey", () => {
15
+ it("refuses to send keys when the target did not take focus, so they cannot land in another field", async () => {
16
+ const combo = parseKeyCombo("Backspace");
17
+ if ("error" in combo)
18
+ throw new Error(combo.error);
19
+ const app = { ws: {}, deviceInfo: { deviceName: "page" } };
20
+ const r = await chromiumPressKey(app, { input: "Backspace", combo, repeat: 10, testID: "note" });
21
+ expect(r.isError).toBe(true);
22
+ expect(r.content[0].text).toMatch(/did not take focus/);
23
+ expect(sendCdpCommand).not.toHaveBeenCalled();
24
+ });
25
+ });
26
+ //# sourceMappingURL=chromiumKeys.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"chromiumKeys.test.js","sourceRoot":"","sources":["../../../src/__tests__/unit/chromiumKeys.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,eAAe,CAAC;AAG3D,MAAM,YAAY,GAAG,IAAI,CAAC,EAAE,CAAC,KAAK,EAAE,GAAY,EAAE,EAAU,EAAoB,EAAE;IAC9E,IAAI,EAAE,CAAC,QAAQ,CAAC,uBAAuB,CAAC,EAAE,CAAC;QACvC,OAAO,EAAE,QAAQ,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,EAAE,UAAU,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,OAAO,EAAE,IAAI,EAAE,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC;IAChO,CAAC;IACD,IAAI,EAAE,CAAC,QAAQ,CAAC,2BAA2B,CAAC;QAAE,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC;IACxE,OAAO,IAAI,CAAC;AAChB,CAAC,CAAC,CAAC;AACH,MAAM,cAAc,GAAG,IAAI,CAAC,EAAE,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AACjD,IAAI,CAAC,mBAAmB,CAAC,0BAA0B,EAAE,GAAG,EAAE,CAAC,CAAC,EAAE,YAAY,EAAE,cAAc,EAAE,CAAC,CAAC,CAAC;AAE/F,MAAM,EAAE,gBAAgB,EAAE,GAAG,MAAM,MAAM,CAAC,2BAA2B,CAAC,CAAC;AACvE,MAAM,EAAE,aAAa,EAAE,GAAG,MAAM,MAAM,CAAC,wBAAwB,CAAC,CAAC;AAEjE,QAAQ,CAAC,kBAAkB,EAAE,GAAG,EAAE;IAC9B,EAAE,CAAC,+FAA+F,EAAE,KAAK,IAAI,EAAE;QAC3G,MAAM,KAAK,GAAG,aAAa,CAAC,WAAW,CAAC,CAAC;QACzC,IAAI,OAAO,IAAI,KAAK;YAAE,MAAM,IAAI,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;QACnD,MAAM,GAAG,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,UAAU,EAAE,EAAE,UAAU,EAAE,MAAM,EAAE,EAAW,CAAC;QACpE,MAAM,CAAC,GAAG,MAAM,gBAAgB,CAAC,GAAG,EAAE,EAAE,KAAK,EAAE,WAAW,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;QACjG,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC7B,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,oBAAoB,CAAC,CAAC;QACxD,MAAM,CAAC,cAAc,CAAC,CAAC,GAAG,CAAC,gBAAgB,EAAE,CAAC;IAClD,CAAC,CAAC,CAAC;AACP,CAAC,CAAC,CAAC"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=chromiumScreen.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"chromiumScreen.test.d.ts","sourceRoot":"","sources":["../../../src/__tests__/unit/chromiumScreen.test.ts"],"names":[],"mappings":""}