@deeeed/metamask-harness 0.47.3 → 0.48.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 (148) hide show
  1. package/CHANGELOG.md +12 -0
  2. package/README.md +3 -2
  3. package/adapters/extension/lib/macos-focus.cjs +2 -2
  4. package/adapters/extension/live.sh +6 -8
  5. package/adapters/mobile/bridge-runtime/lib/bridge-errors.cjs +1 -0
  6. package/adapters/mobile/bridge-runtime/lib/cdp-broker.cjs +4 -0
  7. package/adapters/mobile/reload-app.mjs +92 -28
  8. package/adapters/shared/ensure-runner-deps.sh +6 -0
  9. package/dist/adapters/extension/runtime-decision.js +18 -1
  10. package/dist/adapters/extension/runtime.js +5 -5
  11. package/dist/adapters/extension/surface.js +1 -0
  12. package/dist/app-lifecycle.js +3 -1
  13. package/dist/command-contract.js +2 -0
  14. package/dist/commands/call.js +1 -8
  15. package/dist/commands/device-target.js +12 -3
  16. package/dist/commands/doctor.js +7 -5
  17. package/dist/commands/fixtures.js +1 -1
  18. package/dist/commands/launch/index.js +10 -0
  19. package/dist/commands/manifest.js +3 -1
  20. package/dist/commands/mobile-device-view.js +13 -3
  21. package/dist/commands/parse-args.js +2 -0
  22. package/dist/commands/run-engine.js +29 -4
  23. package/dist/commands/run.js +1 -1
  24. package/dist/commands/runtime-launch.js +10 -1
  25. package/dist/commands/status.js +8 -4
  26. package/dist/devices.js +31 -9
  27. package/dist/execution-provenance.js +8 -7
  28. package/dist/funding-execution-context.js +43 -13
  29. package/dist/heal-bounds.js +3 -3
  30. package/dist/live-adapter-contract.js +4 -0
  31. package/dist/manifest.js +2 -13
  32. package/dist/mm-harness-cli.js +2 -1
  33. package/dist/runner.js +14 -3
  34. package/docs/RECIPES.md +133 -22
  35. package/docs/RELEASE-QA-CAPABILITY-MAP.md +3 -2
  36. package/library/actions/core/perps/_controller.mjs +10 -0
  37. package/library/actions/core/perps/close_orders.mjs +13 -17
  38. package/library/actions/extension/assets/home-token-identity.mjs +30 -0
  39. package/library/actions/extension/assets/import_custom_token.mjs +61 -79
  40. package/library/actions/extension/assets/open_details.mjs +18 -7
  41. package/library/actions/extension/assets/read_details.mjs +61 -29
  42. package/library/actions/extension/assets/read_visible_state.mjs +4 -1
  43. package/library/actions/extension/assets/select_network_scope.mjs +16 -9
  44. package/library/actions/extension/assets/set_token_visibility.mjs +84 -17
  45. package/library/actions/extension/assets/verify_sorting.mjs +62 -14
  46. package/library/actions/extension/networks/add_custom.mjs +19 -17
  47. package/library/actions/extension/networks/custom_network.mjs +8 -3
  48. package/library/actions/extension/networks/read_visible_state.mjs +1 -0
  49. package/library/actions/extension/performance/_navigation-memory.mjs +35 -6
  50. package/library/actions/extension/performance/compare_idle_navigation_memory.mjs +3 -2
  51. package/library/actions/extension/performance/measure_detached_dom.mjs +3 -2
  52. package/library/actions/extension/performance/measure_navigation_memory.mjs +3 -2
  53. package/library/actions/extension/perps/assert_visible_consistency.mjs +9 -4
  54. package/library/actions/extension/perps/close_visible_position.mjs +3 -3
  55. package/library/actions/extension/perps/edit_margin.mjs +1 -1
  56. package/library/actions/extension/perps/open_balance_action.mjs +16 -7
  57. package/library/actions/extension/perps/perps.mjs +150 -45
  58. package/library/actions/extension/perps/read_funds_confirmation.mjs +8 -0
  59. package/library/actions/extension/perps/read_snapshot.mjs +2 -1
  60. package/library/actions/extension/perps/read_visible_state.mjs +10 -6
  61. package/library/actions/extension/perps/search_markets.mjs +7 -2
  62. package/library/actions/extension/perps/select_activity_filter.mjs +1 -1
  63. package/library/actions/extension/perps/select_market_filter.mjs +74 -45
  64. package/library/actions/extension/perps/set_market_favorite.mjs +6 -3
  65. package/library/actions/extension/perps/state.mjs +1 -0
  66. package/library/actions/extension/perps/update_position_tpsl.mjs +1 -1
  67. package/library/actions/extension/perps/visible-mutation-identity.mjs +4 -2
  68. package/library/actions/extension/platform/cdp.mjs +23 -142
  69. package/library/actions/extension/swap_bridge/quote-state.mjs +54 -0
  70. package/library/actions/extension/swap_bridge/read_visible_state.mjs +4 -1
  71. package/library/actions/extension/swap_bridge/select_assets.mjs +11 -1
  72. package/library/actions/extension/swap_bridge/set_amount.mjs +10 -8
  73. package/library/actions/extension/swap_bridge/set_max_amount.mjs +17 -18
  74. package/library/actions/extension/swap_bridge/set_slippage.mjs +0 -9
  75. package/library/actions/extension/ui/navigate.mjs +58 -14
  76. package/library/actions/extension/wallet/lock.mjs +2 -1
  77. package/library/actions/mobile/assets/import_custom_token.mjs +1 -0
  78. package/library/actions/mobile/assets/read_visible_state.mjs +3 -1
  79. package/library/actions/mobile/assets/set_token_visibility.mjs +13 -9
  80. package/library/actions/mobile/networks/network-management.mjs +22 -15
  81. package/library/actions/mobile/networks/remove_custom.mjs +6 -2
  82. package/library/actions/mobile/perps/perps.mjs +3 -0
  83. package/library/actions/mobile/perps/read-visible-state-loop.mjs +1 -0
  84. package/library/actions/mobile/perps/set_market_favorite.mjs +15 -19
  85. package/library/actions/mobile/platform/native-session.mjs +26 -17
  86. package/library/actions/mobile/platform/observe-ui.mjs +2 -2
  87. package/library/actions/mobile/ui/navigate.mjs +1 -1
  88. package/library/actions/shared/perps/visible-state.mjs +14 -3
  89. package/library/manifests/core.action-manifest.json +14 -2
  90. package/library/manifests/extension.action-manifest.json +49 -16
  91. package/library/manifests/mobile.action-manifest.json +8 -7
  92. package/library/recipes/core/perps/smoke.recipe.json +23 -0
  93. package/library/recipes/core/perps/snapshot.recipe.json +26 -1
  94. package/library/recipes/extension/assets/release-custom-network-token-persistence.recipe.json +25 -8
  95. package/library/recipes/extension/performance/navigation-memory-suite.recipe.json +219 -0
  96. package/library/recipes/extension/performance/navigation-memory.recipe.json +61 -156
  97. package/library/recipes/extension/wallet/smoke.recipe.json +17 -8
  98. package/library/recipes/mobile/app/lifecycle.android-smoke.recipe.json +23 -4
  99. package/library/recipes/mobile/networks/release-custom-network-persistence.recipe.json +31 -6
  100. package/library/recipes/mobile/networks/release-multichain-visibility.recipe.json +5 -4
  101. package/library/recipes/mobile/wallet/smoke.recipe.json +17 -8
  102. package/library/recipes/{assets → shared/assets}/release-token-address-import.recipe.json +7 -0
  103. package/library/recipes/{assets → shared/assets}/release-token-details.recipe.json +2 -2
  104. package/library/recipes/shared/assets/release-token-hide-readd.recipe.json +91 -0
  105. package/library/recipes/{assets → shared/assets}/release-token-persistence.recipe.json +3 -0
  106. package/library/recipes/{assets → shared/assets}/release-token-search-import.recipe.json +4 -1
  107. package/library/recipes/{assets → shared/assets}/release-token-sorting.recipe.json +13 -2
  108. package/library/recipes/{swap-bridge → shared/swap-bridge}/release-quote.recipe.json +29 -3
  109. package/package.json +3 -3
  110. package/site/assets/help-recipes.json +63 -23
  111. package/library/recipes/assets/release-token-hide-readd.recipe.json +0 -57
  112. package/library/recipes/core/perps/clean-market-testnet.recipe.json +0 -44
  113. package/library/recipes/core/perps/order-lifecycle.recipe.json +0 -82
  114. package/library/recipes/core/perps/read-markets.recipe.json +0 -36
  115. package/library/recipes/core/perps/trading-lifecycle.recipe.json +0 -80
  116. package/library/recipes/extension/perps/release-activity-filters.recipe.json +0 -51
  117. package/library/recipes/extension/perps/release-funds-flows.recipe.json +0 -76
  118. package/library/recipes/extension/perps/release-live-limit-order.recipe.json +0 -109
  119. package/library/recipes/extension/perps/release-market-filters.recipe.json +0 -97
  120. package/library/recipes/extension/perps/release-order-entry.recipe.json +0 -158
  121. package/library/recipes/extension/perps/release-order-validation.recipe.json +0 -259
  122. package/library/recipes/extension/perps/release-visible-consistency.recipe.json +0 -47
  123. package/library/recipes/extension/perps/source-dev-snapshot-consistency.recipe.json +0 -76
  124. package/library/recipes/mobile/perps/chase-assert-running.recipe.json +0 -110
  125. package/library/recipes/mobile/perps/chase-place.recipe.json +0 -145
  126. package/library/recipes/mobile/perps/chase-terminate.recipe.json +0 -98
  127. package/library/recipes/mobile/perps/performance.recipe.json +0 -722
  128. package/library/recipes/mobile/perps/pro-order-setup.recipe.json +0 -111
  129. package/library/recipes/mobile/perps/pro-order-start-state.recipe.json +0 -53
  130. package/library/recipes/mobile/perps/scale-assert-orders.recipe.json +0 -126
  131. package/library/recipes/mobile/perps/scale-place.recipe.json +0 -186
  132. package/library/recipes/mobile/perps/twap-assert-active.recipe.json +0 -97
  133. package/library/recipes/mobile/perps/twap-place.recipe.json +0 -146
  134. package/library/recipes/mobile/runner/action-validation.recipe.json +0 -336
  135. package/library/recipes/perps/clean-market-testnet.recipe.json +0 -49
  136. package/library/recipes/perps/lifecycle.recipe.json +0 -144
  137. package/library/recipes/perps/release-live-market-order.recipe.json +0 -139
  138. package/library/recipes/perps/release-watchlist.recipe.json +0 -111
  139. package/library/recipes/swap-bridge/release-max-quote.recipe.json +0 -72
  140. /package/library/recipes/{assets → shared/assets}/release-token-list.recipe.json +0 -0
  141. /package/library/recipes/{perps → shared/perps}/release-market-details.recipe.json +0 -0
  142. /package/library/recipes/{perps → shared/perps}/release-market-search.recipe.json +0 -0
  143. /package/library/recipes/{swap-bridge → shared/swap-bridge}/release-custom-slippage.recipe.json +0 -0
  144. /package/library/recipes/{swap-bridge → shared/swap-bridge}/release-live-max-swap.recipe.json +0 -0
  145. /package/library/recipes/{swap-bridge → shared/swap-bridge}/release-live-swap.recipe.json +0 -0
  146. /package/library/recipes/{swap-bridge → shared/swap-bridge}/release-surface.recipe.json +0 -0
  147. /package/library/recipes/{wallet → shared/wallet}/import.recipe.json +0 -0
  148. /package/library/recipes/{wallet → shared/wallet}/reset-import.recipe.json +0 -0
