Tests can be exported as YAML from the test editor for version control and CI/CD use.
Schema
test:
metadata:
name: "Test name" # required
platform: "android" # "android" or "ios" (optional)
build:
name: "My App" # required, matches build name in Revyl
pinned_version: "1.2.0" # optional, defaults to latest
blocks: # required, array of steps
- instructions: "..."
The app launches automatically at the start, so you don’t need an initial open_app step.
Example
test:
metadata:
name: "Login flow"
platform: android
build:
name: "My App"
blocks:
- instructions: "Type '{{username}}' in the email field"
- instructions: "Type '{{password}}' in the password field"
- instructions: "Tap the Login button"
- validation: "The dashboard screen is visible"
- extraction:
instructions: "Get the welcome message text"
variable_name: "welcome_msg"
Step Types in YAML
| Type | YAML Key | Required Fields |
|---|
| Instruction | instructions | text |
| Validation | validation | text |
| Extraction | extraction | instructions, variable_name |
| Script | code_execution | code, language |
| Manual | manual | step_type + type-specific fields |
| If/Else | if | condition, then, optional else |
| While | while | condition, body |
| Module | module_import | module_id |
Manual Steps
- manual:
step_type: "wait"
duration: 3
- manual:
step_type: "open_app"
bundle_id: "com.apple.mobilesafari" # optional
- manual:
step_type: "navigate"
url: "myapp://settings"
- manual:
step_type: "set_location"
latitude: 37.7749
longitude: -122.4194
Control Flow
# If/Else
- if:
condition: "A login prompt is visible"
then:
- instructions: "Tap 'Sign In'"
else:
- instructions: "Tap 'Continue'"
# While loop
- while:
condition: "A 'Load More' button is visible"
body:
- instructions: "Tap 'Load More'"
- manual:
step_type: "wait"
duration: 2
Code Execution (Script) steps are not currently supported in YAML export. Variables using {{}} syntax are preserved.