YAML Test Format
Define test suites in YAML for version control, sharing, and migration.
Quick Start
- Go to the Tests Dashboard (
/tests). - Click Import YAML and upload a
.yamlfile. - Your suite and test cases are created automatically.
VibeView YAML Schema
A VibeView YAML file defines a complete test suite with one or more test cases:
name: Checkout Flow
description: End-to-end checkout with payment
appId: com.example.shop
platform: ios
resetStrategy: clear_data
context: The user is logged in and has items in the cart
variables:
username: testuser@example.com
promo_code: SAVE20
cases:
- name: Standard Checkout
steps:
- Tap on the Cart tab
- Tap "Proceed to Checkout"
- Enter shipping address
- Select "Credit Card" payment method
- Tap "Place Order"
assertions:
- Order confirmation screen is visible
- Order number is displayed
context: Use the default shipping address
- name: Checkout with Promo Code
steps:
- Tap on the Cart tab
- Tap "Proceed to Checkout"
- Tap "Add Promo Code"
- Type the promo code
- Tap "Apply"
- Tap "Place Order"
assertions:
- Discount is applied to the total
- Order confirmation screen is visible
Field Reference
| Field | Required | Description |
|---|---|---|
name | Yes | Suite name. Used as the display name in the dashboard. |
description | No | A brief description of what the suite tests. |
appId | No | App bundle ID (iOS) or package name (Android). If it matches an app in your organization, the suite is automatically linked. |
platform | No | "ios" or "android". |
resetStrategy | No | How to reset the app between test cases: "clear_data" (default), "reinstall", or "relaunch". |
context | No | Instructions for the AI agent that apply to all test cases in the suite. |
variables | No | Key-value pairs available during test execution. |
cases | Yes | Array of test case definitions (see below). |
Test Case Fields
| Field | Required | Description |
|---|---|---|
name | Yes | Test case name. |
steps | Yes | Array of step strings. Each step is a plain-text instruction for the AI agent. |
assertions | No | Array of assertion strings. Expected outcomes the AI agent verifies after executing steps. |
context | No | Per-case instructions for the AI agent (supplements suite-level context). |
Importing YAML
From the UI
- Open the Tests Dashboard (
/tests). - Click Import YAML.
- Select a
.yamlfile from your computer. - VibeView creates the suite and its test cases from the file.
From the API
POST /api/v1/tests/suites/import-yaml
Content-Type: multipart/form-data
file(required) — the YAML file upload.app_id(optional) — app public ID to link the suite to. If omitted, VibeView tries to match via theappIdfield in the YAML.
Response:
{
"public_id": "checkout-flow-a1b2c3",
"name": "Checkout Flow",
"case_count": 2
}
If the YAML’s appId matches more than one app in your organization (for example, an iOS and a tvOS app sharing a bundle ID), the import does not create the suite. Instead it returns an ambiguity response listing the matching apps so you can re-import with an explicit app_id:
{
"ambiguous": true,
"app_bundle_id": "com.example.shop",
"matching_apps": [
{ "public_id": "shop-app-d4e5f6", "name": "Shop App", "platform": "ios" },
{ "public_id": "shop-tv-g7h8i9", "name": "Shop TV", "platform": "tvos" }
],
"suite_name": "Checkout Flow"
}
Exporting YAML
From the UI
- Open a suite’s detail page (
/tests/:suiteId). - Click Export YAML.
- A
.yamlfile downloads containing the full suite definition.
From the API
GET /api/v1/tests/suites/{suite_id}/export-yaml
Returns the suite as a YAML file download. The export includes all test cases with their steps, assertions, context, and recorded gesture data (for hybrid replay).
Example Files
Simple Login Test
name: Login Test
appId: com.example.myapp
platform: ios
cases:
- name: Successful Login
steps:
- Tap on the "Email" field
- Type "user@example.com"
- Tap on the "Password" field
- Type "password123"
- Tap "Sign In"
assertions:
- Home screen is visible
- Welcome message shows the user's name
Multi-Case Suite with Variables
name: Search and Filter
description: Tests the product search and filtering functionality
appId: com.example.shop
platform: android
resetStrategy: relaunch
context: Start from the home screen. The app has sample product data loaded.
variables:
search_term: wireless headphones
max_price: "50"
cases:
- name: Basic Search
steps:
- Tap on the search bar
- Type the search term
- Tap the search button
assertions:
- Search results are displayed
- Results contain items matching the search term
- name: Filter by Price
steps:
- Tap on the search bar
- Type the search term
- Tap the search button
- Tap "Filters"
- Set maximum price to the max price value
- Tap "Apply"
assertions:
- All displayed products are under the max price
- Filter badge shows active filter count
context: After search results load, the filter button appears in the top right