@@ -1,145 +0,0 @@
1
- {
2
- "$schema": "https://farmslot.io/schemas/recipe-v1.schema.json",
3
- "title": "Place a Mobile Pro Chase order",
4
- "description": "Places one parameterized Chase order through visible Mobile Pro controls, cleaning only the testnet path.",
5
- "paramsSchema": {
6
- "type": "object",
7
- "additionalProperties": false,
8
- "properties": {
9
- "account": {
10
- "type": "string",
11
- "default": "",
12
- "description": "Optional exact fixture account name, such as Trading or dev1. Omit it to keep the currently selected account."
13
- },
14
- "provider": { "type": "string", "default": "hyperliquid" },
15
- "network": {
16
- "type": "string",
17
- "enum": ["testnet", "mainnet"],
18
- "default": "testnet",
19
- "description": "Mainnet placement requires an explicit user request."
20
- },
21
- "market": {
22
- "type": "string",
23
- "default": "BTC"
24
- },
25
- "side": {
26
- "type": "string",
27
- "enum": [
28
- "long",
29
- "short"
30
- ],
31
- "default": "long"
32
- },
33
- "notional": {
34
- "type": "string",
35
- "default": "100"
36
- },
37
- "max_distance": {
38
- "type": "string",
39
- "default": "5000",
40
- "description": "USD guard; keep this wider than expected movement during a persistence dwell."
41
- }
42
- }
43
- },
44
- "workflow": {
45
- "entry": "prepare",
46
- "nodes": {
47
- "prepare": {
48
- "action": "call",
49
- "ref": "perps.pro-order-setup",
50
- "params": {
51
- "account": "{{params.account}}",
52
- "provider": "{{params.provider}}",
53
- "network": "{{params.network}}",
54
- "market": "{{params.market}}",
55
- "side": "{{params.side}}"
56
- },
57
- "intent": "Prepare the requested Pro order form and Advanced picker.",
58
- "next": "position-chase"
59
- },
60
- "position-chase": {
61
- "action": "ui.scroll",
62
- "test_id": "perps-order-type-chase",
63
- "scroll_into_view": true,
64
- "intent": "Expose the Chase option for visible selection.",
65
- "next": "wait-chase"
66
- },
67
- "wait-chase": {
68
- "action": "ui.wait_for",
69
- "test_id": "perps-order-type-chase",
70
- "expected": "visible",
71
- "timeout_ms": 10000,
72
- "intent": "Fail closed unless Chase is visibly offered.",
73
- "next": "select-chase"
74
- },
75
- "select-chase": {
76
- "action": "ui.press",
77
- "test_id": "perps-order-type-chase",
78
- "intent": "Select Chase.",
79
- "next": "position-size"
80
- },
81
- "position-size": {
82
- "action": "ui.scroll",
83
- "test_id": "perps-pro-order-form-size-card",
84
- "scroll_into_view": true,
85
- "intent": "Expose the Chase size input for visible entry.",
86
- "next": "wait-size"
87
- },
88
- "wait-size": {
89
- "action": "ui.wait_for",
90
- "test_id": "perps-pro-order-form-size-card",
91
- "expected": "visible",
92
- "timeout_ms": 10000,
93
- "intent": "Confirm the Chase size card is visible.",
94
- "next": "set-size"
95
- },
96
- "set-size": {
97
- "action": "ui.set_input",
98
- "test_id": "perps-pro-order-form-size-input",
99
- "value": "{{params.notional}}",
100
- "intent": "Enter the requested USD notional.",
101
- "next": "set-distance"
102
- },
103
- "set-distance": {
104
- "action": "ui.set_input",
105
- "test_id": "perps-pro-chase-max-distance-field",
106
- "value": "{{params.max_distance}}",
107
- "intent": "Bound Chase repricing to the requested distance.",
108
- "next": "position-submit"
109
- },
110
- "position-submit": {
111
- "action": "ui.scroll",
112
- "test_id": "perps-pro-order-form-summary-fees",
113
- "scroll_into_view": true,
114
- "intent": "Expose the final Chase fee row directly above submission.",
115
- "next": "wait-submit"
116
- },
117
- "wait-submit": {
118
- "action": "ui.wait_for",
119
- "test_id": "perps-pro-order-form-place-order",
120
- "expected": "visible",
121
- "timeout_ms": 10000,
122
- "intent": "Confirm the Chase order can be submitted.",
123
- "next": "submit"
124
- },
125
- "submit": {
126
- "action": "ui.press",
127
- "test_id": "perps-pro-order-form-place-order",
128
- "intent": "Start the Chase session on the selected provider and network.",
129
- "next": "wait-active-count"
130
- },
131
- "wait-active-count": {
132
- "action": "ui.wait_for",
133
- "test_id": "perps-pro-chase-active-count-1",
134
- "expected": "present",
135
- "timeout_ms": 20000,
136
- "intent": "Require the form to report one live Chase session after submission.",
137
- "next": "done"
138
- },
139
- "done": {
140
- "action": "end",
141
- "status": "pass"
142
- }
143
- }
144
- }
145
- }
@@ -1,98 +0,0 @@
1
- {
2
- "$schema": "https://farmslot.io/schemas/recipe-v1.schema.json",
3
- "title": "Terminate a Mobile Pro Chase order",
4
- "description": "Terminates the selected market's primary active Chase session and proves it leaves the active list.",
5
- "paramsSchema": {
6
- "type": "object",
7
- "additionalProperties": false,
8
- "properties": {
9
- "account": {
10
- "type": "string",
11
- "default": "",
12
- "description": "Optional exact fixture account name, such as Trading or dev1. Omit it to keep the currently selected account."
13
- },
14
- "provider": { "type": "string", "default": "hyperliquid" },
15
- "network": {
16
- "type": "string",
17
- "enum": ["testnet", "mainnet"],
18
- "default": "testnet",
19
- "description": "Mainnet termination requires an explicit user request."
20
- },
21
- "market": {
22
- "type": "string",
23
- "default": "BTC"
24
- }
25
- }
26
- },
27
- "workflow": {
28
- "entry": "prepare",
29
- "nodes": {
30
- "prepare": {
31
- "action": "call",
32
- "ref": "perps.pro-order-start-state",
33
- "params": {
34
- "account": "{{params.account}}",
35
- "provider": "{{params.provider}}",
36
- "network": "{{params.network}}",
37
- "market": "{{params.market}}"
38
- },
39
- "intent": "Reach and prove the requested Pro market without changing Chase orders.",
40
- "next": "position-tab"
41
- },
42
- "position-tab": {
43
- "action": "ui.scroll",
44
- "test_id": "perps-pro-market-positions-panel-tab-chase",
45
- "scroll_into_view": true,
46
- "intent": "Expose the Chase tab for visible termination.",
47
- "next": "wait-tab"
48
- },
49
- "wait-tab": {
50
- "action": "ui.wait_for",
51
- "test_id": "perps-pro-market-positions-panel-tab-chase",
52
- "expected": "visible",
53
- "timeout_ms": 15000,
54
- "intent": "Require the Chase tab to be visible before termination.",
55
- "next": "open-tab"
56
- },
57
- "open-tab": {
58
- "action": "ui.press",
59
- "test_id": "perps-pro-market-positions-panel-tab-chase",
60
- "intent": "Open Chase monitoring before termination.",
61
- "next": "position-terminate"
62
- },
63
- "position-terminate": {
64
- "action": "ui.scroll",
65
- "test_id": "perps-chase-terminate-active-{{params.market}}",
66
- "scroll_into_view": true,
67
- "intent": "Expose the active Chase termination control.",
68
- "next": "wait-terminate"
69
- },
70
- "wait-terminate": {
71
- "action": "ui.wait_for",
72
- "test_id": "perps-chase-terminate-active-{{params.market}}",
73
- "expected": "visible",
74
- "timeout_ms": 10000,
75
- "intent": "Require a visible active Chase session to terminate.",
76
- "next": "terminate"
77
- },
78
- "terminate": {
79
- "action": "ui.press",
80
- "test_id": "perps-chase-terminate-active-{{params.market}}",
81
- "intent": "Terminate the active Chase session.",
82
- "next": "wait-removed"
83
- },
84
- "wait-removed": {
85
- "action": "ui.wait_for",
86
- "test_id": "perps-chase-status-active-{{params.market}}",
87
- "expected": "absent",
88
- "timeout_ms": 20000,
89
- "intent": "Require the terminated Chase session to leave the active list.",
90
- "next": "done"
91
- },
92
- "done": {
93
- "action": "end",
94
- "status": "pass"
95
- }
96
- }
97
- }
98
- }