react-native-ai-debugger 1.1.6 → 1.4.33

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 (168) hide show
  1. package/LICENSE +1 -1
  2. package/README.md +386 -45
  3. package/build/__tests__/helpers/tap-test-helpers.d.ts +36 -0
  4. package/build/__tests__/helpers/tap-test-helpers.d.ts.map +1 -0
  5. package/build/__tests__/helpers/tap-test-helpers.js +130 -0
  6. package/build/__tests__/helpers/tap-test-helpers.js.map +1 -0
  7. package/build/__tests__/integration/connection-health.test.js +12 -6
  8. package/build/__tests__/integration/connection-health.test.js.map +1 -1
  9. package/build/__tests__/integration/execute-in-app.test.js +2 -1
  10. package/build/__tests__/integration/execute-in-app.test.js.map +1 -1
  11. package/build/__tests__/integration/tap-strategies.test.d.ts +2 -0
  12. package/build/__tests__/integration/tap-strategies.test.d.ts.map +1 -0
  13. package/build/__tests__/integration/tap-strategies.test.js +329 -0
  14. package/build/__tests__/integration/tap-strategies.test.js.map +1 -0
  15. package/build/__tests__/integration/tools.test.js +9 -10
  16. package/build/__tests__/integration/tools.test.js.map +1 -1
  17. package/build/__tests__/unit/burst.test.d.ts +2 -0
  18. package/build/__tests__/unit/burst.test.d.ts.map +1 -0
  19. package/build/__tests__/unit/burst.test.js +50 -0
  20. package/build/__tests__/unit/burst.test.js.map +1 -0
  21. package/build/__tests__/unit/connection-health.test.js +26 -16
  22. package/build/__tests__/unit/connection-health.test.js.map +1 -1
  23. package/build/__tests__/unit/fiberMatch.test.d.ts +2 -0
  24. package/build/__tests__/unit/fiberMatch.test.d.ts.map +1 -0
  25. package/build/__tests__/unit/fiberMatch.test.js +114 -0
  26. package/build/__tests__/unit/fiberMatch.test.js.map +1 -0
  27. package/build/__tests__/unit/fingerprint.test.d.ts +2 -0
  28. package/build/__tests__/unit/fingerprint.test.d.ts.map +1 -0
  29. package/build/__tests__/unit/fingerprint.test.js +89 -0
  30. package/build/__tests__/unit/fingerprint.test.js.map +1 -0
  31. package/build/__tests__/unit/imageBuffer.test.d.ts +2 -0
  32. package/build/__tests__/unit/imageBuffer.test.d.ts.map +1 -0
  33. package/build/__tests__/unit/imageBuffer.test.js +128 -0
  34. package/build/__tests__/unit/imageBuffer.test.js.map +1 -0
  35. package/build/__tests__/unit/logs.test.js +9 -0
  36. package/build/__tests__/unit/logs.test.js.map +1 -1
  37. package/build/__tests__/unit/networkInterceptor.test.d.ts +2 -0
  38. package/build/__tests__/unit/networkInterceptor.test.d.ts.map +1 -0
  39. package/build/__tests__/unit/networkInterceptor.test.js +104 -0
  40. package/build/__tests__/unit/networkInterceptor.test.js.map +1 -0
  41. package/build/__tests__/unit/screenshot-diff.test.d.ts +2 -0
  42. package/build/__tests__/unit/screenshot-diff.test.d.ts.map +1 -0
  43. package/build/__tests__/unit/screenshot-diff.test.js +97 -0
  44. package/build/__tests__/unit/screenshot-diff.test.js.map +1 -0
  45. package/build/__tests__/unit/tap.test.js +542 -25
  46. package/build/__tests__/unit/tap.test.js.map +1 -1
  47. package/build/core/android.d.ts.map +1 -1
  48. package/build/core/android.js +104 -113
  49. package/build/core/android.js.map +1 -1
  50. package/build/core/appDetection.d.ts +8 -0
  51. package/build/core/appDetection.d.ts.map +1 -0
  52. package/build/core/appDetection.js +115 -0
  53. package/build/core/appDetection.js.map +1 -0
  54. package/build/core/bundle.d.ts.map +1 -1
  55. package/build/core/bundle.js +15 -23
  56. package/build/core/bundle.js.map +1 -1
  57. package/build/core/config.d.ts +8 -0
  58. package/build/core/config.d.ts.map +1 -0
  59. package/build/core/config.js +27 -0
  60. package/build/core/config.js.map +1 -0
  61. package/build/core/connection.d.ts +47 -3
  62. package/build/core/connection.d.ts.map +1 -1
  63. package/build/core/connection.js +519 -124
  64. package/build/core/connection.js.map +1 -1
  65. package/build/core/executor.d.ts +82 -14
  66. package/build/core/executor.d.ts.map +1 -1
  67. package/build/core/executor.js +1869 -418
  68. package/build/core/executor.js.map +1 -1
  69. package/build/core/feedback.d.ts +18 -0
  70. package/build/core/feedback.d.ts.map +1 -0
  71. package/build/core/feedback.js +73 -0
  72. package/build/core/feedback.js.map +1 -0
  73. package/build/core/fiberMatch.d.ts +25 -0
  74. package/build/core/fiberMatch.d.ts.map +1 -0
  75. package/build/core/fiberMatch.js +35 -0
  76. package/build/core/fiberMatch.js.map +1 -0
  77. package/build/core/fingerprint.d.ts +4 -0
  78. package/build/core/fingerprint.d.ts.map +1 -0
  79. package/build/core/fingerprint.js +47 -0
  80. package/build/core/fingerprint.js.map +1 -0
  81. package/build/core/guides.d.ts.map +1 -1
  82. package/build/core/guides.js +66 -3
  83. package/build/core/guides.js.map +1 -1
  84. package/build/core/imageBuffer.d.ts +37 -0
  85. package/build/core/imageBuffer.d.ts.map +1 -0
  86. package/build/core/imageBuffer.js +58 -0
  87. package/build/core/imageBuffer.js.map +1 -0
  88. package/build/core/index.d.ts +22 -17
  89. package/build/core/index.d.ts.map +1 -1
  90. package/build/core/index.js +23 -19
  91. package/build/core/index.js.map +1 -1
  92. package/build/core/ios.d.ts +36 -7
  93. package/build/core/ios.d.ts.map +1 -1
  94. package/build/core/ios.js +561 -326
  95. package/build/core/ios.js.map +1 -1
  96. package/build/core/license.d.ts +38 -0
  97. package/build/core/license.d.ts.map +1 -0
  98. package/build/core/license.js +243 -0
  99. package/build/core/license.js.map +1 -0
  100. package/build/core/logbox.d.ts +57 -0
  101. package/build/core/logbox.d.ts.map +1 -0
  102. package/build/core/logbox.js +282 -0
  103. package/build/core/logbox.js.map +1 -0
  104. package/build/core/logs.d.ts +1 -0
  105. package/build/core/logs.d.ts.map +1 -1
  106. package/build/core/logs.js +5 -0
  107. package/build/core/logs.js.map +1 -1
  108. package/build/core/metro.d.ts +8 -0
  109. package/build/core/metro.d.ts.map +1 -1
  110. package/build/core/metro.js +28 -0
  111. package/build/core/metro.js.map +1 -1
  112. package/build/core/networkInterceptor.d.ts +29 -2
  113. package/build/core/networkInterceptor.d.ts.map +1 -1
  114. package/build/core/networkInterceptor.js +195 -191
  115. package/build/core/networkInterceptor.js.map +1 -1
  116. package/build/core/ocr.d.ts +8 -3
  117. package/build/core/ocr.d.ts.map +1 -1
  118. package/build/core/ocr.js +116 -15
  119. package/build/core/ocr.js.map +1 -1
  120. package/build/core/posthog.d.ts +5 -0
  121. package/build/core/posthog.d.ts.map +1 -0
  122. package/build/core/posthog.js +46 -0
  123. package/build/core/posthog.js.map +1 -0
  124. package/build/core/sdkBridge.d.ts +67 -0
  125. package/build/core/sdkBridge.d.ts.map +1 -0
  126. package/build/core/sdkBridge.js +148 -0
  127. package/build/core/sdkBridge.js.map +1 -0
  128. package/build/core/state.d.ts +25 -5
  129. package/build/core/state.d.ts.map +1 -1
  130. package/build/core/state.js +79 -10
  131. package/build/core/state.js.map +1 -1
  132. package/build/core/telemetry.d.ts +21 -1
  133. package/build/core/telemetry.d.ts.map +1 -1
  134. package/build/core/telemetry.js +166 -10
  135. package/build/core/telemetry.js.map +1 -1
  136. package/build/core/types.d.ts +11 -0
  137. package/build/core/types.d.ts.map +1 -1
  138. package/build/index.js +1490 -324
  139. package/build/index.js.map +1 -1
  140. package/build/pro/screenshot-diff.d.ts +10 -0
  141. package/build/pro/screenshot-diff.d.ts.map +1 -0
  142. package/build/pro/screenshot-diff.js +38 -0
  143. package/build/pro/screenshot-diff.js.map +1 -0
  144. package/build/pro/tap.d.ts +84 -2
  145. package/build/pro/tap.d.ts.map +1 -1
  146. package/build/pro/tap.js +835 -129
  147. package/build/pro/tap.js.map +1 -1
  148. package/build/tools/accountTools.d.ts +44 -0
  149. package/build/tools/accountTools.d.ts.map +1 -0
  150. package/build/tools/accountTools.js +217 -0
  151. package/build/tools/accountTools.js.map +1 -0
  152. package/package.json +8 -7
  153. package/build/core/httpServer.d.ts +0 -14
  154. package/build/core/httpServer.d.ts.map +0 -1
  155. package/build/core/httpServer.js +0 -2459
  156. package/build/core/httpServer.js.map +0 -1
  157. package/build/core/httpServerProcess.d.ts +0 -25
  158. package/build/core/httpServerProcess.d.ts.map +0 -1
  159. package/build/core/httpServerProcess.js +0 -153
  160. package/build/core/httpServerProcess.js.map +0 -1
  161. package/build/core/tap.d.ts +0 -91
  162. package/build/core/tap.d.ts.map +0 -1
  163. package/build/core/tap.js +0 -542
  164. package/build/core/tap.js.map +0 -1
  165. package/build/httpServerStandalone.d.ts +0 -7
  166. package/build/httpServerStandalone.d.ts.map +0 -1
  167. package/build/httpServerStandalone.js +0 -31
  168. package/build/httpServerStandalone.js.map +0 -1
