Maestro driver

Runs Maestro-compatible YAML flows against SootSim via Playwright.

YAML step reference

Interaction

- tapOn: 'Button Text'
- tapOn: { id: 'my-button' }
- tapOn: { text: 'Submit', index: 1 }
- inputText: 'hello world'
- hideKeyboard: true
- back: true
- swipe: { direction: 'LEFT' }
- scroll: { direction: 'DOWN' }
- scrollUntilVisible:
element: 'Target Text'
direction: 'DOWN'
timeout: 10000

Assertions

- assertVisible: 'Welcome'
- assertVisible: { id: 'header' }
- assertNotVisible: 'Loading'
- assertTrue: 'some condition'
- assertTreeContains: 'Submit' # sootsim extension

Waiting

- waitFor: { text: 'Ready', timeout: 5000 }
- waitFor: { id: 'content', timeout: 10000 }
- waitForAnimationToEnd: true
- wait: 2000 # sootsim extension: wait ms

Control flow

- repeat:
times: 3
commands:
- tapOn: 'Next'
- waitForAnimationToEnd: true
- runFlow: 'sub-flow.yaml'

Capture

- takeScreenshot: 'home-screen'
- dumpTree: 5 # sootsim extension: dump tree to depth

Programmatic API

import SootSimMaestro from 'sootsim-engine/test/maestro-driver'
const driver = new SootSimMaestro()
await driver.start(url, { record: true, headless: true })
await driver.runFlow(steps)
await driver.stop()