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 seconds
- navigate: Go to different URL (not needed at test start - automatic)
- back: Browser back button
- forward: Browser forward button
- refresh: Refresh page
- browser_code_execution: Execute JavaScript
- wait: Pause for specified seconds
- open_app: Launch app (not needed at test start - automatic)
- close_app: Close the application
- navigate: Only when changing to a different URL mid-test
- open_app: Only when reopening after using- close_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: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