@@ -0,0 +1,50 @@
1
+ import { describe, it, expect } from "@jest/globals";
2
+ import sharp from "sharp";
3
+ import { analyzeBurstFrames } from "../../pro/tap.js";
4
+ async function solidImage(r, g, b, size = 100) {
5
+ return sharp({
6
+ create: { width: size, height: size, channels: 3, background: { r, g, b } },
7
+ }).png().toBuffer();
8
+ }
9
+ describe("analyzeBurstFrames", () => {
10
+ it("detects no change when all frames are identical", async () => {
11
+ const frame = await solidImage(200, 200, 200);
12
+ const result = await analyzeBurstFrames([frame, frame, frame, frame, frame]);
13
+ expect(result.transientChangeDetected).toBe(false);
14
+ expect(result.peakChangeRate).toBeLessThan(0.005);
15
+ expect(result.persistentChangeRate).toBeLessThan(0.005);
16
+ expect(result.meaningful).toBe(false);
17
+ });
18
+ it("detects persistent change (last frame differs from first)", async () => {
19
+ const before = await solidImage(200, 200, 200);
20
+ const after = await solidImage(255, 0, 0);
21
+ const result = await analyzeBurstFrames([before, before, before, after, after]);
22
+ expect(result.meaningful).toBe(true);
23
+ expect(result.persistentChangeRate).toBeGreaterThan(0.005);
24
+ });
25
+ it("detects transient change (middle frame differs, last matches first)", async () => {
26
+ const normal = await solidImage(200, 200, 200);
27
+ const highlight = await solidImage(255, 0, 0);
28
+ const result = await analyzeBurstFrames([normal, highlight, normal, normal, normal]);
29
+ expect(result.transientChangeDetected).toBe(true);
30
+ expect(result.meaningful).toBe(true);
31
+ expect(result.peakFrame).toBe(1);
32
+ expect(result.peakChangeRate).toBeGreaterThan(0.5);
33
+ expect(result.persistentChangeRate).toBeLessThan(0.005);
34
+ });
35
+ it("handles 2 frames (minimum)", async () => {
36
+ const a = await solidImage(200, 200, 200);
37
+ const b = await solidImage(255, 0, 0);
38
+ const result = await analyzeBurstFrames([a, b]);
39
+ expect(result.meaningful).toBe(true);
40
+ expect(result.persistentChangeRate).toBeGreaterThan(0.5);
41
+ });
42
+ it("returns correct framesWithChange indices", async () => {
43
+ const normal = await solidImage(200, 200, 200);
44
+ const highlight = await solidImage(255, 0, 0);
45
+ const result = await analyzeBurstFrames([normal, highlight, highlight, normal, normal]);
46
+ expect(result.framesWithChange).toContain(1);
47
+ expect(result.framesWithChange).toContain(3);
48
+ });
49
+ });
50
+ //# sourceMappingURL=burst.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"burst.test.js","sourceRoot":"","sources":["../../../src/__tests__/unit/burst.test.ts"],"names":[],"mappings":"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"}
@@ -1,27 +1,37 @@
1
1
  import { describe, it, expect, beforeEach } from "@jest/globals";
