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 Navigation - 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() previousDetox DrivernextOverview