mobile-debug-mcp 0.32.2 → 0.33.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 (127) hide show
  1. package/.agents/plugins/marketplace.json +20 -0
  2. package/{skills → .agents/skills}/mcp-builder/SKILL.md +1 -2
  3. package/{skills → .agents/skills}/spec-review/SKILL.md +1 -1
  4. package/{skills → .agents/skills}/test-authoring/SKILL.md +1 -1
  5. package/.claude-plugin/marketplace.json +14 -0
  6. package/.cursor-plugin/marketplace.json +16 -0
  7. package/.github/copilot-instructions.md +7 -0
  8. package/AGENTS.md +21 -10
  9. package/README.md +67 -5
  10. package/agent-plugin/.claude-plugin/plugin.json +20 -0
  11. package/agent-plugin/.codex-plugin/plugin.json +34 -0
  12. package/agent-plugin/.cursor-plugin/plugin.json +23 -0
  13. package/agent-plugin/.mcp.json +14 -0
  14. package/agent-plugin/LICENSE +201 -0
  15. package/agent-plugin/README.md +29 -0
  16. package/agent-plugin/assets/mobile-debug-tools.svg +28 -0
  17. package/agent-plugin/mcp.json +11 -0
  18. package/agent-plugin/plugin.json +29 -0
  19. package/agent-plugin/skills/mobile-debug-mcp/SKILL.md +124 -0
  20. package/dist/interact/android.js +10 -4
  21. package/dist/interact/conditional-action.js +68 -0
  22. package/dist/interact/index.js +54 -14
  23. package/dist/interact/ios.js +14 -8
  24. package/dist/manage/android.js +4 -3
  25. package/dist/manage/ios.js +3 -2
  26. package/dist/observe/android.js +27 -22
  27. package/dist/observe/evidence.js +273 -0
  28. package/dist/observe/index.js +33 -6
  29. package/dist/observe/ios.js +25 -6
  30. package/dist/observe/readiness-service.js +115 -0
  31. package/dist/observe/readiness.js +81 -0
  32. package/dist/observe/recording.js +165 -0
  33. package/dist/observe/snapshot-metadata.js +10 -2
  34. package/dist/server/common.js +9 -0
  35. package/dist/server/condition-schema.js +32 -0
  36. package/dist/server/journey-schema.js +3 -2
  37. package/dist/server/readiness-schema.js +12 -0
  38. package/dist/server/tool-definitions.js +46 -0
  39. package/dist/server/tool-handlers.js +99 -17
  40. package/dist/server-core.js +1 -1
  41. package/dist/utils/ios/utils.js +4 -4
  42. package/dist/utils/operation-budget.js +24 -2
  43. package/dist/utils/resolve-device.js +7 -0
  44. package/docs/CHANGELOG.md +16 -2
  45. package/docs/benchmarks/ui-tree-performance/README.md +4 -3
  46. package/docs/specs/020-conditional-actions/intent.md +62 -0
  47. package/docs/specs/020-conditional-actions/plan.md +214 -0
  48. package/docs/specs/020-conditional-actions/spec.md +301 -0
  49. package/docs/specs/021-app-readiness-signals/intent.md +40 -0
  50. package/docs/specs/021-app-readiness-signals/plan.md +102 -0
  51. package/docs/specs/021-app-readiness-signals/spec.md +144 -0
  52. package/docs/specs/022-correlated-evidence/device-evidence.json +60 -0
  53. package/docs/specs/022-correlated-evidence/intent.md +37 -0
  54. package/docs/specs/022-correlated-evidence/modul8-evidence.json +1062 -0
  55. package/docs/specs/022-correlated-evidence/modul8-selector-fix-evidence.json +336 -0
  56. package/docs/specs/022-correlated-evidence/plan.md +171 -0
  57. package/docs/specs/022-correlated-evidence/spec.md +123 -0
  58. package/docs/specs/process.md +213 -0
  59. package/docs/tools/TOOLS.md +3 -0
  60. package/docs/tools/evidence.md +79 -0
  61. package/docs/tools/interact.md +125 -2
  62. package/docs/tools/observe.md +64 -2
  63. package/package.json +4 -2
  64. package/scripts/agent-plugin.mjs +98 -0
  65. package/src/interact/android.ts +10 -4
  66. package/src/interact/conditional-action.ts +75 -0
  67. package/src/interact/index.ts +42 -14
  68. package/src/interact/ios.ts +14 -8
  69. package/src/manage/android.ts +4 -3
  70. package/src/manage/ios.ts +3 -2
  71. package/src/observe/android.ts +35 -21
  72. package/src/observe/evidence.ts +255 -0
  73. package/src/observe/index.ts +32 -8
  74. package/src/observe/ios.ts +32 -8
  75. package/src/observe/readiness-service.ts +89 -0
  76. package/src/observe/readiness.ts +78 -0
  77. package/src/observe/snapshot-metadata.ts +12 -1
  78. package/src/server/common.ts +7 -0
  79. package/src/server/condition-schema.ts +32 -0
  80. package/src/server/journey-schema.ts +3 -2
  81. package/src/server/readiness-schema.ts +12 -0
  82. package/src/server/tool-definitions.ts +44 -0
  83. package/src/server/tool-handlers.ts +93 -17
  84. package/src/server-core.ts +1 -1
  85. package/src/types.ts +30 -1
  86. package/src/utils/ios/utils.ts +4 -4
  87. package/src/utils/operation-budget.ts +22 -2
  88. package/src/utils/resolve-device.ts +8 -0
  89. package/test/device/automated/observe/correlated-evidence.smoke.ts +70 -0
  90. package/test/device/manual/interact/conditional_actions.manual.ts +95 -0
  91. package/test/device/manual/interact/modul8_selector_tap.manual.ts +63 -0
  92. package/test/device/manual/interact/readiness.manual.ts +99 -0
  93. package/test/fixtures/readiness-app/MainActivity.java +23 -0
  94. package/test/fixtures/readiness-app/README.md +12 -0
  95. package/test/fixtures/readiness-app/build.ts +37 -0
  96. package/test/fixtures/readiness-app/main.m +27 -0
  97. package/test/unit/observe/android_tree_acquisition.test.ts +6 -0
  98. package/test/unit/observe/capture_debug_snapshot.test.ts +42 -32
  99. package/test/unit/observe/compact_tree_error.test.ts +24 -0
  100. package/test/unit/observe/conditional_snapshots.test.ts +33 -0
  101. package/test/unit/observe/correlated-evidence.test.ts +128 -0
  102. package/test/unit/observe/ios-getlogs.test.ts +3 -3
  103. package/test/unit/observe/ios_tree_acquisition.test.ts +2 -0
  104. package/test/unit/observe/readiness.test.ts +39 -0
  105. package/test/unit/observe/readiness_native.test.ts +68 -0
  106. package/test/unit/server/conditional_actions.test.ts +299 -0
  107. package/test/unit/server/conditional_schema.test.ts +59 -0
  108. package/test/unit/server/correlated-evidence.test.ts +194 -0
  109. package/test/unit/server/readiness.test.ts +170 -0
  110. package/test/unit/server/selector_tap_target.test.ts +79 -0
  111. package/test/unit/server/tap_selector.test.ts +2 -0
  112. package/skills/mobile-debug-tools-usage/SKILL.md +0 -74
  113. package/src/observe/android-tree-bridge.ts +0 -178
  114. package/test/device/automated/ui-tree-performance/bridge-probe.ts +0 -197
  115. package/test/fixtures/ui-tree-bridge/AndroidManifest.xml +0 -6
  116. package/test/fixtures/ui-tree-bridge/build.ts +0 -34
  117. package/test/fixtures/ui-tree-bridge/src/TreeInstrumentation.java +0 -126
  118. package/test/unit/observe/android_tree_bridge_cleanup.test.ts +0 -95
  119. /package/{skills → .agents/skills}/README.md +0 -0
  120. /package/{skills → .agents/skills}/mcp-builder/references/build-flags.md +0 -0
  121. /package/{skills → .agents/skills}/mcp-builder/references/diagnostics-schema.md +0 -0
  122. /package/{skills → .agents/skills}/mcp-builder/references/toolchain-details.md +0 -0
  123. /package/{skills → .agents/skills}/spec-review/references/spec-review-checklist.md +0 -0
  124. /package/{skills → .agents/skills}/spec-review/references/spec-review-template.md +0 -0
  125. /package/{skills → .agents/skills}/test-authoring/references/repo-test-layout.md +0 -0
  126. /package/{skills → .agents/skills}/test-authoring/references/test-authoring-workflow.md +0 -0
  127. /package/{skills → .agents/skills}/test-authoring/references/test-quality-checklist.md +0 -0
