@deeeed/metamask-harness 0.47.4 → 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 (146) hide show
  1. package/CHANGELOG.md +6 -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/shared/ensure-runner-deps.sh +6 -0
  7. package/dist/adapters/extension/runtime-decision.js +18 -1
  8. package/dist/adapters/extension/runtime.js +5 -5
  9. package/dist/adapters/extension/surface.js +1 -0
  10. package/dist/app-lifecycle.js +3 -1
  11. package/dist/command-contract.js +2 -0
  12. package/dist/commands/call.js +1 -8
  13. package/dist/commands/device-target.js +12 -3
  14. package/dist/commands/doctor.js +7 -5
  15. package/dist/commands/fixtures.js +1 -1
  16. package/dist/commands/launch/index.js +10 -0
  17. package/dist/commands/manifest.js +3 -1
  18. package/dist/commands/mobile-device-view.js +13 -3
  19. package/dist/commands/parse-args.js +2 -0
  20. package/dist/commands/run-engine.js +29 -4
  21. package/dist/commands/run.js +1 -1
  22. package/dist/commands/runtime-launch.js +10 -1
  23. package/dist/commands/status.js +8 -4
  24. package/dist/devices.js +31 -9
  25. package/dist/execution-provenance.js +8 -7
  26. package/dist/funding-execution-context.js +43 -13
  27. package/dist/heal-bounds.js +3 -3
  28. package/dist/live-adapter-contract.js +4 -0
  29. package/dist/manifest.js +2 -13
  30. package/dist/mm-harness-cli.js +2 -1
  31. package/dist/runner.js +14 -3
  32. package/docs/RECIPES.md +133 -22
  33. package/docs/RELEASE-QA-CAPABILITY-MAP.md +3 -2
  34. package/library/actions/core/perps/_controller.mjs +10 -0
  35. package/library/actions/core/perps/close_orders.mjs +13 -17
  36. package/library/actions/extension/assets/home-token-identity.mjs +30 -0
  37. package/library/actions/extension/assets/import_custom_token.mjs +61 -79
  38. package/library/actions/extension/assets/open_details.mjs +18 -7
  39. package/library/actions/extension/assets/read_details.mjs +61 -29
  40. package/library/actions/extension/assets/read_visible_state.mjs +4 -1
  41. package/library/actions/extension/assets/select_network_scope.mjs +16 -9
  42. package/library/actions/extension/assets/set_token_visibility.mjs +84 -17
  43. package/library/actions/extension/assets/verify_sorting.mjs +62 -14
  44. package/library/actions/extension/networks/add_custom.mjs +19 -17
  45. package/library/actions/extension/networks/custom_network.mjs +8 -3
  46. package/library/actions/extension/networks/read_visible_state.mjs +1 -0
  47. package/library/actions/extension/performance/_navigation-memory.mjs +35 -6
  48. package/library/actions/extension/performance/compare_idle_navigation_memory.mjs +3 -2
  49. package/library/actions/extension/performance/measure_detached_dom.mjs +3 -2
  50. package/library/actions/extension/performance/measure_navigation_memory.mjs +3 -2
  51. package/library/actions/extension/perps/assert_visible_consistency.mjs +9 -4
  52. package/library/actions/extension/perps/close_visible_position.mjs +3 -3
  53. package/library/actions/extension/perps/edit_margin.mjs +1 -1
  54. package/library/actions/extension/perps/open_balance_action.mjs +16 -7
  55. package/library/actions/extension/perps/perps.mjs +150 -45
  56. package/library/actions/extension/perps/read_funds_confirmation.mjs +8 -0
  57. package/library/actions/extension/perps/read_snapshot.mjs +2 -1
  58. package/library/actions/extension/perps/read_visible_state.mjs +10 -6
  59. package/library/actions/extension/perps/search_markets.mjs +7 -2
  60. package/library/actions/extension/perps/select_activity_filter.mjs +1 -1
  61. package/library/actions/extension/perps/select_market_filter.mjs +74 -45
  62. package/library/actions/extension/perps/set_market_favorite.mjs +6 -3
  63. package/library/actions/extension/perps/state.mjs +1 -0
  64. package/library/actions/extension/perps/update_position_tpsl.mjs +1 -1
  65. package/library/actions/extension/perps/visible-mutation-identity.mjs +4 -2
  66. package/library/actions/extension/platform/cdp.mjs +23 -142
  67. package/library/actions/extension/swap_bridge/quote-state.mjs +54 -0
  68. package/library/actions/extension/swap_bridge/read_visible_state.mjs +4 -1
  69. package/library/actions/extension/swap_bridge/select_assets.mjs +11 -1
  70. package/library/actions/extension/swap_bridge/set_amount.mjs +10 -8
  71. package/library/actions/extension/swap_bridge/set_max_amount.mjs +17 -18
  72. package/library/actions/extension/swap_bridge/set_slippage.mjs +0 -9
  73. package/library/actions/extension/ui/navigate.mjs +58 -14
  74. package/library/actions/extension/wallet/lock.mjs +2 -1
  75. package/library/actions/mobile/assets/import_custom_token.mjs +1 -0
  76. package/library/actions/mobile/assets/read_visible_state.mjs +3 -1
  77. package/library/actions/mobile/assets/set_token_visibility.mjs +13 -9
  78. package/library/actions/mobile/networks/network-management.mjs +22 -15
  79. package/library/actions/mobile/networks/remove_custom.mjs +6 -2
  80. package/library/actions/mobile/perps/perps.mjs +3 -0
  81. package/library/actions/mobile/perps/read-visible-state-loop.mjs +1 -0
  82. package/library/actions/mobile/perps/set_market_favorite.mjs +15 -19
  83. package/library/actions/mobile/platform/native-session.mjs +26 -17
  84. package/library/actions/mobile/platform/observe-ui.mjs +2 -2
  85. package/library/actions/mobile/ui/navigate.mjs +1 -1
  86. package/library/actions/shared/perps/visible-state.mjs +14 -3
  87. package/library/manifests/core.action-manifest.json +14 -2
  88. package/library/manifests/extension.action-manifest.json +49 -16
  89. package/library/manifests/mobile.action-manifest.json +8 -7
  90. package/library/recipes/core/perps/smoke.recipe.json +23 -0
  91. package/library/recipes/core/perps/snapshot.recipe.json +26 -1
  92. package/library/recipes/extension/assets/release-custom-network-token-persistence.recipe.json +25 -8
  93. package/library/recipes/extension/performance/navigation-memory-suite.recipe.json +219 -0
  94. package/library/recipes/extension/performance/navigation-memory.recipe.json +61 -156
  95. package/library/recipes/extension/wallet/smoke.recipe.json +17 -8
  96. package/library/recipes/mobile/app/lifecycle.android-smoke.recipe.json +23 -4
  97. package/library/recipes/mobile/networks/release-custom-network-persistence.recipe.json +31 -6
  98. package/library/recipes/mobile/networks/release-multichain-visibility.recipe.json +5 -4
  99. package/library/recipes/mobile/wallet/smoke.recipe.json +17 -8
  100. package/library/recipes/{assets → shared/assets}/release-token-address-import.recipe.json +7 -0
  101. package/library/recipes/{assets → shared/assets}/release-token-details.recipe.json +2 -2
  102. package/library/recipes/shared/assets/release-token-hide-readd.recipe.json +91 -0
  103. package/library/recipes/{assets → shared/assets}/release-token-persistence.recipe.json +3 -0
  104. package/library/recipes/{assets → shared/assets}/release-token-search-import.recipe.json +4 -1
  105. package/library/recipes/{assets → shared/assets}/release-token-sorting.recipe.json +13 -2
  106. package/library/recipes/{swap-bridge → shared/swap-bridge}/release-quote.recipe.json +29 -3
  107. package/package.json +3 -3
  108. package/site/assets/help-recipes.json +63 -23
  109. package/library/recipes/assets/release-token-hide-readd.recipe.json +0 -57
  110. package/library/recipes/core/perps/clean-market-testnet.recipe.json +0 -44
  111. package/library/recipes/core/perps/order-lifecycle.recipe.json +0 -82
  112. package/library/recipes/core/perps/read-markets.recipe.json +0 -36
  113. package/library/recipes/core/perps/trading-lifecycle.recipe.json +0 -80
  114. package/library/recipes/extension/perps/release-activity-filters.recipe.json +0 -51
  115. package/library/recipes/extension/perps/release-funds-flows.recipe.json +0 -76
  116. package/library/recipes/extension/perps/release-live-limit-order.recipe.json +0 -109
  117. package/library/recipes/extension/perps/release-market-filters.recipe.json +0 -97
  118. package/library/recipes/extension/perps/release-order-entry.recipe.json +0 -158
  119. package/library/recipes/extension/perps/release-order-validation.recipe.json +0 -259
  120. package/library/recipes/extension/perps/release-visible-consistency.recipe.json +0 -47
  121. package/library/recipes/extension/perps/source-dev-snapshot-consistency.recipe.json +0 -76
  122. package/library/recipes/mobile/perps/chase-assert-running.recipe.json +0 -110
  123. package/library/recipes/mobile/perps/chase-place.recipe.json +0 -145
  124. package/library/recipes/mobile/perps/chase-terminate.recipe.json +0 -98
  125. package/library/recipes/mobile/perps/performance.recipe.json +0 -722
  126. package/library/recipes/mobile/perps/pro-order-setup.recipe.json +0 -111
  127. package/library/recipes/mobile/perps/pro-order-start-state.recipe.json +0 -53
  128. package/library/recipes/mobile/perps/scale-assert-orders.recipe.json +0 -126
  129. package/library/recipes/mobile/perps/scale-place.recipe.json +0 -186
  130. package/library/recipes/mobile/perps/twap-assert-active.recipe.json +0 -97
  131. package/library/recipes/mobile/perps/twap-place.recipe.json +0 -146
  132. package/library/recipes/mobile/runner/action-validation.recipe.json +0 -336
  133. package/library/recipes/perps/clean-market-testnet.recipe.json +0 -49
  134. package/library/recipes/perps/lifecycle.recipe.json +0 -144
  135. package/library/recipes/perps/release-live-market-order.recipe.json +0 -139
  136. package/library/recipes/perps/release-watchlist.recipe.json +0 -111
  137. package/library/recipes/swap-bridge/release-max-quote.recipe.json +0 -72
  138. /package/library/recipes/{assets → shared/assets}/release-token-list.recipe.json +0 -0
  139. /package/library/recipes/{perps → shared/perps}/release-market-details.recipe.json +0 -0
  140. /package/library/recipes/{perps → shared/perps}/release-market-search.recipe.json +0 -0
  141. /package/library/recipes/{swap-bridge → shared/swap-bridge}/release-custom-slippage.recipe.json +0 -0
  142. /package/library/recipes/{swap-bridge → shared/swap-bridge}/release-live-max-swap.recipe.json +0 -0
  143. /package/library/recipes/{swap-bridge → shared/swap-bridge}/release-live-swap.recipe.json +0 -0
  144. /package/library/recipes/{swap-bridge → shared/swap-bridge}/release-surface.recipe.json +0 -0
  145. /package/library/recipes/{wallet → shared/wallet}/import.recipe.json +0 -0
  146. /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
- }