execbro 1.11.1 → 2.1.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.
- package/README.md +4 -4
- package/build/__tests__/unit/appContext.test.d.ts +2 -0
- package/build/__tests__/unit/appContext.test.d.ts.map +1 -0
- package/build/__tests__/unit/appContext.test.js +70 -0
- package/build/__tests__/unit/appContext.test.js.map +1 -0
- package/build/__tests__/unit/appRequest.test.d.ts +2 -0
- package/build/__tests__/unit/appRequest.test.d.ts.map +1 -0
- package/build/__tests__/unit/appRequest.test.js +179 -0
- package/build/__tests__/unit/appRequest.test.js.map +1 -0
- package/build/__tests__/unit/contextWiring.test.d.ts +2 -0
- package/build/__tests__/unit/contextWiring.test.d.ts.map +1 -0
- package/build/__tests__/unit/contextWiring.test.js +28 -0
- package/build/__tests__/unit/contextWiring.test.js.map +1 -0
- package/build/__tests__/unit/coordinateMiss.test.d.ts +2 -0
- package/build/__tests__/unit/coordinateMiss.test.d.ts.map +1 -0
- package/build/__tests__/unit/coordinateMiss.test.js +111 -0
- package/build/__tests__/unit/coordinateMiss.test.js.map +1 -0
- package/build/__tests__/unit/deviceResolverStaleRetry.test.d.ts +2 -0
- package/build/__tests__/unit/deviceResolverStaleRetry.test.d.ts.map +1 -0
- package/build/__tests__/unit/deviceResolverStaleRetry.test.js +69 -0
- package/build/__tests__/unit/deviceResolverStaleRetry.test.js.map +1 -0
- package/build/__tests__/unit/epochRender.test.d.ts +2 -0
- package/build/__tests__/unit/epochRender.test.d.ts.map +1 -0
- package/build/__tests__/unit/epochRender.test.js +60 -0
- package/build/__tests__/unit/epochRender.test.js.map +1 -0
- package/build/__tests__/unit/executeBudget.test.d.ts +2 -0
- package/build/__tests__/unit/executeBudget.test.d.ts.map +1 -0
- package/build/__tests__/unit/executeBudget.test.js +27 -0
- package/build/__tests__/unit/executeBudget.test.js.map +1 -0
- package/build/__tests__/unit/executor.test.js +48 -6
- package/build/__tests__/unit/executor.test.js.map +1 -1
- package/build/__tests__/unit/findElementTreeReuse.test.d.ts +2 -0
- package/build/__tests__/unit/findElementTreeReuse.test.d.ts.map +1 -0
- package/build/__tests__/unit/findElementTreeReuse.test.js +77 -0
- package/build/__tests__/unit/findElementTreeReuse.test.js.map +1 -0
- package/build/__tests__/unit/getLogsEmptyContract.test.js +4 -3
- package/build/__tests__/unit/getLogsEmptyContract.test.js.map +1 -1
- package/build/__tests__/unit/getLogsNativeSource.test.js +7 -8
- package/build/__tests__/unit/getLogsNativeSource.test.js.map +1 -1
- package/build/__tests__/unit/inspectorHarvest.test.js +1 -21
- package/build/__tests__/unit/inspectorHarvest.test.js.map +1 -1
- package/build/__tests__/unit/inspectorSource.test.js +1 -38
- package/build/__tests__/unit/inspectorSource.test.js.map +1 -1
- package/build/__tests__/unit/jsLogEvents.test.js +1 -0
- package/build/__tests__/unit/jsLogEvents.test.js.map +1 -1
- package/build/__tests__/unit/logBufferEpoch.test.d.ts +2 -0
- package/build/__tests__/unit/logBufferEpoch.test.d.ts.map +1 -0
- package/build/__tests__/unit/logBufferEpoch.test.js +63 -0
- package/build/__tests__/unit/logBufferEpoch.test.js.map +1 -0
- package/build/__tests__/unit/metro.test.js +18 -1
- package/build/__tests__/unit/metro.test.js.map +1 -1
- package/build/__tests__/unit/moduleRegistry.test.d.ts +2 -0
- package/build/__tests__/unit/moduleRegistry.test.d.ts.map +1 -0
- package/build/__tests__/unit/moduleRegistry.test.js +62 -0
- package/build/__tests__/unit/moduleRegistry.test.js.map +1 -0
- package/build/__tests__/unit/navigateVerify.test.d.ts +2 -0
- package/build/__tests__/unit/navigateVerify.test.d.ts.map +1 -0
- package/build/__tests__/unit/navigateVerify.test.js +30 -0
- package/build/__tests__/unit/navigateVerify.test.js.map +1 -0
- package/build/__tests__/unit/navigation.test.d.ts +2 -0
- package/build/__tests__/unit/navigation.test.d.ts.map +1 -0
- package/build/__tests__/unit/navigation.test.js +254 -0
- package/build/__tests__/unit/navigation.test.js.map +1 -0
- package/build/__tests__/unit/network.test.js +1 -0
- package/build/__tests__/unit/network.test.js.map +1 -1
- package/build/__tests__/unit/networkBufferEpoch.test.d.ts +2 -0
- package/build/__tests__/unit/networkBufferEpoch.test.d.ts.map +1 -0
- package/build/__tests__/unit/networkBufferEpoch.test.js +52 -0
- package/build/__tests__/unit/networkBufferEpoch.test.js.map +1 -0
- package/build/__tests__/unit/networkInterceptor.test.js +7 -7
- package/build/__tests__/unit/networkInterceptor.test.js.map +1 -1
- package/build/__tests__/unit/promiseHandles.test.d.ts +2 -0
- package/build/__tests__/unit/promiseHandles.test.d.ts.map +1 -0
- package/build/__tests__/unit/promiseHandles.test.js +61 -0
- package/build/__tests__/unit/promiseHandles.test.js.map +1 -0
- package/build/__tests__/unit/resolveBufferOffline.test.d.ts +2 -0
- package/build/__tests__/unit/resolveBufferOffline.test.d.ts.map +1 -0
- package/build/__tests__/unit/resolveBufferOffline.test.js +25 -0
- package/build/__tests__/unit/resolveBufferOffline.test.js.map +1 -0
- package/build/__tests__/unit/sdkMirrorPoller.test.d.ts +2 -0
- package/build/__tests__/unit/sdkMirrorPoller.test.d.ts.map +1 -0
- package/build/__tests__/unit/sdkMirrorPoller.test.js +118 -0
- package/build/__tests__/unit/sdkMirrorPoller.test.js.map +1 -0
- package/build/__tests__/unit/sessionEpoch.test.d.ts +2 -0
- package/build/__tests__/unit/sessionEpoch.test.d.ts.map +1 -0
- package/build/__tests__/unit/sessionEpoch.test.js +41 -0
- package/build/__tests__/unit/sessionEpoch.test.js.map +1 -0
- package/build/__tests__/unit/settleAndDiff.test.d.ts +2 -0
- package/build/__tests__/unit/settleAndDiff.test.d.ts.map +1 -0
- package/build/__tests__/unit/settleAndDiff.test.js +110 -0
- package/build/__tests__/unit/settleAndDiff.test.js.map +1 -0
- package/build/__tests__/unit/truncate.test.d.ts +2 -0
- package/build/__tests__/unit/truncate.test.d.ts.map +1 -0
- package/build/__tests__/unit/truncate.test.js +58 -0
- package/build/__tests__/unit/truncate.test.js.map +1 -0
- package/build/__tests__/unit/verifyAction.test.js +2 -1
- package/build/__tests__/unit/verifyAction.test.js.map +1 -1
- package/build/__tests__/unit/waitForMeasurements.test.d.ts +2 -0
- package/build/__tests__/unit/waitForMeasurements.test.d.ts.map +1 -0
- package/build/__tests__/unit/waitForMeasurements.test.js +69 -0
- package/build/__tests__/unit/waitForMeasurements.test.js.map +1 -0
- package/build/core/android.d.ts +3 -1
- package/build/core/android.d.ts.map +1 -1
- package/build/core/android.js +5 -5
- package/build/core/android.js.map +1 -1
- package/build/core/appContext.d.ts +53 -0
- package/build/core/appContext.d.ts.map +1 -0
- package/build/core/appContext.js +172 -0
- package/build/core/appContext.js.map +1 -0
- package/build/core/appRequest.d.ts +21 -0
- package/build/core/appRequest.d.ts.map +1 -0
- package/build/core/appRequest.js +95 -0
- package/build/core/appRequest.js.map +1 -0
- package/build/core/bufferConfig.d.ts +5 -0
- package/build/core/bufferConfig.d.ts.map +1 -0
- package/build/core/bufferConfig.js +20 -0
- package/build/core/bufferConfig.js.map +1 -0
- package/build/core/connection.d.ts.map +1 -1
- package/build/core/connection.js +29 -9
- package/build/core/connection.js.map +1 -1
- package/build/core/debugGlobals.d.ts.map +1 -1
- package/build/core/debugGlobals.js +13 -0
- package/build/core/debugGlobals.js.map +1 -1
- package/build/core/deviceDiscovery.d.ts +5 -1
- package/build/core/deviceDiscovery.d.ts.map +1 -1
- package/build/core/deviceDiscovery.js +13 -2
- package/build/core/deviceDiscovery.js.map +1 -1
- package/build/core/deviceResolver.d.ts.map +1 -1
- package/build/core/deviceResolver.js +17 -2
- package/build/core/deviceResolver.js.map +1 -1
- package/build/core/epochRender.d.ts +19 -0
- package/build/core/epochRender.d.ts.map +1 -0
- package/build/core/epochRender.js +38 -0
- package/build/core/epochRender.js.map +1 -0
- package/build/core/guides.d.ts.map +1 -1
- package/build/core/guides.js +36 -91
- package/build/core/guides.js.map +1 -1
- package/build/core/index.d.ts +2 -3
- package/build/core/index.d.ts.map +1 -1
- package/build/core/index.js +4 -4
- package/build/core/index.js.map +1 -1
- package/build/core/inspector.d.ts +0 -39
- package/build/core/inspector.d.ts.map +1 -1
- package/build/core/inspector.js +1 -358
- package/build/core/inspector.js.map +1 -1
- package/build/core/ios.d.ts +14 -3
- package/build/core/ios.d.ts.map +1 -1
- package/build/core/ios.js +41 -17
- package/build/core/ios.js.map +1 -1
- package/build/core/jsExecute.d.ts +15 -0
- package/build/core/jsExecute.d.ts.map +1 -1
- package/build/core/jsExecute.js +136 -29
- package/build/core/jsExecute.js.map +1 -1
- package/build/core/logs.d.ts +12 -3
- package/build/core/logs.d.ts.map +1 -1
- package/build/core/logs.js +28 -5
- package/build/core/logs.js.map +1 -1
- package/build/core/metro.d.ts +2 -0
- package/build/core/metro.d.ts.map +1 -1
- package/build/core/metro.js +16 -8
- package/build/core/metro.js.map +1 -1
- package/build/core/moduleRegistry.d.ts +19 -0
- package/build/core/moduleRegistry.d.ts.map +1 -0
- package/build/core/moduleRegistry.js +67 -0
- package/build/core/moduleRegistry.js.map +1 -0
- package/build/core/nativeOnlyHints.d.ts.map +1 -1
- package/build/core/nativeOnlyHints.js +0 -2
- package/build/core/nativeOnlyHints.js.map +1 -1
- package/build/core/navigate.d.ts +46 -0
- package/build/core/navigate.d.ts.map +1 -0
- package/build/core/navigate.js +119 -0
- package/build/core/navigate.js.map +1 -0
- package/build/core/navigation.d.ts +66 -0
- package/build/core/navigation.d.ts.map +1 -0
- package/build/core/navigation.js +269 -0
- package/build/core/navigation.js.map +1 -0
- package/build/core/network.d.ts +12 -2
- package/build/core/network.d.ts.map +1 -1
- package/build/core/network.js +52 -12
- package/build/core/network.js.map +1 -1
- package/build/core/networkInterceptor.d.ts +1 -1
- package/build/core/networkInterceptor.d.ts.map +1 -1
- package/build/core/networkInterceptor.js +3 -2
- package/build/core/networkInterceptor.js.map +1 -1
- package/build/core/pressables.d.ts +33 -0
- package/build/core/pressables.d.ts.map +1 -1
- package/build/core/pressables.js +73 -4
- package/build/core/pressables.js.map +1 -1
- package/build/core/promiseHandles.d.ts +19 -0
- package/build/core/promiseHandles.d.ts.map +1 -0
- package/build/core/promiseHandles.js +58 -0
- package/build/core/promiseHandles.js.map +1 -0
- package/build/core/register.d.ts.map +1 -1
- package/build/core/register.js +1 -4
- package/build/core/register.js.map +1 -1
- package/build/core/sdkMirrorPoller.d.ts +31 -0
- package/build/core/sdkMirrorPoller.d.ts.map +1 -0
- package/build/core/sdkMirrorPoller.js +210 -0
- package/build/core/sdkMirrorPoller.js.map +1 -0
- package/build/core/state.d.ts +14 -0
- package/build/core/state.d.ts.map +1 -1
- package/build/core/state.js +48 -2
- package/build/core/state.js.map +1 -1
- package/build/core/toolHelpers.d.ts.map +1 -1
- package/build/core/toolHelpers.js +42 -10
- package/build/core/toolHelpers.js.map +1 -1
- package/build/core/truncate.d.ts +42 -0
- package/build/core/truncate.d.ts.map +1 -0
- package/build/core/truncate.js +169 -0
- package/build/core/truncate.js.map +1 -0
- package/build/core/types.d.ts +3 -0
- package/build/core/types.d.ts.map +1 -1
- package/build/index.d.ts.map +1 -1
- package/build/index.js +4 -2
- package/build/index.js.map +1 -1
- package/build/pro/coordinateMiss.d.ts +55 -0
- package/build/pro/coordinateMiss.d.ts.map +1 -0
- package/build/pro/coordinateMiss.js +122 -0
- package/build/pro/coordinateMiss.js.map +1 -0
- package/build/pro/tap.d.ts +8 -0
- package/build/pro/tap.d.ts.map +1 -1
- package/build/pro/tap.js +99 -11
- package/build/pro/tap.js.map +1 -1
- package/build/pro/verifyAction.d.ts +43 -2
- package/build/pro/verifyAction.d.ts.map +1 -1
- package/build/pro/verifyAction.js +95 -36
- package/build/pro/verifyAction.js.map +1 -1
- package/build/tools/_deviceArg.d.ts +17 -1
- package/build/tools/_deviceArg.d.ts.map +1 -1
- package/build/tools/_deviceArg.js +17 -1
- package/build/tools/_deviceArg.js.map +1 -1
- package/build/tools/bundleTools.d.ts.map +1 -1
- package/build/tools/bundleTools.js +20 -33
- package/build/tools/bundleTools.js.map +1 -1
- package/build/tools/componentTools.d.ts.map +1 -1
- package/build/tools/componentTools.js +41 -219
- package/build/tools/componentTools.js.map +1 -1
- package/build/tools/connectionTools.d.ts.map +1 -1
- package/build/tools/connectionTools.js +17 -22
- package/build/tools/connectionTools.js.map +1 -1
- package/build/tools/deviceTools.d.ts.map +1 -1
- package/build/tools/deviceTools.js +13 -167
- package/build/tools/deviceTools.js.map +1 -1
- package/build/tools/executionTools.d.ts.map +1 -1
- package/build/tools/executionTools.js +63 -18
- package/build/tools/executionTools.js.map +1 -1
- package/build/tools/interactionTools.d.ts +6 -0
- package/build/tools/interactionTools.d.ts.map +1 -1
- package/build/tools/interactionTools.js +41 -56
- package/build/tools/interactionTools.js.map +1 -1
- package/build/tools/logTools.d.ts.map +1 -1
- package/build/tools/logTools.js +61 -80
- package/build/tools/logTools.js.map +1 -1
- package/build/tools/metaTools.js +1 -1
- package/build/tools/metaTools.js.map +1 -1
- package/build/tools/navigationTools.d.ts +3 -0
- package/build/tools/navigationTools.d.ts.map +1 -0
- package/build/tools/navigationTools.js +60 -0
- package/build/tools/navigationTools.js.map +1 -0
- package/build/tools/networkTools.d.ts.map +1 -1
- package/build/tools/networkTools.js +44 -202
- package/build/tools/networkTools.js.map +1 -1
- package/build/tools/reduxTools.d.ts.map +1 -1
- package/build/tools/reduxTools.js +3 -2
- package/build/tools/reduxTools.js.map +1 -1
- package/build/tools/requestTools.d.ts +3 -0
- package/build/tools/requestTools.d.ts.map +1 -0
- package/build/tools/requestTools.js +79 -0
- package/build/tools/requestTools.js.map +1 -0
- package/build/tools/screenshotTools.d.ts.map +1 -1
- package/build/tools/screenshotTools.js +42 -25
- package/build/tools/screenshotTools.js.map +1 -1
- package/package.json +1 -1
- package/tools.json +22 -78
- package/build/__tests__/unit/flowpoints.test.d.ts +0 -2
- package/build/__tests__/unit/flowpoints.test.d.ts.map +0 -1
- package/build/__tests__/unit/flowpoints.test.js +0 -126
- package/build/__tests__/unit/flowpoints.test.js.map +0 -1
- package/build/__tests__/unit/flowpointsQuery.test.d.ts +0 -2
- package/build/__tests__/unit/flowpointsQuery.test.d.ts.map +0 -1
- package/build/__tests__/unit/flowpointsQuery.test.js +0 -91
- package/build/__tests__/unit/flowpointsQuery.test.js.map +0 -1
- package/build/__tests__/unit/selectionPoller.test.d.ts +0 -2
- package/build/__tests__/unit/selectionPoller.test.d.ts.map +0 -1
- package/build/__tests__/unit/selectionPoller.test.js +0 -109
- package/build/__tests__/unit/selectionPoller.test.js.map +0 -1
- package/build/__tests__/unit/verifyFlow.test.d.ts +0 -2
- package/build/__tests__/unit/verifyFlow.test.d.ts.map +0 -1
- package/build/__tests__/unit/verifyFlow.test.js +0 -45
- package/build/__tests__/unit/verifyFlow.test.js.map +0 -1
- package/build/core/selectionPoller.d.ts +0 -13
- package/build/core/selectionPoller.d.ts.map +0 -1
- package/build/core/selectionPoller.js +0 -102
- package/build/core/selectionPoller.js.map +0 -1
- package/build/pro/flowpointTools.d.ts +0 -4
- package/build/pro/flowpointTools.d.ts.map +0 -1
- package/build/pro/flowpointTools.js +0 -266
- package/build/pro/flowpointTools.js.map +0 -1
- package/build/pro/flowpoints.d.ts +0 -86
- package/build/pro/flowpoints.d.ts.map +0 -1
- package/build/pro/flowpoints.js +0 -283
- package/build/pro/flowpoints.js.map +0 -1
package/tools.json
CHANGED
|
@@ -1,19 +1,15 @@
|
|
|
1
1
|
{
|
|
2
2
|
"generatedFrom": "toolRegistry",
|
|
3
|
-
"count":
|
|
3
|
+
"count": 58,
|
|
4
4
|
"tools": [
|
|
5
5
|
"activate_license",
|
|
6
|
-
"android_get_screen_size",
|
|
7
6
|
"android_input_text",
|
|
8
|
-
"android_install_app",
|
|
9
7
|
"android_key_event",
|
|
10
8
|
"android_launch_app",
|
|
11
9
|
"android_list_packages",
|
|
12
10
|
"android_long_press",
|
|
13
11
|
"android_screenshot",
|
|
14
|
-
"
|
|
15
|
-
"clear_flowpoints",
|
|
16
|
-
"clear_focused_input",
|
|
12
|
+
"app_request",
|
|
17
13
|
"clear_logs",
|
|
18
14
|
"clear_network",
|
|
19
15
|
"connect_metro",
|
|
@@ -28,14 +24,11 @@
|
|
|
28
24
|
"get_bundle_status",
|
|
29
25
|
"get_component_tree",
|
|
30
26
|
"get_connection_status",
|
|
31
|
-
"get_flowpoints",
|
|
32
27
|
"get_images",
|
|
33
|
-
"get_inspector_selection",
|
|
34
28
|
"get_license_status",
|
|
35
29
|
"get_log_details",
|
|
36
30
|
"get_logs",
|
|
37
31
|
"get_network_requests",
|
|
38
|
-
"get_network_stats",
|
|
39
32
|
"get_pressable_elements",
|
|
40
33
|
"get_refresh_status",
|
|
41
34
|
"get_request_details",
|
|
@@ -48,17 +41,15 @@
|
|
|
48
41
|
"ios_boot_simulator",
|
|
49
42
|
"ios_button",
|
|
50
43
|
"ios_input_text",
|
|
51
|
-
"ios_install_app",
|
|
52
44
|
"ios_launch_app",
|
|
53
45
|
"ios_open_url",
|
|
54
46
|
"ios_screenshot",
|
|
55
47
|
"ios_terminate_app",
|
|
56
|
-
"list_android_devices",
|
|
57
48
|
"list_debug_globals",
|
|
58
49
|
"list_devices",
|
|
59
|
-
"list_ios_simulators",
|
|
60
50
|
"logbox",
|
|
61
51
|
"measure",
|
|
52
|
+
"navigate",
|
|
62
53
|
"ocr_screenshot",
|
|
63
54
|
"redux_dispatch",
|
|
64
55
|
"redux_get_state",
|
|
@@ -68,30 +59,18 @@
|
|
|
68
59
|
"search_network",
|
|
69
60
|
"send_feedback",
|
|
70
61
|
"swipe",
|
|
71
|
-
"tap"
|
|
72
|
-
"toggle_element_inspector",
|
|
73
|
-
"verify_flow",
|
|
74
|
-
"wait_for_flowpoint"
|
|
62
|
+
"tap"
|
|
75
63
|
],
|
|
76
64
|
"params": {
|
|
77
65
|
"activate_license": [
|
|
78
66
|
"token"
|
|
79
67
|
],
|
|
80
|
-
"android_get_screen_size": [
|
|
81
|
-
"deviceId"
|
|
82
|
-
],
|
|
83
68
|
"android_input_text": [
|
|
84
69
|
"device",
|
|
85
70
|
"deviceId",
|
|
86
71
|
"replace",
|
|
87
72
|
"text"
|
|
88
73
|
],
|
|
89
|
-
"android_install_app": [
|
|
90
|
-
"apkPath",
|
|
91
|
-
"deviceId",
|
|
92
|
-
"grantPermissions",
|
|
93
|
-
"replace"
|
|
94
|
-
],
|
|
95
74
|
"android_key_event": [
|
|
96
75
|
"deviceId",
|
|
97
76
|
"key"
|
|
@@ -115,13 +94,14 @@
|
|
|
115
94
|
"deviceId",
|
|
116
95
|
"outputPath"
|
|
117
96
|
],
|
|
118
|
-
"
|
|
119
|
-
|
|
97
|
+
"app_request": [
|
|
98
|
+
"auth",
|
|
99
|
+
"body",
|
|
120
100
|
"device",
|
|
121
|
-
"
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
"
|
|
101
|
+
"headers",
|
|
102
|
+
"maxResultLength",
|
|
103
|
+
"method",
|
|
104
|
+
"url"
|
|
125
105
|
],
|
|
126
106
|
"clear_logs": [
|
|
127
107
|
"device"
|
|
@@ -148,6 +128,7 @@
|
|
|
148
128
|
],
|
|
149
129
|
"execute_in_app": [
|
|
150
130
|
"awaitPromise",
|
|
131
|
+
"collect",
|
|
151
132
|
"device",
|
|
152
133
|
"expression",
|
|
153
134
|
"maxResultLength",
|
|
@@ -167,6 +148,7 @@
|
|
|
167
148
|
],
|
|
168
149
|
"get_apps": [],
|
|
169
150
|
"get_bundle_errors": [
|
|
151
|
+
"clear",
|
|
170
152
|
"deviceId",
|
|
171
153
|
"maxErrors",
|
|
172
154
|
"platform"
|
|
@@ -187,16 +169,6 @@
|
|
|
187
169
|
"eventLimit",
|
|
188
170
|
"events"
|
|
189
171
|
],
|
|
190
|
-
"get_flowpoints": [
|
|
191
|
-
"device",
|
|
192
|
-
"level",
|
|
193
|
-
"limit",
|
|
194
|
-
"metaIncludes",
|
|
195
|
-
"name",
|
|
196
|
-
"run",
|
|
197
|
-
"since",
|
|
198
|
-
"step"
|
|
199
|
-
],
|
|
200
172
|
"get_images": [
|
|
201
173
|
"clear",
|
|
202
174
|
"frameIndex",
|
|
@@ -206,14 +178,6 @@
|
|
|
206
178
|
"list",
|
|
207
179
|
"source"
|
|
208
180
|
],
|
|
209
|
-
"get_inspector_selection": [
|
|
210
|
-
"device",
|
|
211
|
-
"history",
|
|
212
|
-
"limit",
|
|
213
|
-
"source",
|
|
214
|
-
"x",
|
|
215
|
-
"y"
|
|
216
|
-
],
|
|
217
181
|
"get_license_status": [],
|
|
218
182
|
"get_log_details": [
|
|
219
183
|
"id",
|
|
@@ -222,6 +186,7 @@
|
|
|
222
186
|
],
|
|
223
187
|
"get_logs": [
|
|
224
188
|
"device",
|
|
189
|
+
"epoch",
|
|
225
190
|
"kind",
|
|
226
191
|
"level",
|
|
227
192
|
"maxLogs",
|
|
@@ -235,15 +200,13 @@
|
|
|
235
200
|
],
|
|
236
201
|
"get_network_requests": [
|
|
237
202
|
"device",
|
|
203
|
+
"epoch",
|
|
238
204
|
"maxRequests",
|
|
239
205
|
"method",
|
|
240
206
|
"status",
|
|
241
207
|
"summary",
|
|
242
208
|
"urlPattern"
|
|
243
209
|
],
|
|
244
|
-
"get_network_stats": [
|
|
245
|
-
"device"
|
|
246
|
-
],
|
|
247
210
|
"get_pressable_elements": [
|
|
248
211
|
"device"
|
|
249
212
|
],
|
|
@@ -310,10 +273,6 @@
|
|
|
310
273
|
"text",
|
|
311
274
|
"udid"
|
|
312
275
|
],
|
|
313
|
-
"ios_install_app": [
|
|
314
|
-
"appPath",
|
|
315
|
-
"udid"
|
|
316
|
-
],
|
|
317
276
|
"ios_launch_app": [
|
|
318
277
|
"bundleId",
|
|
319
278
|
"udid"
|
|
@@ -331,16 +290,12 @@
|
|
|
331
290
|
"bundleId",
|
|
332
291
|
"udid"
|
|
333
292
|
],
|
|
334
|
-
"list_android_devices": [],
|
|
335
293
|
"list_debug_globals": [
|
|
336
294
|
"device"
|
|
337
295
|
],
|
|
338
296
|
"list_devices": [
|
|
339
297
|
"refresh"
|
|
340
298
|
],
|
|
341
|
-
"list_ios_simulators": [
|
|
342
|
-
"onlyBooted"
|
|
343
|
-
],
|
|
344
299
|
"logbox": [
|
|
345
300
|
"action",
|
|
346
301
|
"device",
|
|
@@ -356,6 +311,13 @@
|
|
|
356
311
|
"device",
|
|
357
312
|
"index"
|
|
358
313
|
],
|
|
314
|
+
"navigate": [
|
|
315
|
+
"action",
|
|
316
|
+
"device",
|
|
317
|
+
"params",
|
|
318
|
+
"routeTable",
|
|
319
|
+
"to"
|
|
320
|
+
],
|
|
359
321
|
"ocr_screenshot": [
|
|
360
322
|
"deviceId",
|
|
361
323
|
"platform"
|
|
@@ -424,24 +386,6 @@
|
|
|
424
386
|
"verify",
|
|
425
387
|
"x",
|
|
426
388
|
"y"
|
|
427
|
-
],
|
|
428
|
-
"toggle_element_inspector": [
|
|
429
|
-
"device"
|
|
430
|
-
],
|
|
431
|
-
"verify_flow": [
|
|
432
|
-
"allowErrors",
|
|
433
|
-
"device",
|
|
434
|
-
"expect",
|
|
435
|
-
"name",
|
|
436
|
-
"run"
|
|
437
|
-
],
|
|
438
|
-
"wait_for_flowpoint": [
|
|
439
|
-
"device",
|
|
440
|
-
"level",
|
|
441
|
-
"metaIncludes",
|
|
442
|
-
"name",
|
|
443
|
-
"step",
|
|
444
|
-
"timeoutMs"
|
|
445
389
|
]
|
|
446
390
|
}
|
|
447
391
|
}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"flowpoints.test.d.ts","sourceRoot":"","sources":["../../../src/__tests__/unit/flowpoints.test.ts"],"names":[],"mappings":""}
|
|
@@ -1,126 +0,0 @@
|
|
|
1
|
-
import { describe, expect, it } from "@jest/globals";
|
|
2
|
-
import { FLOWPOINT_STORE_CAP, createFlowpointStore, applyDrain, buildDrainExpression, buildClearExpression, parseDrainResult, clearFlowpointStores, getFlowpointStore, } from "../../pro/flowpoints.js";
|
|
3
|
-
function makeEntry(seq, overrides = {}) {
|
|
4
|
-
return { seq, t: 1000 + seq, name: "add-to-cart", step: `step-${seq}`, run: "r1", level: "info", ...overrides };
|
|
5
|
-
}
|
|
6
|
-
describe("applyDrain", () => {
|
|
7
|
-
it("appends everything on first drain and sets cursor/contextId", () => {
|
|
8
|
-
const store = createFlowpointStore();
|
|
9
|
-
const added = applyDrain(store, { contextId: "ctx-a", entries: [makeEntry(1), makeEntry(2)] });
|
|
10
|
-
expect(added).toBe(2);
|
|
11
|
-
expect(store.entries).toHaveLength(2);
|
|
12
|
-
expect(store.cursor).toBe(2);
|
|
13
|
-
expect(store.contextId).toBe("ctx-a");
|
|
14
|
-
});
|
|
15
|
-
it("is idempotent for the same snapshot and incremental for grown snapshots", () => {
|
|
16
|
-
const store = createFlowpointStore();
|
|
17
|
-
applyDrain(store, { contextId: "ctx-a", entries: [makeEntry(1)] });
|
|
18
|
-
expect(applyDrain(store, { contextId: "ctx-a", entries: [makeEntry(1)] })).toBe(0);
|
|
19
|
-
expect(applyDrain(store, { contextId: "ctx-a", entries: [makeEntry(1), makeEntry(2)] })).toBe(1);
|
|
20
|
-
expect(store.entries.map((e) => e.seq)).toEqual([1, 2]);
|
|
21
|
-
});
|
|
22
|
-
it("treats a changed contextId as a reload: all snapshot entries are fresh", () => {
|
|
23
|
-
const store = createFlowpointStore();
|
|
24
|
-
applyDrain(store, { contextId: "ctx-a", entries: [makeEntry(1), makeEntry(2), makeEntry(3)] });
|
|
25
|
-
// reload: seq restarts, MORE entries than the old cursor — heuristics would miss this
|
|
26
|
-
const added = applyDrain(store, {
|
|
27
|
-
contextId: "ctx-b",
|
|
28
|
-
entries: [makeEntry(1), makeEntry(2), makeEntry(3), makeEntry(4)],
|
|
29
|
-
});
|
|
30
|
-
expect(added).toBe(4);
|
|
31
|
-
expect(store.entries).toHaveLength(7);
|
|
32
|
-
expect(store.cursor).toBe(4);
|
|
33
|
-
expect(store.contextId).toBe("ctx-b");
|
|
34
|
-
});
|
|
35
|
-
it("caps the store at FLOWPOINT_STORE_CAP, dropping oldest", () => {
|
|
36
|
-
const store = createFlowpointStore();
|
|
37
|
-
const entries = Array.from({ length: FLOWPOINT_STORE_CAP + 10 }, (_, i) => makeEntry(i + 1));
|
|
38
|
-
applyDrain(store, { contextId: "ctx-a", entries });
|
|
39
|
-
expect(store.entries).toHaveLength(FLOWPOINT_STORE_CAP);
|
|
40
|
-
expect(store.entries[0].seq).toBe(11);
|
|
41
|
-
});
|
|
42
|
-
});
|
|
43
|
-
describe("expression builders", () => {
|
|
44
|
-
it("drain expression is an IIFE reading getFlowpointSnapshot with dual-global fallback", () => {
|
|
45
|
-
const expr = buildDrainExpression();
|
|
46
|
-
expect(expr).toContain("__EXECBRO__");
|
|
47
|
-
expect(expr).toContain("__RN_AI_DEVTOOLS__");
|
|
48
|
-
expect(expr).toContain("getFlowpointSnapshot");
|
|
49
|
-
expect(expr).toContain("__missing");
|
|
50
|
-
expect(expr).toContain("meta not JSON-serializable");
|
|
51
|
-
expect(expr).toContain("__EXECBRO_FLOWPOINT_WARNED__");
|
|
52
|
-
expect(expr).toContain("console.warn");
|
|
53
|
-
expect(expr).toContain("outdated");
|
|
54
|
-
expect(expr).toContain("execbro-sdk@latest");
|
|
55
|
-
});
|
|
56
|
-
it("clear expression calls clearFlowpoints", () => {
|
|
57
|
-
expect(buildClearExpression()).toContain("clearFlowpoints");
|
|
58
|
-
});
|
|
59
|
-
});
|
|
60
|
-
describe("parseDrainResult", () => {
|
|
61
|
-
it("parses a snapshot", () => {
|
|
62
|
-
const parsed = parseDrainResult(JSON.stringify({ contextId: "c", entries: [makeEntry(1)] }));
|
|
63
|
-
expect(parsed).toEqual({ contextId: "c", entries: [makeEntry(1)] });
|
|
64
|
-
});
|
|
65
|
-
it("detects the SDK-missing marker, defaulting to uninitialized when no reason is given", () => {
|
|
66
|
-
expect(parseDrainResult(JSON.stringify({ __missing: true }))).toEqual({
|
|
67
|
-
missing: true,
|
|
68
|
-
reason: "uninitialized",
|
|
69
|
-
});
|
|
70
|
-
});
|
|
71
|
-
it("detects the outdated-SDK marker", () => {
|
|
72
|
-
expect(parseDrainResult(JSON.stringify({ __missing: true, __reason: "outdated" }))).toEqual({
|
|
73
|
-
missing: true,
|
|
74
|
-
reason: "outdated",
|
|
75
|
-
});
|
|
76
|
-
});
|
|
77
|
-
it("returns null on garbage", () => {
|
|
78
|
-
expect(parseDrainResult("not json")).toBeNull();
|
|
79
|
-
});
|
|
80
|
-
});
|
|
81
|
-
describe("clearFlowpointStores", () => {
|
|
82
|
-
it("device-scoped clear touches only that device's store", () => {
|
|
83
|
-
const deviceA = getFlowpointStore("clear-test-device-a");
|
|
84
|
-
const deviceB = getFlowpointStore("clear-test-device-b");
|
|
85
|
-
applyDrain(deviceA, { contextId: "ctx-a", entries: [makeEntry(1), makeEntry(2)] });
|
|
86
|
-
applyDrain(deviceB, { contextId: "ctx-b", entries: [makeEntry(1), makeEntry(2), makeEntry(3)] });
|
|
87
|
-
const removed = clearFlowpointStores(undefined, "clear-test-device-a");
|
|
88
|
-
expect(removed).toBe(2);
|
|
89
|
-
expect(deviceA.entries).toHaveLength(0);
|
|
90
|
-
expect(deviceB.entries).toHaveLength(3);
|
|
91
|
-
// cursor/contextId retained so cleared entries never re-drain
|
|
92
|
-
expect(deviceA.cursor).toBe(2);
|
|
93
|
-
expect(deviceA.contextId).toBe("ctx-a");
|
|
94
|
-
});
|
|
95
|
-
it("undefined deviceName clears all stores", () => {
|
|
96
|
-
// Reset any state left by other stores/tests sharing the module-level map.
|
|
97
|
-
clearFlowpointStores(undefined, undefined);
|
|
98
|
-
const deviceC = getFlowpointStore("clear-test-device-c");
|
|
99
|
-
const deviceD = getFlowpointStore("clear-test-device-d");
|
|
100
|
-
applyDrain(deviceC, { contextId: "ctx-c", entries: [makeEntry(1)] });
|
|
101
|
-
applyDrain(deviceD, { contextId: "ctx-d", entries: [makeEntry(1), makeEntry(2)] });
|
|
102
|
-
const removed = clearFlowpointStores(undefined, undefined);
|
|
103
|
-
expect(removed).toBe(3);
|
|
104
|
-
expect(deviceC.entries).toHaveLength(0);
|
|
105
|
-
expect(deviceD.entries).toHaveLength(0);
|
|
106
|
-
});
|
|
107
|
-
it("combines name filter with device scoping", () => {
|
|
108
|
-
const deviceE = getFlowpointStore("clear-test-device-e");
|
|
109
|
-
applyDrain(deviceE, {
|
|
110
|
-
contextId: "ctx-e",
|
|
111
|
-
entries: [
|
|
112
|
-
makeEntry(1, { name: "checkout" }),
|
|
113
|
-
makeEntry(2, { name: "onboarding" }),
|
|
114
|
-
makeEntry(3, { name: "checkout" }),
|
|
115
|
-
],
|
|
116
|
-
});
|
|
117
|
-
const deviceF = getFlowpointStore("clear-test-device-f");
|
|
118
|
-
applyDrain(deviceF, { contextId: "ctx-f", entries: [makeEntry(1, { name: "checkout" })] });
|
|
119
|
-
const removed = clearFlowpointStores("checkout", "clear-test-device-e");
|
|
120
|
-
expect(removed).toBe(2);
|
|
121
|
-
expect(deviceE.entries.map((e) => e.name)).toEqual(["onboarding"]);
|
|
122
|
-
// other device's "checkout" entries untouched since deviceName scoped the clear
|
|
123
|
-
expect(deviceF.entries).toHaveLength(1);
|
|
124
|
-
});
|
|
125
|
-
});
|
|
126
|
-
//# sourceMappingURL=flowpoints.test.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"flowpoints.test.js","sourceRoot":"","sources":["../../../src/__tests__/unit/flowpoints.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"flowpointsQuery.test.d.ts","sourceRoot":"","sources":["../../../src/__tests__/unit/flowpointsQuery.test.ts"],"names":[],"mappings":""}
|
|
@@ -1,91 +0,0 @@
|
|
|
1
|
-
import { describe, expect, it } from "@jest/globals";
|
|
2
|
-
import { formatMeta, matchesPoint, resolveLastRuns, filterFlowpoints, formatFlowpoints, } from "../../pro/flowpoints.js";
|
|
3
|
-
function e(seq, overrides = {}) {
|
|
4
|
-
return { seq, t: 1000 + seq, name: "add-to-cart", step: `s${seq}`, run: "r1", level: "info", ...overrides };
|
|
5
|
-
}
|
|
6
|
-
describe("formatMeta", () => {
|
|
7
|
-
it("passes strings through and stringifies objects", () => {
|
|
8
|
-
expect(formatMeta("start")).toBe("start");
|
|
9
|
-
expect(formatMeta({ removed: 3 })).toBe('{"removed":3}');
|
|
10
|
-
expect(formatMeta(undefined)).toBe("");
|
|
11
|
-
});
|
|
12
|
-
});
|
|
13
|
-
describe("matchesPoint", () => {
|
|
14
|
-
it("matches on step equality, level, and case-insensitive metaIncludes", () => {
|
|
15
|
-
const entry = e(1, { step: "failed", level: "error", meta: { reason: "Timeout" } });
|
|
16
|
-
expect(matchesPoint(entry, { step: "failed" })).toBe(true);
|
|
17
|
-
expect(matchesPoint(entry, { step: "other" })).toBe(false);
|
|
18
|
-
expect(matchesPoint(entry, { level: "error" })).toBe(true);
|
|
19
|
-
expect(matchesPoint(entry, { metaIncludes: "timeout" })).toBe(true);
|
|
20
|
-
expect(matchesPoint(entry, { step: "failed", level: "info" })).toBe(false);
|
|
21
|
-
});
|
|
22
|
-
});
|
|
23
|
-
describe("resolveLastRuns", () => {
|
|
24
|
-
it("returns the run of the chronologically last entry per flow", () => {
|
|
25
|
-
const entries = [
|
|
26
|
-
e(1, { run: "aaaa" }),
|
|
27
|
-
e(2, { run: "aaaa" }),
|
|
28
|
-
e(3, { run: "bbbb" }),
|
|
29
|
-
e(4, { name: "other", run: "cccc" }),
|
|
30
|
-
];
|
|
31
|
-
const last = resolveLastRuns(entries);
|
|
32
|
-
expect(last.get("add-to-cart")).toBe("bbbb");
|
|
33
|
-
expect(last.get("other")).toBe("cccc");
|
|
34
|
-
});
|
|
35
|
-
});
|
|
36
|
-
describe("filterFlowpoints", () => {
|
|
37
|
-
const entries = [
|
|
38
|
-
e(1, { run: "aaaa", step: "start" }),
|
|
39
|
-
e(2, { run: "aaaa", step: "failed", level: "error", meta: { reason: "timeout" } }),
|
|
40
|
-
e(3, { run: "bbbb", step: "start" }),
|
|
41
|
-
e(4, { run: "bbbb", step: "done" }),
|
|
42
|
-
e(5, { name: "checkout", run: "cccc", step: "start" }),
|
|
43
|
-
];
|
|
44
|
-
it("filters by name, step, and level", () => {
|
|
45
|
-
expect(filterFlowpoints(entries, { name: "checkout" })).toHaveLength(1);
|
|
46
|
-
expect(filterFlowpoints(entries, { step: "start" })).toHaveLength(3);
|
|
47
|
-
expect(filterFlowpoints(entries, { level: "error" })).toHaveLength(1);
|
|
48
|
-
});
|
|
49
|
-
it("filters by metaIncludes and since", () => {
|
|
50
|
-
expect(filterFlowpoints(entries, { metaIncludes: "TIMEOUT" })).toHaveLength(1);
|
|
51
|
-
expect(filterFlowpoints(entries, { since: 1003 })).toHaveLength(2);
|
|
52
|
-
});
|
|
53
|
-
it("resolves run: 'last' per flow and explicit run ids", () => {
|
|
54
|
-
const last = filterFlowpoints(entries, { run: "last" });
|
|
55
|
-
expect(last.map((x) => x.seq)).toEqual([3, 4, 5]);
|
|
56
|
-
expect(filterFlowpoints(entries, { run: "aaaa" })).toHaveLength(2);
|
|
57
|
-
});
|
|
58
|
-
it("applies limit keeping the newest entries", () => {
|
|
59
|
-
expect(filterFlowpoints(entries, { limit: 2 }).map((x) => x.seq)).toEqual([4, 5]);
|
|
60
|
-
});
|
|
61
|
-
});
|
|
62
|
-
describe("formatFlowpoints", () => {
|
|
63
|
-
it("formats a single-run flow with deltas, span, level prefix, and meta", () => {
|
|
64
|
-
const out = formatFlowpoints([
|
|
65
|
-
e(1, { step: "start", t: 1000 }),
|
|
66
|
-
e(2, { step: "cleared", t: 1006, meta: { removed: 3 } }),
|
|
67
|
-
e(3, { step: "failed", t: 1312, level: "error", meta: { reason: "timeout" } }),
|
|
68
|
-
]);
|
|
69
|
-
expect(out).toContain('Flow "add-to-cart" run r1 — 3 points (312ms span):');
|
|
70
|
-
expect(out).toContain("+0ms");
|
|
71
|
-
expect(out).toContain("+6ms");
|
|
72
|
-
expect(out).toContain('cleared {"removed":3}');
|
|
73
|
-
expect(out).toContain("[error] failed");
|
|
74
|
-
});
|
|
75
|
-
it("groups multiple runs and labels the latest", () => {
|
|
76
|
-
const out = formatFlowpoints([e(1, { run: "aaaa", t: 1000 }), e(2, { run: "bbbb", t: 2000 })]);
|
|
77
|
-
expect(out).toContain('Flow "add-to-cart" — 2 runs');
|
|
78
|
-
expect(out).toContain("run aaaa — 1 points");
|
|
79
|
-
expect(out).toContain("run bbbb (latest) — 1 points");
|
|
80
|
-
});
|
|
81
|
-
it("labels (latest) by last activity, not first appearance, under interleaved runs", () => {
|
|
82
|
-
const out = formatFlowpoints([
|
|
83
|
-
e(1, { run: "aaaa", t: 1000 }),
|
|
84
|
-
e(2, { run: "bbbb", t: 1500 }),
|
|
85
|
-
e(3, { run: "aaaa", t: 2000 }),
|
|
86
|
-
]);
|
|
87
|
-
expect(out).toContain("run aaaa (latest)");
|
|
88
|
-
expect(out).not.toContain("bbbb (latest)");
|
|
89
|
-
});
|
|
90
|
-
});
|
|
91
|
-
//# sourceMappingURL=flowpointsQuery.test.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"flowpointsQuery.test.js","sourceRoot":"","sources":["../../../src/__tests__/unit/flowpointsQuery.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"selectionPoller.test.d.ts","sourceRoot":"","sources":["../../../src/__tests__/unit/selectionPoller.test.ts"],"names":[],"mappings":""}
|
|
@@ -1,109 +0,0 @@
|
|
|
1
|
-
import { describe, it, expect, beforeEach, afterEach, jest } from "@jest/globals";
|
|
2
|
-
const executeInApp = jest.fn();
|
|
3
|
-
jest.unstable_mockModule("../../core/jsExecute.js", () => ({ executeInApp }));
|
|
4
|
-
const { pollOnce, startSelectionPoller, stopSelectionPoller, isSelectionPollerRunning } = await import("../../core/selectionPoller.js");
|
|
5
|
-
const { selectionBuffer } = await import("../../core/selectionBuffer.js");
|
|
6
|
-
function probeResult(overrides = {}) {
|
|
7
|
-
return {
|
|
8
|
-
success: true,
|
|
9
|
-
result: JSON.stringify({
|
|
10
|
-
active: true,
|
|
11
|
-
selected: true,
|
|
12
|
-
changed: true,
|
|
13
|
-
element: "Text",
|
|
14
|
-
path: "App > HomeScreen > Text",
|
|
15
|
-
hierarchy: ["App", "HomeScreen", "Text"],
|
|
16
|
-
frame: { left: 100, top: 200, width: 50, height: 20 },
|
|
17
|
-
style: { fontSize: 17 },
|
|
18
|
-
...overrides,
|
|
19
|
-
}),
|
|
20
|
-
};
|
|
21
|
-
}
|
|
22
|
-
function harvestResult() {
|
|
23
|
-
return {
|
|
24
|
-
success: true,
|
|
25
|
-
result: JSON.stringify({
|
|
26
|
-
stacks: [{ component: "Text", stack: "Error\n at anonymous (http://h:8081/b:1:1)" }],
|
|
27
|
-
}),
|
|
28
|
-
};
|
|
29
|
-
}
|
|
30
|
-
describe("selectionPoller", () => {
|
|
31
|
-
beforeEach(() => {
|
|
32
|
-
executeInApp.mockReset();
|
|
33
|
-
selectionBuffer.clear();
|
|
34
|
-
delete process.env.EXECBRO_DISABLE_SELECTION_POLL;
|
|
35
|
-
});
|
|
36
|
-
afterEach(() => {
|
|
37
|
-
stopSelectionPoller("iPhone Air");
|
|
38
|
-
});
|
|
39
|
-
it("buffers an entry when the probe reports a change", async () => {
|
|
40
|
-
executeInApp.mockResolvedValueOnce(probeResult()).mockResolvedValueOnce(harvestResult());
|
|
41
|
-
const buffered = await pollOnce("iPhone Air");
|
|
42
|
-
expect(buffered).toBe(true);
|
|
43
|
-
expect(selectionBuffer.size).toBe(1);
|
|
44
|
-
const entry = selectionBuffer.latest();
|
|
45
|
-
expect(entry.element).toBe("Text");
|
|
46
|
-
expect(entry.device).toBe("iPhone Air");
|
|
47
|
-
expect(entry.stacks.length).toBe(1);
|
|
48
|
-
});
|
|
49
|
-
it("harvests at the centre of the inspected frame", async () => {
|
|
50
|
-
executeInApp.mockResolvedValueOnce(probeResult()).mockResolvedValueOnce(harvestResult());
|
|
51
|
-
await pollOnce("iPhone Air");
|
|
52
|
-
// frame {left:100, top:200, width:50, height:20} -> centre (125, 210)
|
|
53
|
-
const harvestExpr = executeInApp.mock.calls[1][0];
|
|
54
|
-
expect(harvestExpr).toContain("125");
|
|
55
|
-
expect(harvestExpr).toContain("210");
|
|
56
|
-
});
|
|
57
|
-
it("does not harvest when nothing changed", async () => {
|
|
58
|
-
executeInApp.mockResolvedValueOnce({
|
|
59
|
-
success: true,
|
|
60
|
-
result: JSON.stringify({ active: true, selected: true, changed: false }),
|
|
61
|
-
});
|
|
62
|
-
const buffered = await pollOnce("iPhone Air");
|
|
63
|
-
expect(buffered).toBe(false);
|
|
64
|
-
expect(executeInApp.mock.calls.length).toBe(1);
|
|
65
|
-
expect(selectionBuffer.size).toBe(0);
|
|
66
|
-
});
|
|
67
|
-
it("does not harvest when the inspector is not mounted", async () => {
|
|
68
|
-
executeInApp.mockResolvedValueOnce({
|
|
69
|
-
success: true,
|
|
70
|
-
result: JSON.stringify({ active: false, selected: false, changed: false }),
|
|
71
|
-
});
|
|
72
|
-
expect(await pollOnce("iPhone Air")).toBe(false);
|
|
73
|
-
expect(executeInApp.mock.calls.length).toBe(1);
|
|
74
|
-
});
|
|
75
|
-
it("still buffers when the harvest fails, with empty stacks", async () => {
|
|
76
|
-
executeInApp
|
|
77
|
-
.mockResolvedValueOnce(probeResult())
|
|
78
|
-
.mockResolvedValueOnce({ success: false, error: "timeout" });
|
|
79
|
-
expect(await pollOnce("iPhone Air")).toBe(true);
|
|
80
|
-
expect(selectionBuffer.latest().stacks).toEqual([]);
|
|
81
|
-
});
|
|
82
|
-
it("buffers without harvesting when the frame is null", async () => {
|
|
83
|
-
executeInApp.mockResolvedValueOnce(probeResult({ frame: null }));
|
|
84
|
-
expect(await pollOnce("iPhone Air")).toBe(true);
|
|
85
|
-
expect(executeInApp.mock.calls.length).toBe(1);
|
|
86
|
-
expect(selectionBuffer.latest().stacks).toEqual([]);
|
|
87
|
-
});
|
|
88
|
-
it("swallows a failed probe without throwing", async () => {
|
|
89
|
-
executeInApp.mockResolvedValueOnce({ success: false, error: "disconnected" });
|
|
90
|
-
await expect(pollOnce("iPhone Air")).resolves.toBe(false);
|
|
91
|
-
});
|
|
92
|
-
it("swallows unparseable probe output", async () => {
|
|
93
|
-
executeInApp.mockResolvedValueOnce({ success: true, result: "not json" });
|
|
94
|
-
await expect(pollOnce("iPhone Air")).resolves.toBe(false);
|
|
95
|
-
});
|
|
96
|
-
it("does not start when disabled by env var", () => {
|
|
97
|
-
process.env.EXECBRO_DISABLE_SELECTION_POLL = "1";
|
|
98
|
-
startSelectionPoller("iPhone Air");
|
|
99
|
-
expect(isSelectionPollerRunning("iPhone Air")).toBe(false);
|
|
100
|
-
});
|
|
101
|
-
it("start is idempotent and stop halts it", () => {
|
|
102
|
-
startSelectionPoller("iPhone Air");
|
|
103
|
-
startSelectionPoller("iPhone Air");
|
|
104
|
-
expect(isSelectionPollerRunning("iPhone Air")).toBe(true);
|
|
105
|
-
stopSelectionPoller("iPhone Air");
|
|
106
|
-
expect(isSelectionPollerRunning("iPhone Air")).toBe(false);
|
|
107
|
-
});
|
|
108
|
-
});
|
|
109
|
-
//# sourceMappingURL=selectionPoller.test.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"selectionPoller.test.js","sourceRoot":"","sources":["../../../src/__tests__/unit/selectionPoller.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,EAAE,UAAU,EAAE,SAAS,EAAE,IAAI,EAAE,MAAM,eAAe,CAAC;AAElF,MAAM,YAAY,GAAG,IAAI,CAAC,EAAE,EAOzB,CAAC;AACJ,IAAI,CAAC,mBAAmB,CAAC,yBAAyB,EAAE,GAAG,EAAE,CAAC,CAAC,EAAE,YAAY,EAAE,CAAC,CAAC,CAAC;AAE9E,MAAM,EAAE,QAAQ,EAAE,oBAAoB,EAAE,mBAAmB,EAAE,wBAAwB,EAAE,GACnF,MAAM,MAAM,CAAC,+BAA+B,CAAC,CAAC;AAClD,MAAM,EAAE,eAAe,EAAE,GAAG,MAAM,MAAM,CAAC,+BAA+B,CAAC,CAAC;AAE1E,SAAS,WAAW,CAAC,YAAqC,EAAE;IACxD,OAAO;QACH,OAAO,EAAE,IAAI;QACb,MAAM,EAAE,IAAI,CAAC,SAAS,CAAC;YACnB,MAAM,EAAE,IAAI;YACZ,QAAQ,EAAE,IAAI;YACd,OAAO,EAAE,IAAI;YACb,OAAO,EAAE,MAAM;YACf,IAAI,EAAE,yBAAyB;YAC/B,SAAS,EAAE,CAAC,KAAK,EAAE,YAAY,EAAE,MAAM,CAAC;YACxC,KAAK,EAAE,EAAE,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,KAAK,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE;YACrD,KAAK,EAAE,EAAE,QAAQ,EAAE,EAAE,EAAE;YACvB,GAAG,SAAS;SACf,CAAC;KACL,CAAC;AACN,CAAC;AAED,SAAS,aAAa;IAClB,OAAO;QACH,OAAO,EAAE,IAAI;QACb,MAAM,EAAE,IAAI,CAAC,SAAS,CAAC;YACnB,MAAM,EAAE,CAAC,EAAE,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,+CAA+C,EAAE,CAAC;SAC1F,CAAC;KACL,CAAC;AACN,CAAC;AAED,QAAQ,CAAC,iBAAiB,EAAE,GAAG,EAAE;IAC7B,UAAU,CAAC,GAAG,EAAE;QACZ,YAAY,CAAC,SAAS,EAAE,CAAC;QACzB,eAAe,CAAC,KAAK,EAAE,CAAC;QACxB,OAAO,OAAO,CAAC,GAAG,CAAC,8BAA8B,CAAC;IACtD,CAAC,CAAC,CAAC;IAEH,SAAS,CAAC,GAAG,EAAE;QACX,mBAAmB,CAAC,YAAY,CAAC,CAAC;IACtC,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,kDAAkD,EAAE,KAAK,IAAI,EAAE;QAC9D,YAAY,CAAC,qBAAqB,CAAC,WAAW,EAAE,CAAC,CAAC,qBAAqB,CAAC,aAAa,EAAE,CAAC,CAAC;QAEzF,MAAM,QAAQ,GAAG,MAAM,QAAQ,CAAC,YAAY,CAAC,CAAC;QAE9C,MAAM,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC5B,MAAM,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QACrC,MAAM,KAAK,GAAG,eAAe,CAAC,MAAM,EAAG,CAAC;QACxC,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QACnC,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;QACxC,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACxC,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,+CAA+C,EAAE,KAAK,IAAI,EAAE;QAC3D,YAAY,CAAC,qBAAqB,CAAC,WAAW,EAAE,CAAC,CAAC,qBAAqB,CAAC,aAAa,EAAE,CAAC,CAAC;QACzF,MAAM,QAAQ,CAAC,YAAY,CAAC,CAAC;QAE7B,sEAAsE;QACtE,MAAM,WAAW,GAAG,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAW,CAAC;QAC5D,MAAM,CAAC,WAAW,CAAC,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;QACrC,MAAM,CAAC,WAAW,CAAC,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;IACzC,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,uCAAuC,EAAE,KAAK,IAAI,EAAE;QACnD,YAAY,CAAC,qBAAqB,CAAC;YAC/B,OAAO,EAAE,IAAI;YACb,MAAM,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC;SAC3E,CAAC,CAAC;QAEH,MAAM,QAAQ,GAAG,MAAM,QAAQ,CAAC,YAAY,CAAC,CAAC;QAE9C,MAAM,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAC7B,MAAM,CAAC,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAC/C,MAAM,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACzC,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,oDAAoD,EAAE,KAAK,IAAI,EAAE;QAChE,YAAY,CAAC,qBAAqB,CAAC;YAC/B,OAAO,EAAE,IAAI;YACb,MAAM,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC;SAC7E,CAAC,CAAC;QAEH,MAAM,CAAC,MAAM,QAAQ,CAAC,YAAY,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACjD,MAAM,CAAC,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACnD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,yDAAyD,EAAE,KAAK,IAAI,EAAE;QACrE,YAAY;aACP,qBAAqB,CAAC,WAAW,EAAE,CAAC;aACpC,qBAAqB,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC,CAAC;QAEjE,MAAM,CAAC,MAAM,QAAQ,CAAC,YAAY,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAChD,MAAM,CAAC,eAAe,CAAC,MAAM,EAAG,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;IACzD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,mDAAmD,EAAE,KAAK,IAAI,EAAE;QAC/D,YAAY,CAAC,qBAAqB,CAAC,WAAW,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;QAEjE,MAAM,CAAC,MAAM,QAAQ,CAAC,YAAY,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAChD,MAAM,CAAC,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAC/C,MAAM,CAAC,eAAe,CAAC,MAAM,EAAG,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;IACzD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,0CAA0C,EAAE,KAAK,IAAI,EAAE;QACtD,YAAY,CAAC,qBAAqB,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,cAAc,EAAE,CAAC,CAAC;QAC9E,MAAM,MAAM,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAC9D,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,mCAAmC,EAAE,KAAK,IAAI,EAAE;QAC/C,YAAY,CAAC,qBAAqB,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,UAAU,EAAE,CAAC,CAAC;QAC1E,MAAM,MAAM,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAC9D,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,yCAAyC,EAAE,GAAG,EAAE;QAC/C,OAAO,CAAC,GAAG,CAAC,8BAA8B,GAAG,GAAG,CAAC;QACjD,oBAAoB,CAAC,YAAY,CAAC,CAAC;QACnC,MAAM,CAAC,wBAAwB,CAAC,YAAY,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAC/D,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,uCAAuC,EAAE,GAAG,EAAE;QAC7C,oBAAoB,CAAC,YAAY,CAAC,CAAC;QACnC,oBAAoB,CAAC,YAAY,CAAC,CAAC;QACnC,MAAM,CAAC,wBAAwB,CAAC,YAAY,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC1D,mBAAmB,CAAC,YAAY,CAAC,CAAC;QAClC,MAAM,CAAC,wBAAwB,CAAC,YAAY,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAC/D,CAAC,CAAC,CAAC;AACP,CAAC,CAAC,CAAC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"verifyFlow.test.d.ts","sourceRoot":"","sources":["../../../src/__tests__/unit/verifyFlow.test.ts"],"names":[],"mappings":""}
|