Choose a Workflow
- YAML-first CLI (recommended) — start from a local YAML file, create the remote test, and bootstrap
.revyl/config.yamlautomatically. The CLI checks the file with backend YAML validation before mutation. - Scaffold first — create an empty or module-seeded remote test with
revyl test create, sync the generated YAML into.revyl/tests/, then edit and push locally. - Session to regression — convert a completed exploratory device session with
revyl test create --from-session <session-id>, then refine the synced YAML and push it back as a stable regression.
Prerequisites
- Authenticated with
revyl auth login - An app/build available for the target platform
- The correct app name for
test.build.name(check withrevyl app list)
YAML-First CLI
1. Write a YAML file
2. Create the test
4. Iterate and push
Scaffold First
.revyl/tests/smoke-login-ios.yaml and push.
Session to Regression
--app can be omitted. The test name can also be omitted; Revyl will use the compiled session title.
YAML Anatomy
Reusable Modules
Modules are shared groups of test blocks that can be imported into any test.Create a module
Import into a test
Manage modules
Code Execution Scripts
Code execution blocks let you run Python, JavaScript, TypeScript, or Bash code as part of a test.Create and register a script
Use in a test
Inline code (no saved script)
Manage scripts
Variables
Variables let you pass dynamic data between steps using Mustache-style{{variable}} templates.
Define variables up front
Extract values at runtime
Manage variables via CLI
Control Flow
If / Else
condition:. Branches are then: and (optionally) else:.
While Loops
body:.
Workflows
A workflow is a named collection of tests that run together.Create and manage
Manage workflows
Tags
Authoring Best Practices
- Intent-level instruction steps. Use one free-form instruction for a meaningful user intent instead of splitting every tap and keystroke.
- Sparse separate validations. Keep assertions in their own
validationblocks and add them only for important user-visible outcomes. - Validate durable outcomes. Check user-visible state (e.g. “inbox is visible”) not transient state (e.g. “loading spinner disappeared”).
- Use variables for secrets. Never hardcode credentials in reusable tests.
- Put modules at the top. Shared setup flows belong at the beginning.