Overview
The Revyl YAML format allows you to define end-to-end tests in a structured, human-readable format. Tests support conditional logic, loops, variable extraction, and various action types that work across web, iOS, and Android platforms.Test Execution Behavior
Important: When a test starts, Revyl automatically:- Web tests: Navigates to the build URL
- Mobile tests: Opens the application
navigate
or open_app
steps at the beginning of your test. These manual steps are only needed when:
- Navigating to a different URL during the test (web)
- Reopening the app after closing it (mobile)
Root Structure
The test Object
All YAML tests start with atest:
root object containing three main sections:
Metadata Section
The metadata section contains test-level configuration:name
Required | string The name of your test.platform
Optional | string | Values:web
, ios
, android
Target platform for the test. If omitted, platform is inferred from the build.
Build Section
The build section specifies which application version to test:name
Required | string Name of the build to test against.pinned_version
Optional | string Specific version to test. If omitted, uses latest build.Blocks Section
blocks
Required | array List of test steps executed sequentially. Tests automatically navigate to the build at start, so blocks typically begin with instructions or validations.Block Types
Instructions Block
AI-powered actions that execute natural language instructions. Use high-level instructions for complex flows. Fields:type
: “instructions” (required)step_description
: Natural language instruction (required)
Validation Block
Assert conditions to verify application state. Fields:type
: “validation” (required)step_description
: Condition to validate (required)
Extraction Block
Extract data from the application and store in variables. Fields:type
: “extraction” (required)step_description
: What to extract (required)variable_name
: Variable name to store the extracted value (required, use kebab-case)
Manual Block
Direct operations that bypass AI processing. Fields:type
: “manual” (required)step_type
: Type of manual operation (required)step_description
: Parameters or duration (required for some step_types)
wait
: Pause for specified secondsnavigate
: Go to different URL (not needed at test start - automatic)back
: Browser back buttonforward
: Browser forward buttonrefresh
: Refresh pagebrowser_code_execution
: Execute JavaScript
wait
: Pause for specified secondsopen_app
: Launch app (not needed at test start - automatic)close_app
: Close the application
navigate
: Only when changing to a different URL mid-testopen_app
: Only when reopening after usingclose_app
If Block
Conditional branching with then/else paths. Fields:type
: “if” (required)condition
: Natural language condition (required)then
: Array of blocks executed when condition is true (required)else
: Array of blocks executed when condition is false (optional)
While Block
Loop with a condition that repeats the body until condition is false. Fields:type
: “while” (required)condition
: Loop continuation condition (required)body
: Array of blocks executed each iteration (required)
Using Variables
Variables allow you to extract and reuse data throughout your test. Defining Variables:$
on both sides:
step_description
or condition
field.
Complete Example
Related Documentation
- YAML Examples - Practical examples and patterns
- Control Flow Guide - Detailed if/while usage
- Using Variables - Variable management
- LLM Schema Reference - Copy this schema for AI-assisted test generation