All ZeniTest tests and settings are organized inside a single zenitests/ directory in your project root.
1. Folder Structure
Section titled “1. Folder Structure”Here is the standard folder layout:
your-project/├── zenitests/│ ├── web/│ │ ├── config.yaml # Web configuration (browser, URLs, concurrency)│ │ ├── tc_login.yaml # Web test case│ │ └── tc_checkout.yaml # Web test case│ ├── ios/│ │ ├── config.yaml # iOS configuration (device, bundlePath)│ │ └── tc_ios_checkout.yaml # iOS mobile test case│ └── android/│ ├── config.yaml # Android configuration (device, bundlePath)│ └── tc_android_checkout.yaml # Android mobile test case├── secrets.yaml # Passwords and credentials (gitignored)└── ...web/: Contains browser tests and default web settings.ios/: Contains iOS native app tests and default simulator/device settings.android/: Contains Android native app tests and default emulator/device settings.secrets.yaml: Stored at the project root (not insidezenitests/). Keeps passwords and tokens out of your test files.
2. Configuration Files (config.yaml)
Section titled “2. Configuration Files (config.yaml)”Each platform folder can contain a config.yaml file. This lets you set default options so you don’t have to type command-line flags every time you run zenitest run.
# Browser to use: chromium (default), chrome, firefox, or safaribrowser: chromium
# Local dev server URL — used when running with --locallocalURL: http://localhost:3000
# Production or staging URL — used when running with --prod (default)prodURL: https://www.saucedemo.com
# How many tests to run at the same time (default: 5)parallel: 2# Path to your built iOS app — .app for Simulator, .ipa for devicebundlePath: build/Runner.ipa
# Target simulator or device namedevice: iPhone 15 Pro
# How many tests to run at the same time (default: 1)parallel: 1# Path to your built Android APKbundlePath: build/app-debug.apk
# Target emulator or device namedevice: Pixel 7
# How many tests to run at the same time (default: 1)parallel: 13. Test Case File Structure
Section titled “3. Test Case File Structure”Each test is a .yaml file containing basic metadata and a sequence of steps:
id: tc_login # Unique ID for the test (snake_case)title: User Login Flow # Plain English titlepriority: high # P0/P1/P2 or high/medium/low (optional)expectedResult: Dashboard is open # Expected outcome (recommended)
steps: - navigate: /login - act: Type 'john_doe' into 'Username' - act: Click 'Sign In' - validate: Verify 'Dashboard' is visible4. Test File Fields
Section titled “4. Test File Fields”| Field | Description | Required? |
|---|---|---|
id |
Unique identifier (e.g. tc_login) |
Yes |
title |
Short summary describing the test | Yes |
priority |
Importance level: P0, P1, P2 or high, medium, low |
Optional |
variables |
Reusable variables referenced as ${varName} |
Optional |
expectedResult |
Plain English description of expected outcome | Recommended |
steps |
Ordered list of actions (navigate, act, validate) |
Yes |