{% hint style="warning" %} By design, Maestro discourages the usage of conditional statements unless absolutely necessary as they could easily ramp up the complexity of your tests. {% endhint %}
- runFlow:
when:
visible: 'Some Text'
file: folder/some-flow.yaml
{% content-ref url="nested-flows.md" %} nested-flows.md {% endcontent-ref %}
Or, if you don't wish to extract your commands into a separate flow file, you can run the commands inline like this:
- runFlow:
when:
visible: 'Some Text'
commands:
- tapOn: 'Some Text'
{% content-ref url="../api-reference/commands/runflow.md" %} runflow.md {% endcontent-ref %}
- runScript:
when:
visible: 'Some Text'
file: some-script.js
{% content-ref url="../api-reference/commands/runscript.md" %} runscript.md {% endcontent-ref %}
- runFlow:
when:
visible: 'Some Text'
platform: iOS
file: folder/some-flow.yaml
Note that multiple conditions are applied as AND conditions.
Supported conditions include:
visible: { Element matcher } # True if matching element is visible
notVisible: { Element matcher } # True if matching element is not present
true: { Value } # True if given value is true or not empty
platform: { Platform } # True if current platform is given platform (Android|iOS|Web)
All of the normal element matchers are supported, e.g.
- runFlow:
when:
visible:
id: 'someId'
text: 'Some Text'
below:
text: 'Some Other Text'
childOf:
id: 'someParentId'
text: 'Some Parent Text'
index: 2
file: folder/some-flow.yaml
{% content-ref url="../api-reference/selectors.md" %} selectors.md {% endcontent-ref %}
Usage of JavaScript conditions is possible via true
condition:
- runFlow:
when:
true: ${MY_PARAMETER == 'Something'}
file: subflow.yaml
{% content-ref url="javascript/" %} javascript {% endcontent-ref %}