@@ -0,0 +1,1062 @@
1
+ {
2
+ "verified_on": "2026-10-30",
3
+ "server": {
4
+ "name": "mobile-debug-mcp",
5
+ "version": "0.32.4",
6
+ "source": "rebuilt local dist/server.js over MCP stdio"
7
+ },
8
+ "device": {
9
+ "platform": "android",
10
+ "id": "emulator-5554",
11
+ "osVersion": "16"
12
+ },
13
+ "app": {
14
+ "package": "com.ideamechanics.modul8.dev",
15
+ "versionName": "0.3.1-dev",
16
+ "versionCode": 14
17
+ },
18
+ "starting_state": "Modul8 Subscription screen",
19
+ "checks": {
20
+ "correlated_navigation": "PASS",
21
+ "referenced_screenshots_ui_trees_and_app_logs": "PASS",
22
+ "pre_action_stale_post_action_fresh": "PASS",
23
+ "distinct_capture_dispatch_verification_phases": "PASS",
24
+ "current_screen_guard": "PASS",
25
+ "changed_screen_guard_no_dispatch": "PASS",
26
+ "selector_navigation": "FAIL"
27
+ },
28
+ "findings": [
29
+ {
30
+ "scope": "existing selector resolution",
31
+ "result": "FAIL",
32
+ "detail": "Default 1500ms selector lookup returned ELEMENT_NOT_FOUND with underlying ACTION_TIMEOUT before dispatch; baseline 3701f39 has the same default."
33
+ },
34
+ {
35
+ "scope": "selector on Gener8 text label",
36
+ "result": "FAIL",
37
+ "detail": "With explicit 10000ms lookup and 15000ms action budget, label was found but rejected as ELEMENT_NOT_INTERACTABLE; text leaf is not clickable while its container is. No input was dispatched."
38
+ },
39
+ {
40
+ "scope": "coordinate navigation",
41
+ "result": "PASS",
42
+ "detail": "Guarded coordinate tap navigated to Gener8. Reusing the earlier Favourites revision then returned PRECONDITION_FAILED with null dispatch timestamps."
43
+ },
44
+ {
45
+ "scope": "capture semantics",
46
+ "result": "PASS",
47
+ "detail": "A fresh screenshot captured the navigation crossfade. Freshness means recent acquisition, not settled UI or causal log emission."
48
+ }
49
+ ],
50
+ "cleanup": {
51
+ "state": "Restored original Subscription screen; confirmed by final UI tree",
52
+ "data": "No settings, account, subscription, favourites or generated sessions changed",
53
+ "artifacts": "Temporary screenshots/client removed; repository retains metadata only"
54
+ },
55
+ "records": [
56
+ {
57
+ "name": "tap",
58
+ "key": "favourites",
59
+ "success": true,
60
+ "verification": {
61
+ "mode": "full",
62
+ "status": "observed"
63
+ },
64
+ "evidence": {
65
+ "session_id": "d5b54681-5235-4008-8b96-bbea0cfcbcf5",
66
+ "correlation_id": "89ef5117-26b0-4736-8731-b76fa8948bc1",
67
+ "action_id": "89ef5117-26b0-4736-8731-b76fa8948bc1",
68
+ "device": {
69
+ "platform": "android",
70
+ "id": "emulator-5554"
71
+ },
72
+ "association": "self",
73
+ "association_reason": null,
74
+ "operation_started_at_ms": 1793350964916,
75
+ "operation_completed_at_ms": 1793350970785,
76
+ "dispatch_started_at_ms": 1793350968035,
77
+ "dispatch_completed_at_ms": 1793350968089,
78
+ "verification_completed_at_ms": 1793350970785,
79
+ "observations": [
80
+ {
81
+ "evidence_id": "70290582-37fd-42d0-adac-b65c94a77473",
82
+ "kind": "fingerprint",
83
+ "status": "captured",
84
+ "capture_started_at_ms": 1793350965172,
85
+ "capture_completed_at_ms": 1793350967793,
86
+ "source_captured_at_ms": 1793350967706,
87
+ "age_ms": 3079.1904296875,
88
+ "freshness": "stale",
89
+ "freshness_reasons": [
90
+ "BEFORE_ACTION"
91
+ ],
92
+ "device": {
93
+ "platform": "android",
94
+ "id": "emulator-5554"
95
+ },
96
+ "session_id": "d5b54681-5235-4008-8b96-bbea0cfcbcf5",
97
+ "correlation_id": "89ef5117-26b0-4736-8731-b76fa8948bc1",
98
+ "action_id": "89ef5117-26b0-4736-8731-b76fa8948bc1",
99
+ "association": "internal"
100
+ },
101
+ {
102
+ "evidence_id": "065f867f-96bb-44de-a729-b708f2fcec9f",
103
+ "kind": "ui_tree",
104
+ "status": "captured",
105
+ "capture_started_at_ms": 1793350965172,
106
+ "capture_completed_at_ms": 1793350967706,
107
+ "source_captured_at_ms": 1793350967706,
108
+ "age_ms": 3078.794677734375,
109
+ "freshness": "stale",
110
+ "freshness_reasons": [
111
+ "BEFORE_ACTION"
112
+ ],
113
+ "device": {
114
+ "platform": "android",
115
+ "id": "emulator-5554"
116
+ },
117
+ "snapshot_session_id": "b18601b1-71af-40d7-8834-1bf30c6acca6",
118
+ "snapshot_revision": 1,
119
+ "session_id": "d5b54681-5235-4008-8b96-bbea0cfcbcf5",
120
+ "correlation_id": "89ef5117-26b0-4736-8731-b76fa8948bc1",
121
+ "action_id": "89ef5117-26b0-4736-8731-b76fa8948bc1",
122
+ "association": "internal"
123
+ },
124
+ {
125
+ "evidence_id": "fbd1c9a4-f2d3-4b1a-86a1-7d60b17ee5bb",
126
+ "kind": "activity",
127
+ "status": "captured",
128
+ "capture_started_at_ms": 1793350967706,
129
+ "capture_completed_at_ms": 1793350967792,
130
+ "source_captured_at_ms": 1793350967792,
131
+ "age_ms": 2992.797119140625,
132
+ "freshness": "stale",
133
+ "freshness_reasons": [
134
+ "BEFORE_ACTION"
135
+ ],
136
+ "device": {
137
+ "platform": "android",
138
+ "id": "emulator-5554"
139
+ },
140
+ "session_id": "d5b54681-5235-4008-8b96-bbea0cfcbcf5",
141
+ "correlation_id": "89ef5117-26b0-4736-8731-b76fa8948bc1",
142
+ "action_id": "89ef5117-26b0-4736-8731-b76fa8948bc1",
143
+ "association": "internal"
144
+ },
145
+ {
146
+ "evidence_id": "f7c1bcd1-882a-44ac-b61c-0722eeb03874",
147
+ "kind": "fingerprint",
148
+ "status": "captured",
149
+ "capture_started_at_ms": 1793350968299,
150
+ "capture_completed_at_ms": 1793350970785,
151
+ "source_captured_at_ms": 1793350970694,
152
+ "age_ms": 91.327880859375,
153
+ "freshness": "fresh",
154
+ "freshness_reasons": [],
155
+ "device": {
156
+ "platform": "android",
157
+ "id": "emulator-5554"
158
+ },
159
+ "session_id": "d5b54681-5235-4008-8b96-bbea0cfcbcf5",
160
+ "correlation_id": "89ef5117-26b0-4736-8731-b76fa8948bc1",
161
+ "action_id": "89ef5117-26b0-4736-8731-b76fa8948bc1",
162
+ "association": "internal"
163
+ },
164
+ {
165
+ "evidence_id": "5ae4c9b6-6522-4cf4-80e1-ab5ed29879f1",
166
+ "kind": "ui_tree",
167
+ "status": "captured",
168
+ "capture_started_at_ms": 1793350968299,
169
+ "capture_completed_at_ms": 1793350970695,
170
+ "source_captured_at_ms": 1793350970694,
171
+ "age_ms": 91.3525390625,
172
+ "freshness": "fresh",
173
+ "freshness_reasons": [],
174
+ "device": {
175
+ "platform": "android",
176
+ "id": "emulator-5554"
177
+ },
178
+ "snapshot_session_id": "b18601b1-71af-40d7-8834-1bf30c6acca6",
179
+ "snapshot_revision": 2,
180
+ "session_id": "d5b54681-5235-4008-8b96-bbea0cfcbcf5",
181
+ "correlation_id": "89ef5117-26b0-4736-8731-b76fa8948bc1",
182
+ "action_id": "89ef5117-26b0-4736-8731-b76fa8948bc1",
183
+ "association": "internal"
184
+ },
185
+ {
186
+ "evidence_id": "8d65e63c-839a-4ae6-a7ec-7241b327485c",
187
+ "kind": "activity",
188
+ "status": "captured",
189
+ "capture_started_at_ms": 1793350970695,
190
+ "capture_completed_at_ms": 1793350970784,
191
+ "source_captured_at_ms": 1793350970784,
192
+ "age_ms": 0.43408203125,
193
+ "freshness": "fresh",
194
+ "freshness_reasons": [],
195
+ "device": {
196
+ "platform": "android",
197
+ "id": "emulator-5554"
198
+ },
199
+ "session_id": "d5b54681-5235-4008-8b96-bbea0cfcbcf5",
200
+ "correlation_id": "89ef5117-26b0-4736-8731-b76fa8948bc1",
201
+ "action_id": "89ef5117-26b0-4736-8731-b76fa8948bc1",
202
+ "association": "internal"
203
+ }
204
+ ],
205
+ "trace_context": {
206
+ "supported": false,
207
+ "trace_id": null,
208
+ "markers": []
209
+ }
210
+ }
211
+ },
212
+ {
213
+ "name": "capture_screenshot",
214
+ "key": "favouritesScreen",
215
+ "evidence": {
216
+ "session_id": "d5b54681-5235-4008-8b96-bbea0cfcbcf5",
217
+ "correlation_id": "89ef5117-26b0-4736-8731-b76fa8948bc1",
218
+ "action_id": "89ef5117-26b0-4736-8731-b76fa8948bc1",
219
+ "device": {
220
+ "platform": "android",
221
+ "id": "emulator-5554"
222
+ },
223
+ "association": "explicit",
224
+ "association_reason": null,
225
+ "requested_action_ref": {
226
+ "sessionId": "d5b54681-5235-4008-8b96-bbea0cfcbcf5",
227
+ "actionId": "89ef5117-26b0-4736-8731-b76fa8948bc1"
228
+ },
229
+ "operation_started_at_ms": 1793350970788,
230
+ "operation_completed_at_ms": 1793350971257,
231
+ "dispatch_started_at_ms": 1793350968035,
232
+ "dispatch_completed_at_ms": 1793350968089,
233
+ "verification_completed_at_ms": 1793350970785,
234
+ "observations": [
235
+ {
236
+ "evidence_id": "94237ba0-253d-4ed4-841b-a86d96bdbbd8",
237
+ "kind": "screenshot",
238
+ "status": "captured",
239
+ "capture_started_at_ms": 1793350971003,
240
+ "capture_completed_at_ms": 1793350971257,
241
+ "source_captured_at_ms": 1793350971257,
242
+ "age_ms": 0.1171875,
243
+ "freshness": "fresh",
244
+ "freshness_reasons": [],
245
+ "device": {
246
+ "platform": "android",
247
+ "id": "emulator-5554"
248
+ },
249
+ "session_id": "d5b54681-5235-4008-8b96-bbea0cfcbcf5",
250
+ "correlation_id": "89ef5117-26b0-4736-8731-b76fa8948bc1",
251
+ "action_id": "89ef5117-26b0-4736-8731-b76fa8948bc1",
252
+ "association": "internal"
253
+ }
254
+ ],
255
+ "trace_context": {
256
+ "supported": false,
257
+ "trace_id": null,
258
+ "markers": []
259
+ }
260
+ },
261
+ "checks": {
262
+ "matchingAction": true,
263
+ "matchingCorrelation": true,
264
+ "matchingSession": true,
265
+ "afterDispatch": true
266
+ }
267
+ },
268
+ {
269
+ "name": "get_logs",
270
+ "key": "favouritesLogs",
271
+ "evidence": {
272
+ "session_id": "d5b54681-5235-4008-8b96-bbea0cfcbcf5",
273
+ "correlation_id": "89ef5117-26b0-4736-8731-b76fa8948bc1",
274
+ "action_id": "89ef5117-26b0-4736-8731-b76fa8948bc1",
275
+ "device": {
276
+ "platform": "android",
277
+ "id": "emulator-5554"
278
+ },
279
+ "association": "explicit",
280
+ "association_reason": null,
281
+ "requested_action_ref": {
282
+ "sessionId": "d5b54681-5235-4008-8b96-bbea0cfcbcf5",
283
+ "actionId": "89ef5117-26b0-4736-8731-b76fa8948bc1"
284
+ },
285
+ "operation_started_at_ms": 1793350971260,
286
+ "operation_completed_at_ms": 1793350971880,
287
+ "dispatch_started_at_ms": 1793350968035,
288
+ "dispatch_completed_at_ms": 1793350968089,
289
+ "verification_completed_at_ms": 1793350970785,
290
+ "observations": [
291
+ {
292
+ "evidence_id": "9a0d1080-39af-4f25-bf14-8e6fcd014ffd",
293
+ "kind": "logs",
294
+ "status": "captured",
295
+ "capture_started_at_ms": 1793350971622,
296
+ "capture_completed_at_ms": 1793350971880,
297
+ "source_captured_at_ms": null,
298
+ "age_ms": null,
299
+ "freshness": "unknown",
300
+ "freshness_reasons": [
301
+ "DEVICE_CLOCK_UNVERIFIED"
302
+ ],
303
+ "device": {
304
+ "platform": "android",
305
+ "id": "emulator-5554"
306
+ },
307
+ "clock": "device_or_unknown",
308
+ "event_time_comparable": false,
309
+ "earliest_entry_at_ms": 1793350966101,
310
+ "latest_entry_at_ms": 1793350967531,
311
+ "session_id": "d5b54681-5235-4008-8b96-bbea0cfcbcf5",
312
+ "correlation_id": "89ef5117-26b0-4736-8731-b76fa8948bc1",
313
+ "action_id": "89ef5117-26b0-4736-8731-b76fa8948bc1",
314
+ "association": "internal"
315
+ }
316
+ ],
317
+ "trace_context": {
318
+ "supported": false,
319
+ "trace_id": null,
320
+ "markers": []
321
+ }
322
+ },
323
+ "logCount": 5,
324
+ "logLevels": [
325
+ "ERROR",
326
+ "WARN",
327
+ "DEBUG"
328
+ ],
329
+ "checks": {
330
+ "matchingAction": true,
331
+ "matchingCorrelation": true,
332
+ "matchingSession": true,
333
+ "afterDispatch": true
334
+ }
335
+ },
336
+ {
337
+ "name": "get_ui_tree",
338
+ "key": "favouritesTree",
339
+ "evidence": {
340
+ "session_id": "d5b54681-5235-4008-8b96-bbea0cfcbcf5",
341
+ "correlation_id": "89ef5117-26b0-4736-8731-b76fa8948bc1",
342
+ "action_id": "89ef5117-26b0-4736-8731-b76fa8948bc1",
343
+ "device": {
344
+ "platform": "android",
345
+ "id": "emulator-5554"
346
+ },
347
+ "association": "explicit",
348
+ "association_reason": null,
349
+ "requested_action_ref": {
350
+ "sessionId": "d5b54681-5235-4008-8b96-bbea0cfcbcf5",
351
+ "actionId": "89ef5117-26b0-4736-8731-b76fa8948bc1"
352
+ },
353
+ "operation_started_at_ms": 1793350971881,
354
+ "operation_completed_at_ms": 1793350974333,
355
+ "dispatch_started_at_ms": 1793350968035,
356
+ "dispatch_completed_at_ms": 1793350968089,
357
+ "verification_completed_at_ms": 1793350970785,
358
+ "observations": [
359
+ {
360
+ "evidence_id": "8af2f851-29ee-4ebf-871d-b2184fdeafed",
361
+ "kind": "ui_tree",
362
+ "status": "captured",
363
+ "capture_started_at_ms": 1793350972087,
364
+ "capture_completed_at_ms": 1793350974333,
365
+ "source_captured_at_ms": 1793350974332,
366
+ "age_ms": 1.61376953125,
367
+ "freshness": "fresh",
368
+ "freshness_reasons": [],
369
+ "device": {
370
+ "platform": "android",
371
+ "id": "emulator-5554"
372
+ },
373
+ "snapshot_session_id": "b18601b1-71af-40d7-8834-1bf30c6acca6",
374
+ "snapshot_revision": 2,
375
+ "session_id": "d5b54681-5235-4008-8b96-bbea0cfcbcf5",
376
+ "correlation_id": "89ef5117-26b0-4736-8731-b76fa8948bc1",
377
+ "action_id": "89ef5117-26b0-4736-8731-b76fa8948bc1",
378
+ "association": "internal"
379
+ }
380
+ ],
381
+ "trace_context": {
382
+ "supported": false,
383
+ "trace_id": null,
384
+ "markers": []
385
+ }
386
+ },
387
+ "checks": {
388
+ "matchingAction": true,
389
+ "matchingCorrelation": true,
390
+ "matchingSession": true,
391
+ "afterDispatch": true
392
+ }
393
+ },
394
+ {
395
+ "name": "tap_element",
396
+ "key": "gener8",
397
+ "success": false,
398
+ "failure_code": "ELEMENT_NOT_FOUND",
399
+ "verification": {
400
+ "mode": "none",
401
+ "status": "failed"
402
+ },
403
+ "evidence": {
404
+ "session_id": "d5b54681-5235-4008-8b96-bbea0cfcbcf5",
405
+ "correlation_id": "6af7b545-3619-4ee7-bf77-209ea15d4a7d",
406
+ "action_id": "6af7b545-3619-4ee7-bf77-209ea15d4a7d",
407
+ "device": {
408
+ "platform": "android",
409
+ "id": "emulator-5554"
410
+ },
411
+ "association": "self",
412
+ "association_reason": null,
413
+ "operation_started_at_ms": 1793351000595,
414
+ "operation_completed_at_ms": 1793351002311,
415
+ "dispatch_started_at_ms": null,
416
+ "dispatch_completed_at_ms": null,
417
+ "verification_completed_at_ms": null,
418
+ "observations": [
419
+ {
420
+ "evidence_id": "a1cb99ea-1304-43da-a3b8-2184e215ba97",
421
+ "kind": "ui_tree",
422
+ "status": "failed",
423
+ "capture_started_at_ms": 1793351000795,
424
+ "capture_completed_at_ms": 1793351002311,
425
+ "source_captured_at_ms": 1793351002311,
426
+ "age_ms": 0.2353515625,
427
+ "freshness": "unknown",
428
+ "freshness_reasons": [
429
+ "CAPTURE_TIME_UNKNOWN"
430
+ ],
431
+ "device": {
432
+ "platform": "android",
433
+ "id": "emulator-5554"
434
+ },
435
+ "error": "Failed to get UI tree. ADB Path: '<local adb>'. Error: ACTION_TIMEOUT",
436
+ "snapshot_session_id": "b18601b1-71af-40d7-8834-1bf30c6acca6",
437
+ "snapshot_revision": 2,
438
+ "session_id": "d5b54681-5235-4008-8b96-bbea0cfcbcf5",
439
+ "correlation_id": "6af7b545-3619-4ee7-bf77-209ea15d4a7d",
440
+ "action_id": "6af7b545-3619-4ee7-bf77-209ea15d4a7d",
441
+ "association": "internal"
442
+ }
443
+ ],
444
+ "trace_context": {
445
+ "supported": false,
446
+ "trace_id": null,
447
+ "markers": []
448
+ }
449
+ }
450
+ },
451
+ {
452
+ "name": "capture_screenshot",
453
+ "key": "gener8Screen",
454
+ "evidence": {
455
+ "session_id": "d5b54681-5235-4008-8b96-bbea0cfcbcf5",
456
+ "correlation_id": "6af7b545-3619-4ee7-bf77-209ea15d4a7d",
457
+ "action_id": "6af7b545-3619-4ee7-bf77-209ea15d4a7d",
458
+ "device": {
459
+ "platform": "android",
460
+ "id": "emulator-5554"
461
+ },
462
+ "association": "explicit",
463
+ "association_reason": null,
464
+ "requested_action_ref": {
465
+ "sessionId": "d5b54681-5235-4008-8b96-bbea0cfcbcf5",
466
+ "actionId": "6af7b545-3619-4ee7-bf77-209ea15d4a7d"
467
+ },
468
+ "operation_started_at_ms": 1793351002314,
469
+ "operation_completed_at_ms": 1793351002836,
470
+ "dispatch_started_at_ms": null,
471
+ "dispatch_completed_at_ms": null,
472
+ "verification_completed_at_ms": null,
473
+ "observations": [
474
+ {
475
+ "evidence_id": "3b9894c2-5516-4137-ab80-952f40189d82",
476
+ "kind": "screenshot",
477
+ "status": "captured",
478
+ "capture_started_at_ms": 1793351002604,
479
+ "capture_completed_at_ms": 1793351002836,
480
+ "source_captured_at_ms": 1793351002836,
481
+ "age_ms": 0.0341796875,
482
+ "freshness": "fresh",
483
+ "freshness_reasons": [],
484
+ "device": {
485
+ "platform": "android",
486
+ "id": "emulator-5554"
487
+ },
488
+ "session_id": "d5b54681-5235-4008-8b96-bbea0cfcbcf5",
489
+ "correlation_id": "6af7b545-3619-4ee7-bf77-209ea15d4a7d",
490
+ "action_id": "6af7b545-3619-4ee7-bf77-209ea15d4a7d",
491
+ "association": "internal"
492
+ }
493
+ ],
494
+ "trace_context": {
495
+ "supported": false,
496
+ "trace_id": null,
497
+ "markers": []
498
+ }
499
+ },
500
+ "checks": {
501
+ "matchingAction": true,
502
+ "matchingCorrelation": true,
503
+ "matchingSession": true,
504
+ "afterDispatch": null
505
+ }
506
+ },
507
+ {
508
+ "name": "get_ui_tree",
509
+ "key": "gener8Tree",
510
+ "evidence": {
511
+ "session_id": "d5b54681-5235-4008-8b96-bbea0cfcbcf5",
512
+ "correlation_id": "6af7b545-3619-4ee7-bf77-209ea15d4a7d",
513
+ "action_id": "6af7b545-3619-4ee7-bf77-209ea15d4a7d",
514
+ "device": {
515
+ "platform": "android",
516
+ "id": "emulator-5554"
517
+ },
518
+ "association": "explicit",
519
+ "association_reason": null,
520
+ "requested_action_ref": {
521
+ "sessionId": "d5b54681-5235-4008-8b96-bbea0cfcbcf5",
522
+ "actionId": "6af7b545-3619-4ee7-bf77-209ea15d4a7d"
523
+ },
524
+ "operation_started_at_ms": 1793351002838,
525
+ "operation_completed_at_ms": 1793351005284,
526
+ "dispatch_started_at_ms": null,
527
+ "dispatch_completed_at_ms": null,
528
+ "verification_completed_at_ms": null,
529
+ "observations": [
530
+ {
531
+ "evidence_id": "2fdcf95c-8620-4f9a-a9c2-f1e075848dba",
532
+ "kind": "ui_tree",
533
+ "status": "captured",
534
+ "capture_started_at_ms": 1793351003106,
535
+ "capture_completed_at_ms": 1793351005283,
536
+ "source_captured_at_ms": 1793351005283,
537
+ "age_ms": 0.129638671875,
538
+ "freshness": "fresh",
539
+ "freshness_reasons": [],
540
+ "device": {
541
+ "platform": "android",
542
+ "id": "emulator-5554"
543
+ },
544
+ "snapshot_session_id": "b18601b1-71af-40d7-8834-1bf30c6acca6",
545
+ "snapshot_revision": 3,
546
+ "session_id": "d5b54681-5235-4008-8b96-bbea0cfcbcf5",
547
+ "correlation_id": "6af7b545-3619-4ee7-bf77-209ea15d4a7d",
548
+ "action_id": "6af7b545-3619-4ee7-bf77-209ea15d4a7d",
549
+ "association": "internal"
550
+ }
551
+ ],
552
+ "trace_context": {
553
+ "supported": false,
554
+ "trace_id": null,
555
+ "markers": []
556
+ }
557
+ },
558
+ "checks": {
559
+ "matchingAction": true,
560
+ "matchingCorrelation": true,
561
+ "matchingSession": true,
562
+ "afterDispatch": null
563
+ }
564
+ },
565
+ {
566
+ "name": "tap_element",
567
+ "key": "gener8Retry",
568
+ "success": false,
569
+ "failure_code": "ELEMENT_NOT_INTERACTABLE",
570
+ "verification": {
571
+ "mode": "none",
572
+ "status": "failed"
573
+ },
574
+ "evidence": {
575
+ "session_id": "d5b54681-5235-4008-8b96-bbea0cfcbcf5",
576
+ "correlation_id": "48d36b08-15dd-4276-a1b5-68af59967f3f",
577
+ "action_id": "48d36b08-15dd-4276-a1b5-68af59967f3f",
578
+ "device": {
579
+ "platform": "android",
580
+ "id": "emulator-5554"
581
+ },
582
+ "association": "self",
583
+ "association_reason": null,
584
+ "operation_started_at_ms": 1793351042129,
585
+ "operation_completed_at_ms": 1793351044611,
586
+ "dispatch_started_at_ms": null,
587
+ "dispatch_completed_at_ms": null,
588
+ "verification_completed_at_ms": null,
589
+ "observations": [
590
+ {
591
+ "evidence_id": "4029f429-5e4f-4bb1-aaa7-114bbd734eef",
592
+ "kind": "ui_tree",
593
+ "status": "captured",
594
+ "capture_started_at_ms": 1793351042328,
595
+ "capture_completed_at_ms": 1793351044610,
596
+ "source_captured_at_ms": 1793351044610,
597
+ "age_ms": 1.4150390625,
598
+ "freshness": "fresh",
599
+ "freshness_reasons": [],
600
+ "device": {
601
+ "platform": "android",
602
+ "id": "emulator-5554"
603
+ },
604
+ "snapshot_session_id": "b18601b1-71af-40d7-8834-1bf30c6acca6",
605
+ "snapshot_revision": 3,
606
+ "session_id": "d5b54681-5235-4008-8b96-bbea0cfcbcf5",
607
+ "correlation_id": "48d36b08-15dd-4276-a1b5-68af59967f3f",
608
+ "action_id": "48d36b08-15dd-4276-a1b5-68af59967f3f",
609
+ "association": "internal"
610
+ }
611
+ ],
612
+ "trace_context": {
613
+ "supported": false,
614
+ "trace_id": null,
615
+ "markers": []
616
+ }
617
+ }
618
+ },
619
+ {
620
+ "name": "capture_screenshot",
621
+ "key": "gener8RetryScreen",
622
+ "evidence": {
623
+ "session_id": "d5b54681-5235-4008-8b96-bbea0cfcbcf5",
624
+ "correlation_id": "48d36b08-15dd-4276-a1b5-68af59967f3f",
625
+ "action_id": "48d36b08-15dd-4276-a1b5-68af59967f3f",
626
+ "device": {
627
+ "platform": "android",
628
+ "id": "emulator-5554"
629
+ },
630
+ "association": "explicit",
631
+ "association_reason": null,
632
+ "requested_action_ref": {
633
+ "sessionId": "d5b54681-5235-4008-8b96-bbea0cfcbcf5",
634
+ "actionId": "48d36b08-15dd-4276-a1b5-68af59967f3f"
635
+ },
636
+ "operation_started_at_ms": 1793351044614,
637
+ "operation_completed_at_ms": 1793351045120,
638
+ "dispatch_started_at_ms": null,
639
+ "dispatch_completed_at_ms": null,
640
+ "verification_completed_at_ms": null,
641
+ "observations": [
642
+ {
643
+ "evidence_id": "0ba3fa84-9fe5-412f-9f1e-12f6d07b0a68",
644
+ "kind": "screenshot",
645
+ "status": "captured",
646
+ "capture_started_at_ms": 1793351044876,
647
+ "capture_completed_at_ms": 1793351045120,
648
+ "source_captured_at_ms": 1793351045120,
649
+ "age_ms": 0.033203125,
650
+ "freshness": "fresh",
651
+ "freshness_reasons": [],
652
+ "device": {
653
+ "platform": "android",
654
+ "id": "emulator-5554"
655
+ },
656
+ "session_id": "d5b54681-5235-4008-8b96-bbea0cfcbcf5",
657
+ "correlation_id": "48d36b08-15dd-4276-a1b5-68af59967f3f",
658
+ "action_id": "48d36b08-15dd-4276-a1b5-68af59967f3f",
659
+ "association": "internal"
660
+ }
661
+ ],
662
+ "trace_context": {
663
+ "supported": false,
664
+ "trace_id": null,
665
+ "markers": []
666
+ }
667
+ },
668
+ "checks": {
669
+ "matchingAction": true,
670
+ "matchingCorrelation": true,
671
+ "matchingSession": true,
672
+ "afterDispatch": null
673
+ }
674
+ },
675
+ {
676
+ "name": "tap",
677
+ "key": "staleGuard",
678
+ "success": true,
679
+ "verification": {
680
+ "mode": "none",
681
+ "status": "not_requested"
682
+ },
683
+ "evidence": {
684
+ "session_id": "d5b54681-5235-4008-8b96-bbea0cfcbcf5",
685
+ "correlation_id": "e724d6e2-3cc7-45e8-91ac-9cc0703417de",
686
+ "action_id": "e724d6e2-3cc7-45e8-91ac-9cc0703417de",
687
+ "device": {
688
+ "platform": "android",
689
+ "id": "emulator-5554"
690
+ },
691
+ "association": "self",
692
+ "association_reason": null,
693
+ "operation_started_at_ms": 1793351045122,
694
+ "operation_completed_at_ms": 1793351047579,
695
+ "dispatch_started_at_ms": 1793351047512,
696
+ "dispatch_completed_at_ms": 1793351047579,
697
+ "verification_completed_at_ms": null,
698
+ "observations": [
699
+ {
700
+ "evidence_id": "7b38bb13-1a4d-4513-bd76-ae073a3a3ae3",
701
+ "kind": "ui_tree",
702
+ "status": "captured",
703
+ "capture_started_at_ms": 1793351045364,
704
+ "capture_completed_at_ms": 1793351047511,
705
+ "source_captured_at_ms": 1793351047511,
706
+ "age_ms": 67.93798828125,
707
+ "freshness": "stale",
708
+ "freshness_reasons": [
709
+ "BEFORE_ACTION"
710
+ ],
711
+ "device": {
712
+ "platform": "android",
713
+ "id": "emulator-5554"
714
+ },
715
+ "snapshot_session_id": "b18601b1-71af-40d7-8834-1bf30c6acca6",
716
+ "snapshot_revision": 3,
717
+ "session_id": "d5b54681-5235-4008-8b96-bbea0cfcbcf5",
718
+ "correlation_id": "e724d6e2-3cc7-45e8-91ac-9cc0703417de",
719
+ "action_id": "e724d6e2-3cc7-45e8-91ac-9cc0703417de",
720
+ "association": "internal"
721
+ }
722
+ ],
723
+ "trace_context": {
724
+ "supported": false,
725
+ "trace_id": null,
726
+ "markers": []
727
+ }
728
+ }
729
+ },
730
+ {
731
+ "name": "tap",
732
+ "key": "gener8Coordinates",
733
+ "success": true,
734
+ "verification": {
735
+ "mode": "none",
736
+ "status": "not_requested"
737
+ },
738
+ "evidence": {
739
+ "session_id": "d5b54681-5235-4008-8b96-bbea0cfcbcf5",
740
+ "correlation_id": "bdb63e13-3b61-4db3-9cad-ca8832c74ea0",
741
+ "action_id": "bdb63e13-3b61-4db3-9cad-ca8832c74ea0",
742
+ "device": {
743
+ "platform": "android",
744
+ "id": "emulator-5554"
745
+ },
746
+ "association": "self",
747
+ "association_reason": null,
748
+ "operation_started_at_ms": 1793351078281,
749
+ "operation_completed_at_ms": 1793351080993,
750
+ "dispatch_started_at_ms": 1793351080926,
751
+ "dispatch_completed_at_ms": 1793351080993,
752
+ "verification_completed_at_ms": null,
753
+ "observations": [
754
+ {
755
+ "evidence_id": "c5bf5037-420c-4ad8-8cd0-7679cda07b20",
756
+ "kind": "ui_tree",
757
+ "status": "captured",
758
+ "capture_started_at_ms": 1793351078632,
759
+ "capture_completed_at_ms": 1793351080926,
760
+ "source_captured_at_ms": 1793351080926,
761
+ "age_ms": 67.416015625,
762
+ "freshness": "stale",
763
+ "freshness_reasons": [
764
+ "BEFORE_ACTION"
765
+ ],
766
+ "device": {
767
+ "platform": "android",
768
+ "id": "emulator-5554"
769
+ },
770
+ "snapshot_session_id": "b18601b1-71af-40d7-8834-1bf30c6acca6",
771
+ "snapshot_revision": 3,
772
+ "session_id": "d5b54681-5235-4008-8b96-bbea0cfcbcf5",
773
+ "correlation_id": "bdb63e13-3b61-4db3-9cad-ca8832c74ea0",
774
+ "action_id": "bdb63e13-3b61-4db3-9cad-ca8832c74ea0",
775
+ "association": "internal"
776
+ }
777
+ ],
778
+ "trace_context": {
779
+ "supported": false,
780
+ "trace_id": null,
781
+ "markers": []
782
+ }
783
+ }
784
+ },
785
+ {
786
+ "name": "capture_screenshot",
787
+ "key": "gener8ActualScreen",
788
+ "evidence": {
789
+ "session_id": "d5b54681-5235-4008-8b96-bbea0cfcbcf5",
790
+ "correlation_id": "bdb63e13-3b61-4db3-9cad-ca8832c74ea0",
791
+ "action_id": "bdb63e13-3b61-4db3-9cad-ca8832c74ea0",
792
+ "device": {
793
+ "platform": "android",
794
+ "id": "emulator-5554"
795
+ },
796
+ "association": "explicit",
797
+ "association_reason": null,
798
+ "requested_action_ref": {
799
+ "sessionId": "d5b54681-5235-4008-8b96-bbea0cfcbcf5",
800
+ "actionId": "bdb63e13-3b61-4db3-9cad-ca8832c74ea0"
801
+ },
802
+ "operation_started_at_ms": 1793351080996,
803
+ "operation_completed_at_ms": 1793351081631,
804
+ "dispatch_started_at_ms": 1793351080926,
805
+ "dispatch_completed_at_ms": 1793351080993,
806
+ "verification_completed_at_ms": null,
807
+ "observations": [
808
+ {
809
+ "evidence_id": "a726fcb1-1fad-478e-bef3-8846d92e139d",
810
+ "kind": "screenshot",
811
+ "status": "captured",
812
+ "capture_started_at_ms": 1793351081246,
813
+ "capture_completed_at_ms": 1793351081631,
814
+ "source_captured_at_ms": 1793351081631,
815
+ "age_ms": 0.10546875,
816
+ "freshness": "fresh",
817
+ "freshness_reasons": [],
818
+ "device": {
819
+ "platform": "android",
820
+ "id": "emulator-5554"
821
+ },
822
+ "session_id": "d5b54681-5235-4008-8b96-bbea0cfcbcf5",
823
+ "correlation_id": "bdb63e13-3b61-4db3-9cad-ca8832c74ea0",
824
+ "action_id": "bdb63e13-3b61-4db3-9cad-ca8832c74ea0",
825
+ "association": "internal"
826
+ }
827
+ ],
828
+ "trace_context": {
829
+ "supported": false,
830
+ "trace_id": null,
831
+ "markers": []
832
+ }
833
+ },
834
+ "checks": {
835
+ "matchingAction": true,
836
+ "matchingCorrelation": true,
837
+ "matchingSession": true,
838
+ "afterDispatch": true
839
+ }
840
+ },
841
+ {
842
+ "name": "get_ui_tree",
843
+ "key": "gener8ActualTree",
844
+ "evidence": {
845
+ "session_id": "d5b54681-5235-4008-8b96-bbea0cfcbcf5",
846
+ "correlation_id": "bdb63e13-3b61-4db3-9cad-ca8832c74ea0",
847
+ "action_id": "bdb63e13-3b61-4db3-9cad-ca8832c74ea0",
848
+ "device": {
849
+ "platform": "android",
850
+ "id": "emulator-5554"
851
+ },
852
+ "association": "explicit",
853
+ "association_reason": null,
854
+ "requested_action_ref": {
855
+ "sessionId": "d5b54681-5235-4008-8b96-bbea0cfcbcf5",
856
+ "actionId": "bdb63e13-3b61-4db3-9cad-ca8832c74ea0"
857
+ },
858
+ "operation_started_at_ms": 1793351081634,
859
+ "operation_completed_at_ms": 1793351084004,
860
+ "dispatch_started_at_ms": 1793351080926,
861
+ "dispatch_completed_at_ms": 1793351080993,
862
+ "verification_completed_at_ms": null,
863
+ "observations": [
864
+ {
865
+ "evidence_id": "e56757a5-e471-4a4b-8ba0-20af1c5cd357",
866
+ "kind": "ui_tree",
867
+ "status": "captured",
868
+ "capture_started_at_ms": 1793351081850,
869
+ "capture_completed_at_ms": 1793351084004,
870
+ "source_captured_at_ms": 1793351084004,
871
+ "age_ms": 0.152587890625,
872
+ "freshness": "fresh",
873
+ "freshness_reasons": [],
874
+ "device": {
875
+ "platform": "android",
876
+ "id": "emulator-5554"
877
+ },
878
+ "snapshot_session_id": "b18601b1-71af-40d7-8834-1bf30c6acca6",
879
+ "snapshot_revision": 4,
880
+ "session_id": "d5b54681-5235-4008-8b96-bbea0cfcbcf5",
881
+ "correlation_id": "bdb63e13-3b61-4db3-9cad-ca8832c74ea0",
882
+ "action_id": "bdb63e13-3b61-4db3-9cad-ca8832c74ea0",
883
+ "association": "internal"
884
+ }
885
+ ],
886
+ "trace_context": {
887
+ "supported": false,
888
+ "trace_id": null,
889
+ "markers": []
890
+ }
891
+ },
892
+ "checks": {
893
+ "matchingAction": true,
894
+ "matchingCorrelation": true,
895
+ "matchingSession": true,
896
+ "afterDispatch": true
897
+ }
898
+ },
899
+ {
900
+ "name": "tap",
901
+ "key": "staleRejected",
902
+ "success": false,
903
+ "failure_code": "PRECONDITION_FAILED",
904
+ "verification": {
905
+ "mode": "none",
906
+ "status": "not_requested"
907
+ },
908
+ "evidence": {
909
+ "session_id": "d5b54681-5235-4008-8b96-bbea0cfcbcf5",
910
+ "correlation_id": "44a64edc-b0c9-4cd0-96f0-2b5b256da5d4",
911
+ "action_id": "44a64edc-b0c9-4cd0-96f0-2b5b256da5d4",
912
+ "device": {
913
+ "platform": "android",
914
+ "id": "emulator-5554"
915
+ },
916
+ "association": "self",
917
+ "association_reason": null,
918
+ "operation_started_at_ms": 1793351084006,
919
+ "operation_completed_at_ms": 1793351086486,
920
+ "dispatch_started_at_ms": null,
921
+ "dispatch_completed_at_ms": null,
922
+ "verification_completed_at_ms": null,
923
+ "observations": [
924
+ {
925
+ "evidence_id": "da860d74-d277-4686-91f8-4dd5819a7ccc",
926
+ "kind": "ui_tree",
927
+ "status": "captured",
928
+ "capture_started_at_ms": 1793351084292,
929
+ "capture_completed_at_ms": 1793351086485,
930
+ "source_captured_at_ms": 1793351086485,
931
+ "age_ms": 0.798828125,
932
+ "freshness": "fresh",
933
+ "freshness_reasons": [],
934
+ "device": {
935
+ "platform": "android",
936
+ "id": "emulator-5554"
937
+ },
938
+ "snapshot_session_id": "b18601b1-71af-40d7-8834-1bf30c6acca6",
939
+ "snapshot_revision": 4,
940
+ "session_id": "d5b54681-5235-4008-8b96-bbea0cfcbcf5",
941
+ "correlation_id": "44a64edc-b0c9-4cd0-96f0-2b5b256da5d4",
942
+ "action_id": "44a64edc-b0c9-4cd0-96f0-2b5b256da5d4",
943
+ "association": "internal"
944
+ }
945
+ ],
946
+ "trace_context": {
947
+ "supported": false,
948
+ "trace_id": null,
949
+ "markers": []
950
+ }
951
+ }
952
+ },
953
+ {
954
+ "name": "capture_screenshot",
955
+ "key": "settingsScreen",
956
+ "evidence": {
957
+ "session_id": "d5b54681-5235-4008-8b96-bbea0cfcbcf5",
958
+ "correlation_id": "768d112a-3ec4-4406-b757-14cc8d2ddd4c",
959
+ "action_id": "768d112a-3ec4-4406-b757-14cc8d2ddd4c",
960
+ "device": {
961
+ "platform": "android",
962
+ "id": "emulator-5554"
963
+ },
964
+ "association": "explicit",
965
+ "association_reason": null,
966
+ "requested_action_ref": {
967
+ "sessionId": "d5b54681-5235-4008-8b96-bbea0cfcbcf5",
968
+ "actionId": "768d112a-3ec4-4406-b757-14cc8d2ddd4c"
969
+ },
970
+ "operation_started_at_ms": 1793351125476,
971
+ "operation_completed_at_ms": 1793351126102,
972
+ "dispatch_started_at_ms": 1793351125426,
973
+ "dispatch_completed_at_ms": 1793351125475,
974
+ "verification_completed_at_ms": null,
975
+ "observations": [
976
+ {
977
+ "evidence_id": "1ef00c26-436c-42f6-9de9-c1c6f5aa2cde",
978
+ "kind": "screenshot",
979
+ "status": "captured",
980
+ "capture_started_at_ms": 1793351125684,
981
+ "capture_completed_at_ms": 1793351126102,
982
+ "source_captured_at_ms": 1793351126102,
983
+ "age_ms": 0.042236328125,
984
+ "freshness": "fresh",
985
+ "freshness_reasons": [],
986
+ "device": {
987
+ "platform": "android",
988
+ "id": "emulator-5554"
989
+ },
990
+ "session_id": "d5b54681-5235-4008-8b96-bbea0cfcbcf5",
991
+ "correlation_id": "768d112a-3ec4-4406-b757-14cc8d2ddd4c",
992
+ "action_id": "768d112a-3ec4-4406-b757-14cc8d2ddd4c",
993
+ "association": "internal"
994
+ }
995
+ ],
996
+ "trace_context": {
997
+ "supported": false,
998
+ "trace_id": null,
999
+ "markers": []
1000
+ }
1001
+ }
1002
+ },
1003
+ {
1004
+ "name": "get_ui_tree",
1005
+ "key": "restoredSubscription",
1006
+ "evidence": {
1007
+ "session_id": "d5b54681-5235-4008-8b96-bbea0cfcbcf5",
1008
+ "correlation_id": "768d112a-3ec4-4406-b757-14cc8d2ddd4c",
1009
+ "action_id": "768d112a-3ec4-4406-b757-14cc8d2ddd4c",
1010
+ "device": {
1011
+ "platform": "android",
1012
+ "id": "emulator-5554"
1013
+ },
1014
+ "association": "explicit",
1015
+ "association_reason": null,
1016
+ "requested_action_ref": {
1017
+ "sessionId": "d5b54681-5235-4008-8b96-bbea0cfcbcf5",
1018
+ "actionId": "768d112a-3ec4-4406-b757-14cc8d2ddd4c"
1019
+ },
1020
+ "operation_started_at_ms": 1793351163811,
1021
+ "operation_completed_at_ms": 1793351166459,
1022
+ "dispatch_started_at_ms": 1793351125426,
1023
+ "dispatch_completed_at_ms": 1793351125475,
1024
+ "verification_completed_at_ms": null,
1025
+ "observations": [
1026
+ {
1027
+ "evidence_id": "96609452-3ac3-4998-a50f-5aea8bf20bde",
1028
+ "kind": "ui_tree",
1029
+ "status": "captured",
1030
+ "capture_started_at_ms": 1793351164081,
1031
+ "capture_completed_at_ms": 1793351166459,
1032
+ "source_captured_at_ms": 1793351166459,
1033
+ "age_ms": 0.40283203125,
1034
+ "freshness": "fresh",
1035
+ "freshness_reasons": [],
1036
+ "device": {
1037
+ "platform": "android",
1038
+ "id": "emulator-5554"
1039
+ },
1040
+ "snapshot_session_id": "b18601b1-71af-40d7-8834-1bf30c6acca6",
1041
+ "snapshot_revision": 5,
1042
+ "session_id": "d5b54681-5235-4008-8b96-bbea0cfcbcf5",
1043
+ "correlation_id": "768d112a-3ec4-4406-b757-14cc8d2ddd4c",
1044
+ "action_id": "768d112a-3ec4-4406-b757-14cc8d2ddd4c",
1045
+ "association": "internal"
1046
+ }
1047
+ ],
1048
+ "trace_context": {
1049
+ "supported": false,
1050
+ "trace_id": null,
1051
+ "markers": []
1052
+ }
1053
+ },
1054
+ "checks": {
1055
+ "matchingAction": true,
1056
+ "matchingCorrelation": true,
1057
+ "matchingSession": true,
1058
+ "afterDispatch": true
1059
+ }
1060
+ }
1061
+ ]
1062
+ }