2
- import { getLastCDPMessageTime, updateLastCDPMessageTime } from "../../core/state.js";
3
- describe("lastCDPMessageAt tracking", () => {
2
+ import { getLastCDPMessageTime, updateLastCDPMessageTime, clearLastCDPMessageTime, clearAllCDPMessageTimes, } from "../../core/state.js";
3
+ describe("lastCDPMessageAt tracking (per-device)", () => {
4
4
  beforeEach(() => {
5
- updateLastCDPMessageTime(null);
5
+ clearAllCDPMessageTimes();
6
6
  });
7
- it("starts as null", () => {
7
+ it("returns null for unknown appKey", () => {
8
+ expect(getLastCDPMessageTime("8081-device1")).toBeNull();
9
+ });
10
+ it("returns null when called with no appKey (global fallback)", () => {
8
11
  expect(getLastCDPMessageTime()).toBeNull();
9
12
  });
10
- it("updates when called with a date", () => {
13
+ it("updates per appKey", () => {
11
14
  const now = new Date();
12
- updateLastCDPMessageTime(now);
13
- expect(getLastCDPMessageTime()).toBe(now);
15
+ updateLastCDPMessageTime("8081-device1", now);
16
+ expect(getLastCDPMessageTime("8081-device1")).toBe(now);
17
+ expect(getLastCDPMessageTime("8081-device2")).toBeNull();
18
+ });
19
+ it("global fallback returns most recent across all devices", () => {
20
+ const older = new Date("2026-01-01");
21
+ const newer = new Date("2026-01-02");
22
+ updateLastCDPMessageTime("8081-device1", older);
23
+ updateLastCDPMessageTime("8081-device2", newer);
24
+ expect(getLastCDPMessageTime()).toEqual(newer);
14
25
  });
15
- it("updates to latest value on subsequent calls", () => {
16
- const first = new Date("2026-01-01");
17
- const second = new Date("2026-01-02");
18
- updateLastCDPMessageTime(first);
19
- updateLastCDPMessageTime(second);
20
- expect(getLastCDPMessageTime()).toBe(second);
26
+ it("clearLastCDPMessageTime removes a specific device", () => {
27
+ updateLastCDPMessageTime("8081-device1", new Date());
28
+ clearLastCDPMessageTime("8081-device1");
29
+ expect(getLastCDPMessageTime("8081-device1")).toBeNull();
21
30
  });
22
- it("can be reset to null", () => {
23
- updateLastCDPMessageTime(new Date());
24
- updateLastCDPMessageTime(null);
31
+ it("clearAllCDPMessageTimes removes all entries", () => {
32
+ updateLastCDPMessageTime("8081-device1", new Date());
33
+ updateLastCDPMessageTime("8081-device2", new Date());
34
+ clearAllCDPMessageTimes();
25
35
  expect(getLastCDPMessageTime()).toBeNull();
26
36
  });
27
37
  });
@@ -1 +1 @@
1
- {"version":3,"file":"connection-health.test.js","sourceRoot":"","sources":["../../../src/__tests__/unit/connection-health.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAQ,QAAQ,EAAE,EAAE,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AACvE,OAAO,EAAE,qBAAqB,EAAE,wBAAwB,EAAE,MAAM,qBAAqB,CAAC;AAEtF,QAAQ,CAAC,2BAA2B,EAAE,GAAG,EAAE;IACvC,UAAU,CAAC,GAAG,EAAE;QACZ,wBAAwB,CAAC,IAAI,CAAC,CAAC;IACnC,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,gBAAgB,EAAE,GAAG,EAAE;QACtB,MAAM,CAAC,qBAAqB,EAAE,CAAC,CAAC,QAAQ,EAAE,CAAC;IAC/C,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,iCAAiC,EAAE,GAAG,EAAE;QACvC,MAAM,GAAG,GAAG,IAAI,IAAI,EAAE,CAAC;QACvB,wBAAwB,CAAC,GAAG,CAAC,CAAC;QAC9B,MAAM,CAAC,qBAAqB,EAAE,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAC9C,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,6CAA6C,EAAE,GAAG,EAAE;QACnD,MAAM,KAAK,GAAG,IAAI,IAAI,CAAC,YAAY,CAAC,CAAC;QACrC,MAAM,MAAM,GAAG,IAAI,IAAI,CAAC,YAAY,CAAC,CAAC;QACtC,wBAAwB,CAAC,KAAK,CAAC,CAAC;QAChC,wBAAwB,CAAC,MAAM,CAAC,CAAC;QACjC,MAAM,CAAC,qBAAqB,EAAE,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IACjD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,sBAAsB,EAAE,GAAG,EAAE;QAC5B,wBAAwB,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC;QACrC,wBAAwB,CAAC,IAAI,CAAC,CAAC;QAC/B,MAAM,CAAC,qBAAqB,EAAE,CAAC,CAAC,QAAQ,EAAE,CAAC;IAC/C,CAAC,CAAC,CAAC;AACP,CAAC,CAAC,CAAC"}
1
+ {"version":3,"file":"connection-health.test.js","sourceRoot":"","sources":["../../../src/__tests__/unit/connection-health.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAQ,QAAQ,EAAE,EAAE,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AACvE,OAAO,EACH,qBAAqB,EACrB,wBAAwB,EACxB,uBAAuB,EACvB,uBAAuB,GAC1B,MAAM,qBAAqB,CAAC;AAE7B,QAAQ,CAAC,wCAAwC,EAAE,GAAG,EAAE;IACpD,UAAU,CAAC,GAAG,EAAE;QACZ,uBAAuB,EAAE,CAAC;IAC9B,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,iCAAiC,EAAE,GAAG,EAAE;QACvC,MAAM,CAAC,qBAAqB,CAAC,cAAc,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC;IAC7D,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,2DAA2D,EAAE,GAAG,EAAE;QACjE,MAAM,CAAC,qBAAqB,EAAE,CAAC,CAAC,QAAQ,EAAE,CAAC;IAC/C,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,oBAAoB,EAAE,GAAG,EAAE;QAC1B,MAAM,GAAG,GAAG,IAAI,IAAI,EAAE,CAAC;QACvB,wBAAwB,CAAC,cAAc,EAAE,GAAG,CAAC,CAAC;QAC9C,MAAM,CAAC,qBAAqB,CAAC,cAAc,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACxD,MAAM,CAAC,qBAAqB,CAAC,cAAc,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC;IAC7D,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,wDAAwD,EAAE,GAAG,EAAE;QAC9D,MAAM,KAAK,GAAG,IAAI,IAAI,CAAC,YAAY,CAAC,CAAC;QACrC,MAAM,KAAK,GAAG,IAAI,IAAI,CAAC,YAAY,CAAC,CAAC;QACrC,wBAAwB,CAAC,cAAc,EAAE,KAAK,CAAC,CAAC;QAChD,wBAAwB,CAAC,cAAc,EAAE,KAAK,CAAC,CAAC;QAChD,MAAM,CAAC,qBAAqB,EAAE,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;IACnD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,mDAAmD,EAAE,GAAG,EAAE;QACzD,wBAAwB,CAAC,cAAc,EAAE,IAAI,IAAI,EAAE,CAAC,CAAC;QACrD,uBAAuB,CAAC,cAAc,CAAC,CAAC;QACxC,MAAM,CAAC,qBAAqB,CAAC,cAAc,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC;IAC7D,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,6CAA6C,EAAE,GAAG,EAAE;QACnD,wBAAwB,CAAC,cAAc,EAAE,IAAI,IAAI,EAAE,CAAC,CAAC;QACrD,wBAAwB,CAAC,cAAc,EAAE,IAAI,IAAI,EAAE,CAAC,CAAC;QACrD,uBAAuB,EAAE,CAAC;QAC1B,MAAM,CAAC,qBAAqB,EAAE,CAAC,CAAC,QAAQ,EAAE,CAAC;IAC/C,CAAC,CAAC,CAAC;AACP,CAAC,CAAC,CAAC"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=fiberMatch.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fiberMatch.test.d.ts","sourceRoot":"","sources":["../../../src/__tests__/unit/fiberMatch.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,114 @@
1
+ import { describe, it, expect } from "@jest/globals";
2
+ import { matchFiberCandidates } from "../../core/fiberMatch.js";
3
+ function candidate(overrides = {}) {
4
+ return {
5
+ name: "Pressable",
6
+ meaningfulComponentName: null,
7
+ text: "",
8
+ testID: null,
9
+ ancestorTestIDs: [],
10
+ isInput: false,
11
+ isPressable: true,
12
+ source: "direct",
13
+ ...overrides,
14
+ };
15
+ }
16
+ describe("matchFiberCandidates", () => {
17
+ it("matches pressable by its own testID (regression)", () => {
18
+ const list = [
19
+ candidate({ testID: "other" }),
20
+ candidate({ testID: "submit-btn" }),
21
+ candidate({ testID: null }),
22
+ ];
23
+ const r = matchFiberCandidates(list, { testID: "submit-btn" });
24
+ expect(r).not.toBeNull();
25
+ expect(r.matchIndex).toBe(1);
26
+ expect(r.totalMatches).toBe(1);
27
+ });
28
+ it("matches pressable by ancestor testID when its own testID does not match", () => {
29
+ const list = [
30
+ candidate({ testID: null, ancestorTestIDs: ["walk-detail-delete-button"] }),
31
+ candidate({ testID: "other", ancestorTestIDs: ["unrelated"] }),
32
+ ];
33
+ const r = matchFiberCandidates(list, { testID: "walk-detail-delete-button" });
34
+ expect(r).not.toBeNull();
35
+ expect(r.matchIndex).toBe(0);
36
+ });
37
+ it("matches pressable by its own fiber name (regression)", () => {
38
+ const list = [
39
+ candidate({ name: "Pressable" }),
40
+ candidate({ name: "TouchableOpacity" }),
41
+ ];
42
+ const r = matchFiberCandidates(list, { component: "Touchable" });
43
+ expect(r).not.toBeNull();
44
+ expect(r.matchIndex).toBe(1);
45
+ });
46
+ it("matches pressable by meaningfulComponentName when own name is generic", () => {
47
+ const list = [
48
+ candidate({ name: "Pressable", meaningfulComponentName: "AddDetailsButton" }),
49
+ candidate({ name: "Pressable", meaningfulComponentName: "OtherButton" }),
50
+ ];
51
+ const r = matchFiberCandidates(list, { component: "AddDetailsButton" });
52
+ expect(r).not.toBeNull();
53
+ expect(r.matchIndex).toBe(0);
54
+ });
55
+ it("component matching is case-insensitive substring", () => {
56
+ const list = [candidate({ name: "Pressable", meaningfulComponentName: "PickerTrigger" })];
57
+ const r = matchFiberCandidates(list, { component: "picker" });
58
+ expect(r).not.toBeNull();
59
+ expect(r.matchIndex).toBe(0);
60
+ });
61
+ it("respects index when multiple candidates match", () => {
62
+ const list = [
63
+ candidate({ name: "Pressable", meaningfulComponentName: "RowButton", text: "A" }),
64
+ candidate({ name: "Pressable", meaningfulComponentName: "RowButton", text: "B" }),
65
+ candidate({ name: "Pressable", meaningfulComponentName: "RowButton", text: "C" }),
66
+ ];
67
+ const r = matchFiberCandidates(list, { component: "RowButton", index: 2 });
68
+ expect(r).not.toBeNull();
69
+ expect(r.matchIndex).toBe(2);
70
+ expect(r.totalMatches).toBe(3);
71
+ expect(r.allMatches).toEqual([0, 1, 2]);
72
+ });
73
+ it("returns null when nothing matches", () => {
74
+ const list = [candidate({ testID: "a", name: "Pressable" })];
75
+ const r = matchFiberCandidates(list, { testID: "does-not-exist" });
76
+ expect(r).toBeNull();
77
+ });
78
+ it("returns null when index is out of range", () => {
79
+ const list = [candidate({ testID: "a" })];
80
+ const r = matchFiberCandidates(list, { testID: "a", index: 3 });
81
+ expect(r).toBeNull();
82
+ });
83
+ it("combines text, testID, and component with AND semantics", () => {
84
+ const list = [
85
+ candidate({
86
+ name: "Pressable",
87
+ meaningfulComponentName: "SubmitButton",
88
+ testID: "submit",
89
+ text: "Send it",
90
+ }),
91
+ candidate({
92
+ name: "Pressable",
93
+ meaningfulComponentName: "SubmitButton",
94
+ testID: "submit",
95
+ text: "Cancel",
96
+ }),
97
+ ];
98
+ const r = matchFiberCandidates(list, {
99
+ text: "send",
100
+ testID: "submit",
101
+ component: "SubmitButton",
102
+ });
103
+ expect(r).not.toBeNull();
104
+ expect(r.matchIndex).toBe(0);
105
+ expect(r.totalMatches).toBe(1);
106
+ });
107
+ it("text matching is case-insensitive substring", () => {
108
+ const list = [candidate({ text: "Hello World" })];
109
+ const r = matchFiberCandidates(list, { text: "hello" });
110
+ expect(r).not.toBeNull();
111
+ expect(r.matchIndex).toBe(0);
112
+ });
113
+ });
114
+ //# sourceMappingURL=fiberMatch.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fiberMatch.test.js","sourceRoot":"","sources":["../../../src/__tests__/unit/fiberMatch.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=fingerprint.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fingerprint.test.d.ts","sourceRoot":"","sources":["../../../src/__tests__/unit/fingerprint.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,89 @@
1
+ import { jest } from "@jest/globals";
2
+ const mockExecSync = jest.fn();
3
+ jest.unstable_mockModule("child_process", () => ({
4
+ execSync: mockExecSync,
5
+ }));
6
+ const mockReadFileSync = jest.fn();
7
+ const mockExistsSync = jest.fn();
8
+ jest.unstable_mockModule("fs", () => ({
9
+ readFileSync: mockReadFileSync,
10
+ existsSync: mockExistsSync,
11
+ }));
12
+ const mockUserInfo = jest.fn();
13
+ const mockCpus = jest.fn();
14
+ const mockPlatform = jest.fn();
15
+ jest.unstable_mockModule("os", () => ({
16
+ userInfo: mockUserInfo,
17
+ cpus: mockCpus,
18
+ platform: mockPlatform,
19
+ }));
20
+ const { getDeviceFingerprint, getMachineId } = await import("../../core/fingerprint.js");
21
+ describe("fingerprint", () => {
22
+ beforeEach(() => {
23
+ jest.clearAllMocks();
24
+ mockUserInfo.mockReturnValue({ username: "testuser" });
25
+ mockCpus.mockReturnValue([{ model: "Apple M2 Pro" }]);
26
+ });
27
+ describe("getMachineId", () => {
28
+ it("reads hardware UUID on macOS", () => {
29
+ mockPlatform.mockReturnValue("darwin");
30
+ mockExecSync.mockReturnValue("Hardware UUID: ABC123-DEF456-GHI789\n");
31
+ const id = getMachineId();
32
+ expect(id).toBe("ABC123-DEF456-GHI789");
33
+ expect(mockExecSync).toHaveBeenCalledWith("system_profiler SPHardwareDataType", expect.any(Object));
34
+ });
35
+ it("reads /etc/machine-id on Linux", () => {
36
+ mockPlatform.mockReturnValue("linux");
37
+ mockExistsSync.mockReturnValue(true);
38
+ mockReadFileSync.mockReturnValue("abc123def456\n");
39
+ const id = getMachineId();
40
+ expect(id).toBe("abc123def456");
41
+ });
42
+ it("reads MachineGuid from registry on Windows", () => {
43
+ mockPlatform.mockReturnValue("win32");
44
+ mockExecSync.mockReturnValue(" MachineGuid REG_SZ {12345-ABCDE}\n");
45
+ const id = getMachineId();
46
+ expect(id).toBe("{12345-ABCDE}");
47
+ });
48
+ it("returns empty string on unsupported platform", () => {
49
+ mockPlatform.mockReturnValue("freebsd");
50
+ const id = getMachineId();
51
+ expect(id).toBe("");
52
+ });
53
+ it("returns empty string when command fails", () => {
54
+ mockPlatform.mockReturnValue("darwin");
55
+ mockExecSync.mockImplementation(() => {
56
+ throw new Error("command not found");
57
+ });
58
+ const id = getMachineId();
59
+ expect(id).toBe("");
60
+ });
61
+ });
62
+ describe("getDeviceFingerprint", () => {
63
+ it("returns consistent SHA256 hash", () => {
64
+ mockPlatform.mockReturnValue("darwin");
65
+ mockExecSync.mockReturnValue("Hardware UUID: ABC123\n");
66
+ const fp1 = getDeviceFingerprint();
67
+ const fp2 = getDeviceFingerprint();
68
+ expect(fp1).toBe(fp2);
69
+ expect(fp1).toMatch(/^[a-f0-9]{64}$/);
70
+ });
71
+ it("produces different hashes for different inputs", () => {
72
+ mockPlatform.mockReturnValue("darwin");
73
+ mockExecSync.mockReturnValue("Hardware UUID: ABC123\n");
74
+ const fp1 = getDeviceFingerprint();
75
+ mockUserInfo.mockReturnValue({ username: "otheruser" });
76
+ const fp2 = getDeviceFingerprint();
77
+ expect(fp1).not.toBe(fp2);
78
+ });
79
+ it("still produces a hash when machineId is unavailable (degraded mode)", () => {
80
+ mockPlatform.mockReturnValue("darwin");
81
+ mockExecSync.mockImplementation(() => {
82
+ throw new Error("permission denied");
83
+ });
84
+ const fp = getDeviceFingerprint();
85
+ expect(fp).toMatch(/^[a-f0-9]{64}$/);
86
+ });
87
+ });
88
+ });
89
+ //# sourceMappingURL=fingerprint.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fingerprint.test.js","sourceRoot":"","sources":["../../../src/__tests__/unit/fingerprint.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=imageBuffer.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"imageBuffer.test.d.ts","sourceRoot":"","sources":["../../../src/__tests__/unit/imageBuffer.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,128 @@
1
+ import { describe, it, expect, beforeEach } from "@jest/globals";
2
+ import { ImageBuffer } from "../../core/imageBuffer.js";
3
+ function makeEntry(overrides = {}) {
4
+ return {
5
+ id: overrides.id || `img-${Date.now()}-${Math.random()}`,
6
+ image: overrides.image || Buffer.from("fake-png-data"),
7
+ timestamp: overrides.timestamp || Date.now(),
8
+ source: overrides.source || "test",
9
+ groupId: overrides.groupId,
10
+ metadata: overrides.metadata,
11
+ };
12
+ }
13
+ describe("ImageBuffer", () => {
14
+ let buffer;
15
+ beforeEach(() => {
16
+ buffer = new ImageBuffer(5);
17
+ });
18
+ it("starts empty", () => {
19
+ expect(buffer.size).toBe(0);
20
+ expect(buffer.listEntries()).toEqual([]);
21
+ });
22
+ it("adds and retrieves an entry by ID", () => {
23
+ const entry = makeEntry({ id: "img-1", source: "ios_screenshot" });
24
+ buffer.add(entry);
25
+ expect(buffer.size).toBe(1);
26
+ const retrieved = buffer.getById("img-1");
27
+ expect(retrieved).toBeDefined();
28
+ expect(retrieved.source).toBe("ios_screenshot");
29
+ expect(retrieved.image).toEqual(entry.image);
30
+ });
31
+ it("evicts oldest entry when capacity exceeded", () => {
32
+ for (let i = 0; i < 6; i++) {
33
+ buffer.add(makeEntry({ id: `img-${i}`, timestamp: i }));
34
+ }
35
+ expect(buffer.size).toBe(5);
36
+ expect(buffer.getById("img-0")).toBeUndefined();
37
+ expect(buffer.getById("img-1")).toBeDefined();
38
+ expect(buffer.getById("img-5")).toBeDefined();
39
+ });
40
+ it("listEntries returns metadata without image data", () => {
41
+ buffer.add(makeEntry({ id: "img-1", source: "tap-burst", metadata: { frameIndex: 0 } }));
42
+ const list = buffer.listEntries();
43
+ expect(list).toHaveLength(1);
44
+ expect(list[0].id).toBe("img-1");
45
+ expect(list[0].source).toBe("tap-burst");
46
+ expect(list[0].metadata).toEqual({ frameIndex: 0 });
47
+ expect(list[0].image).toBeUndefined();
48
+ });
49
+ it("filters entries by source", () => {
50
+ buffer.add(makeEntry({ id: "img-1", source: "ios_screenshot" }));
51
+ buffer.add(makeEntry({ id: "img-2", source: "tap-burst" }));
52
+ buffer.add(makeEntry({ id: "img-3", source: "ios_screenshot" }));
53
+ const filtered = buffer.listEntries({ source: "ios_screenshot" });
54
+ expect(filtered).toHaveLength(2);
55
+ expect(filtered.every(e => e.source === "ios_screenshot")).toBe(true);
56
+ });
57
+ it("returns last N entries", () => {
58
+ for (let i = 0; i < 5; i++) {
59
+ buffer.add(makeEntry({ id: `img-${i}`, timestamp: i }));
60
+ }
61
+ const last2 = buffer.listEntries({ last: 2 });
62
+ expect(last2).toHaveLength(2);
63
+ expect(last2[0].id).toBe("img-3");
64
+ expect(last2[1].id).toBe("img-4");
65
+ });
66
+ it("clears all entries and returns count", () => {
67
+ buffer.add(makeEntry({ id: "img-1" }));
68
+ buffer.add(makeEntry({ id: "img-2" }));
69
+ const count = buffer.clear();
70
+ expect(count).toBe(2);
71
+ expect(buffer.size).toBe(0);
72
+ });
73
+ });
74
+ describe("ImageBuffer groups", () => {
75
+ let buffer;
76
+ beforeEach(() => {
77
+ buffer = new ImageBuffer(20);
78
+ });
79
+ it("adds a group and retrieves it", () => {
80
+ buffer.addGroup({
81
+ groupId: "burst-1",
82
+ intent: "tap-verification",
83
+ source: "tap-burst",
84
+ timestamp: Date.now(),
85
+ frameCount: 5,
86
+ summary: { peakChangeRate: 0.04, peakFrame: 2 },
87
+ });
88
+ const groups = buffer.listGroups();
89
+ expect(groups).toHaveLength(1);
90
+ expect(groups[0].groupId).toBe("burst-1");
91
+ expect(groups[0].summary.peakChangeRate).toBe(0.04);
92
+ });
93
+ it("retrieves entries by groupId", () => {
94
+ buffer.add(makeEntry({ id: "f-0", groupId: "burst-1", metadata: { frameIndex: 0 } }));
95
+ buffer.add(makeEntry({ id: "f-1", groupId: "burst-1", metadata: { frameIndex: 1 } }));
96
+ buffer.add(makeEntry({ id: "other", source: "ios_screenshot" }));
97
+ const frames = buffer.listEntries({ groupId: "burst-1" });
98
+ expect(frames).toHaveLength(2);
99
+ expect(frames.every(e => e.groupId === "burst-1")).toBe(true);
100
+ });
101
+ it("retrieves specific frame from group by frameIndex", () => {
102
+ buffer.add(makeEntry({ id: "f-0", groupId: "burst-1", metadata: { frameIndex: 0 } }));
103
+ buffer.add(makeEntry({ id: "f-1", groupId: "burst-1", metadata: { frameIndex: 1 } }));
104
+ buffer.add(makeEntry({ id: "f-2", groupId: "burst-1", metadata: { frameIndex: 2 } }));
105
+ const frame = buffer.getByGroupFrame("burst-1", 1);
106
+ expect(frame).toBeDefined();
107
+ expect(frame.id).toBe("f-1");
108
+ });
109
+ it("evicts group metadata when all group entries are evicted", () => {
110
+ const smallBuffer = new ImageBuffer(3);
111
+ smallBuffer.addGroup({
112
+ groupId: "burst-old",
113
+ intent: "tap-verification",
114
+ source: "tap-burst",
115
+ timestamp: Date.now(),
116
+ frameCount: 2,
117
+ summary: {},
118
+ });
119
+ smallBuffer.add(makeEntry({ id: "g-0", groupId: "burst-old" }));
120
+ smallBuffer.add(makeEntry({ id: "g-1", groupId: "burst-old" }));
121
+ smallBuffer.add(makeEntry({ id: "new-1" }));
122
+ smallBuffer.add(makeEntry({ id: "new-2" }));
123
+ smallBuffer.add(makeEntry({ id: "new-3" }));
124
+ expect(smallBuffer.listEntries({ groupId: "burst-old" })).toHaveLength(0);
125
+ expect(smallBuffer.listGroups()).toHaveLength(0);
126
+ });
127
+ });
128
+ //# sourceMappingURL=imageBuffer.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"imageBuffer.test.js","sourceRoot":"","sources":["../../../src/__tests__/unit/imageBuffer.test.ts"],"names":[],"mappings":"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"}
@@ -69,6 +69,15 @@ describe("LogBuffer", () => {
69
69
  expect(cleared).toBe(2);
70
70
  expect(buffer.size).toBe(0);
71
71
  });
72
+ it("removeByText removes matching entries", () => {
73
+ buffer.add(makeLog("normal log"));
74
+ buffer.add(makeLog("__rn_devtools_health_12345"));
75
+ buffer.add(makeLog("another log"));
76
+ const removed = buffer.removeByText("__rn_devtools_health_");
77
+ expect(removed).toBe(1);
78
+ expect(buffer.size).toBe(2);
79
+ expect(buffer.getAll().every(l => !l.message.includes("__rn_devtools_health_"))).toBe(true);
80
+ });
72
81
  });
73
82
  describe("mapConsoleType", () => {
74
83
  it("maps error to error", () => expect(mapConsoleType("error")).toBe("error"));
@@ -1 +1 @@
1
- {"version":3,"file":"logs.test.js","sourceRoot":"","sources":["../../../src/__tests__/unit/logs.test.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"logs.test.js","sourceRoot":"","sources":["../../../src/__tests__/unit/logs.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=networkInterceptor.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"networkInterceptor.test.d.ts","sourceRoot":"","sources":["../../../src/__tests__/unit/networkInterceptor.test.ts"],"names":[],"mappings":""}