Skip to content

feat(runner): tap, swipe and fill actions for mobile runners (AGE-4855) - #1638

Merged
Erzhan Torokulov (erzhtor) merged 4 commits into
mainfrom
age-4855-act-mobile-targets
Oct 1, 2026
Merged

Erzhan Torokulov (erzhtor) merged 4 commits into
mainfrom
age-4855-act-mobile-targets

Conversation

@erzhtor

@erzhtor Erzhan Torokulov (erzhtor) commented Sep 30, 2026 •

Copy link
Copy Markdown
Contributor

Relates to AGE-4855. Platform side: qawolf/platform#34398 (merged, published in @qawolf/api-contracts 0.73.0).

Overview of Changes

qawolf runner act gets the new mobile actions from the platform contract:

  • tap: --x/--y, or --selector (+ optional --strategy)
  • swipe: --from x,y --to x,y, optional --duration-ms (max 10000)
  • fill: --selector --text, replaces the field's value

type still works on both families. On mobile, click/drag still work but are deprecated in favour of tap/swipe (removal: AGE-5384). A browser runner refuses the mobile actions with action-not-supported-on-browser, exit code 2.

The CLI only maps flags onto the action; the published runnerActionSchema validates it. runner actions sequences stay browser-only. In the SDK types, ActRequest.action widens from BrowserAction to RunnerAction, so nothing that was valid breaks.

Also: act examples and flag parsers moved to actExamples.ts and flagValues.ts to stay under the file-length lint. The run triage row dropped from SKILL.md, the issue create and needsReview text in the skill docs, and the --effort/--reason flags in flagSpecs.union.test.ts all come from the contracts bump.

Testing

Ran against published 0.73.0: typecheck, lint, format:check, knip and test pass, except 3 keychain tests that also fail on main on this machine.

Checklist

  • Changes follow the code style of this project
  • Self-review completed
  • Tests added/updated (or not applicable)
  • No breaking changes (or described below)

@erzhtor Erzhan Torokulov (erzhtor) changed the title feat(runner): mobile act by selector, --clear, and --duration-ms (AGE-4855) feat(runner): tap, swipe and fill actions for mobile runners (AGE-4855) Sep 30, 2026
@erzhtor
Erzhan Torokulov (erzhtor) marked this pull request as ready for review October 1, 2026 07:21
@erzhtor
Erzhan Torokulov (erzhtor) requested review from a team October 1, 2026 07:34
@erzhtor
Erzhan Torokulov (erzhtor) merged commit 98a05fe into main Oct 1, 2026
6 checks passed
@erzhtor
Erzhan Torokulov (erzhtor) deleted the age-4855-act-mobile-targets branch October 1, 2026 08:13

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Oops forgot posting the feedback

| `qawolf run triage` | read | Prototype. Ask Jev, a TypeSafe System One model, whether a flow failure in a run is a bug in the product or a test that needs maintenance. Compares the failing attempt with the flow's last passing run in the same environment. Records nothing. |
| `qawolf runner act` | write | Perform one raw action on a runner's screen: click, double_click, scroll, move, drag, keypress, navigate or type. Use - to read a whole action as JSON from stdin. On a mobile runner only click (button left), drag and type have a touchscreen equivalent; the rest answer action-not-supported-on-mobile |
| `qawolf runner act` | write | Perform one raw action on a runner's screen. A browser runner takes click, double_click, scroll, move, drag, keypress, navigate and type; a mobile runner takes tap, swipe, fill and type. A browser runner answers mobile actions with action-not-supported-on-browser; a mobile runner answers the other browser actions with action-not-supported-on-mobile. Use - to read a whole action as JSON from stdin |
| `qawolf runner actions` | write | Perform a sequence of up to ten raw actions on a runner's screen in one request, as a JSON array of the same actions `runner act` takes. Use - to read the array from stdin. Actions run back to back, so batch only steps whose targets are on the screen you last saw, and end the sequence at the step that changes the page. Each result carries an effect: performed, not-performed, or unknown when the runner stopped answering and the action may have landed |

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

runner actions rejects tap, swipe and fill, so it no longer takes the same actions as runner act. I think we should update the description in actions.register.ts and regenerate this table and the help snapshots.

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

TIL about runner actions, thanks. Fixed the other way around in #1642 to make runner actions to also accept the mobile actions too. Will land once api-contracts 0.74.0 publishes, e.g. https://github.com/qawolf/platform/pull/34509

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Development

Successfully merging this pull request may close these issues.

4 participants