Files
sanderling/docs/development/action-space.md

2.2 KiB

Action Space

Inventory of user interaction primitives Sanderling currently supports, compared against the full set available through the native driver layer.

Current Actions

Action Parameters Notes
Tap on (selector or element) Single tap on element or coordinates
DoubleTap on (selector or element) Two taps within a sub-100 ms window
LongPress on (selector or element) Press and hold; resolves to coordinates
InputText into, text Type into focused field
Swipe from, to, durationMillis? Point-to-point or element-to-element
Scroll direction, in?, durationMillis? Scroll a container up, down, left, or right
PressKey key back, home, enter, tab, up, down, left, right
Wait durationMillis Sleep for N ms

Gaps vs Native Driver

The native driver layer (both AndroidDriver and IOSDriver) already implements these actions. They are not yet surfaced in Sanderling's action model.

User Interaction Gaps

Action Priority Notes
EraseText Medium Clear N characters from focused field
HideKeyboard Medium Dismiss software keyboard after text input
PasteText Low Paste clipboard content into focused field

Device/Environment Gaps

These are less about user gesture modeling and more about test environment setup. Separate decision on whether they belong in the action model.

Action Notes
SetLocation GPS coordinate mocking
SetOrientation Portrait, landscape-left, landscape-right
SetAirplaneMode Network condition simulation
OpenLink Deep links and URLs
AddMedia Inject photos or videos into device gallery

Out of Scope

These native driver commands don't fit Sanderling's interaction model:

  • LaunchApp, StopApp, KillApp, ClearState - app lifecycle, handled outside the action stream
  • AssertVisible, AssertWithAI - Sanderling has its own property and assertion model
  • RunScript, EvalScript, RunFlow, Repeat - Sanderling has its own flow and generator model
  • InputRandomText/Number/Email/... - Sanderling's from() and weighted() generators cover this