Commit 1f92780
authored
chore(agentic): improve mobile recipe validation and perps testability (#28974)
## **Description**
This PR is limited to mobile app and mobile agentic validation
improvements discovered while validating perps review flows on `mm-4`.
Scope of this PR:
- stabilize Perps modify-action selectors so live validation no longer
depends on the accidental `undefined-*` selector path
- tighten the mobile agentic recipe contract so invalid
`wait_for.timeout` usage fails fast
- make `validate-recipe.js` schema-validate before execution
- copy screenshots into the passed artifact directory so validation
proof stays with the run artifacts
- document the canonical mobile agentic timing fields in
`scripts/perps/agentic/README.md`
Compatibility note:
- default recipe artifact behavior is unchanged
- only explicit `--artifacts-dir` runs now treat the provided path as
the artifact root, so screenshots and run artifacts stay together under
the requested directory
Out of scope for this PR:
- `.agents/skills/fs-cook`
- `TRACKER.md`
- `docs/readme/fs-cook*.md`
- worker-template integration
- wrapper skill work (`fs-review`, `fs-fixbug`)
- Codex-vs-Claude recipe delegation work
## **Changelog**
CHANGELOG entry: null
## **Related issues**
Fixes:
- none
## **Manual testing steps**
```gherkin
Feature: perps modify-action testability and mobile agentic validation contract
Scenario: stable modify action selectors are available on the live BTC market details screen
Given mm-4 is running MetaMask Mobile on PerpsMarketDetails for BTC
When the user presses the modify button for the open position
Then the modify action sheet selector appears
And the stable flip option selector appears
And the old undefined-derived selector is no longer needed
Scenario: mobile agentic validation rejects invalid wait timing fields
Given a recipe uses wait_for with timeout instead of timeout_ms
When validate-flow-schema.js runs
Then the recipe fails with an explicit schema error
Scenario: screenshots are copied into the requested artifact directory
Given validate-recipe.js runs a recipe with a screenshot step
When the recipe passes
Then the screenshot file is copied into the passed artifacts directory
```
## **Screenshots/Recordings**
### **Before**
- Live validation had to rely on `undefined-flip_position`
- Successful screenshots lived outside the requested artifact root
### **After**
- Live selector probe on `mm-4` confirms:
- `perps-market-details-modify-button`
- `perps-market-details-modify-action-sheet`
- `perps-market-details-modify-action-sheet-flip_position`
- Successful screenshots copy into the requested artifacts directory
## **Pre-merge author checklist**
- [x] I've followed [MetaMask Contributor
Docs](https://github.com/MetaMask/contributor-docs) and [MetaMask Mobile
Coding
Standards](https://github.com/MetaMask/metamask-mobile/blob/main/.github/guidelines/CODING_GUIDELINES.md).
- [x] I've completed the PR template to the best of my ability
- [x] I've included tests if applicable
- [ ] I've documented my code using [JSDoc](https://jsdoc.app/) format
if applicable
- [ ] I've applied the right labels on the PR (see [labeling
guidelines](https://github.com/MetaMask/metamask-mobile/blob/main/.github/guidelines/LABELING_GUIDELINES.md)).
Not required for external contributors.
#### Performance checks (if applicable)
- [ ] I've tested on Android
- Ideally on a mid-range device; emulator is acceptable
- [ ] I've tested with a power user scenario
- Use these [power-user
SRPs](https://consensyssoftware.atlassian.net/wiki/spaces/TL1/pages/edit-v2/401401446401?draftShareId=9d77e1e1-4bdc-4be1-9ebb-ccd916988d93)
to import wallets with many accounts and tokens
- [ ] I've instrumented key operations with Sentry traces for production
performance metrics
- See [`trace()`](/app/util/trace.ts) for usage and
[`addToken`](/app/components/Views/AddAsset/components/AddCustomToken/AddCustomToken.tsx#L274)
for an example
For performance guidelines and tooling, see the [Performance
Guide](https://consensyssoftware.atlassian.net/wiki/spaces/TL1/pages/400085549067/Performance+Guide+for+Engineers).
## **Pre-merge reviewer checklist**
- [ ] I've manually tested the PR (e.g. pull and build branch, run the
app, test code being changed).
- [ ] I confirm that this PR addresses all acceptance criteria described
in the ticket it closes and includes the necessary testing evidence such
as recordings and or screenshots.1 parent 2e4dab1 commit 1f92780
10 files changed
Lines changed: 76 additions & 5 deletions
File tree
- app/components/UI/Perps
- Views
- PerpsMarketDetailsView
- PerpsOrderBookView
- PerpsSelectModifyActionView
- components/PerpsModifyActionSheet
- scripts/perps/agentic
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
700 | 700 | | |
701 | 701 | | |
702 | 702 | | |
| 703 | + | |
703 | 704 | | |
704 | 705 | | |
705 | 706 | | |
| |||
762 | 763 | | |
763 | 764 | | |
764 | 765 | | |
| 766 | + | |
| 767 | + | |
| 768 | + | |
| 769 | + | |
| 770 | + | |
| 771 | + | |
| 772 | + | |
| 773 | + | |
| 774 | + | |
| 775 | + | |
| 776 | + | |
765 | 777 | | |
766 | 778 | | |
767 | 779 | | |
| |||
Lines changed: 1 addition & 0 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
1640 | 1640 | | |
1641 | 1641 | | |
1642 | 1642 | | |
| 1643 | + | |
1643 | 1644 | | |
1644 | 1645 | | |
1645 | 1646 | | |
| |||
Lines changed: 1 addition & 0 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
818 | 818 | | |
819 | 819 | | |
820 | 820 | | |
| 821 | + | |
821 | 822 | | |
822 | 823 | | |
823 | 824 | | |
| |||
Lines changed: 9 additions & 1 deletion
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
38 | 38 | | |
39 | 39 | | |
40 | 40 | | |
| 41 | + | |
41 | 42 | | |
42 | 43 | | |
43 | 44 | | |
44 | 45 | | |
| 46 | + | |
45 | 47 | | |
46 | 48 | | |
47 | 49 | | |
48 | 50 | | |
49 | 51 | | |
50 | 52 | | |
51 | | - | |
| 53 | + | |
52 | 54 | | |
53 | 55 | | |
54 | 56 | | |
| |||
126 | 128 | | |
127 | 129 | | |
128 | 130 | | |
| 131 | + | |
| 132 | + | |
| 133 | + | |
| 134 | + | |
| 135 | + | |
| 136 | + | |
129 | 137 | | |
130 | 138 | | |
131 | 139 | | |
| |||
Lines changed: 3 additions & 0 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
23 | 23 | | |
24 | 24 | | |
25 | 25 | | |
| 26 | + | |
26 | 27 | | |
27 | 28 | | |
28 | 29 | | |
| |||
32 | 33 | | |
33 | 34 | | |
34 | 35 | | |
| 36 | + | |
35 | 37 | | |
36 | 38 | | |
37 | 39 | | |
| |||
159 | 161 | | |
160 | 162 | | |
161 | 163 | | |
| 164 | + | |
162 | 165 | | |
163 | 166 | | |
164 | 167 | | |
| |||
Lines changed: 18 additions & 0 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
2 | 2 | | |
3 | 3 | | |
4 | 4 | | |
| 5 | + | |
5 | 6 | | |
6 | 7 | | |
7 | 8 | | |
| |||
268 | 269 | | |
269 | 270 | | |
270 | 271 | | |
| 272 | + | |
| 273 | + | |
| 274 | + | |
| 275 | + | |
| 276 | + | |
| 277 | + | |
| 278 | + | |
| 279 | + | |
| 280 | + | |
| 281 | + | |
| 282 | + | |
| 283 | + | |
| 284 | + | |
| 285 | + | |
| 286 | + | |
| 287 | + | |
| 288 | + | |
271 | 289 | | |
272 | 290 | | |
273 | 291 | | |
| |||
Lines changed: 2 additions & 1 deletion
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
18 | 18 | | |
19 | 19 | | |
20 | 20 | | |
| 21 | + | |
21 | 22 | | |
22 | 23 | | |
23 | 24 | | |
| |||
41 | 42 | | |
42 | 43 | | |
43 | 44 | | |
44 | | - | |
| 45 | + | |
45 | 46 | | |
46 | 47 | | |
47 | 48 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
231 | 231 | | |
232 | 232 | | |
233 | 233 | | |
234 | | - | |
| 234 | + | |
235 | 235 | | |
236 | 236 | | |
237 | 237 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
83 | 83 | | |
84 | 84 | | |
85 | 85 | | |
| 86 | + | |
| 87 | + | |
| 88 | + | |
| 89 | + | |
| 90 | + | |
86 | 91 | | |
87 | 92 | | |
88 | 93 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
30 | 30 | | |
31 | 31 | | |
32 | 32 | | |
| 33 | + | |
| 34 | + | |
| 35 | + | |
| 36 | + | |
| 37 | + | |
| 38 | + | |
| 39 | + | |
| 40 | + | |
| 41 | + | |
| 42 | + | |
| 43 | + | |
| 44 | + | |
| 45 | + | |
| 46 | + | |
| 47 | + | |
| 48 | + | |
| 49 | + | |
33 | 50 | | |
34 | 51 | | |
35 | 52 | | |
| |||
537 | 554 | | |
538 | 555 | | |
539 | 556 | | |
| 557 | + | |
| 558 | + | |
| 559 | + | |
540 | 560 | | |
541 | | - | |
| 561 | + | |
542 | 562 | | |
543 | 563 | | |
544 | | - | |
| 564 | + | |
545 | 565 | | |
546 | 566 | | |
547 | 567 | | |
| |||
1644 | 1664 | | |
1645 | 1665 | | |
1646 | 1666 | | |
| 1667 | + | |
| 1668 | + | |
1647 | 1669 | | |
1648 | 1670 | | |
1649 | 1671 | | |
| |||
0 commit comments