Install FinalRun
Run the one-line install script. It sets up Node.js (if needed), installs the CLI globally, and installs the platform driver assets for Android and iOS.Alternatively, if you already have Node.js 20 or later, you can install via npm:
Verify installation
Check that the CLI is available and that your host has the required platform tools:
finalrun doctor checks for adb, emulator, scrcpy (Android), and Xcode command line tools (iOS). Fix any issues it reports before continuing.Set up your AI provider key
FinalRun uses your own AI provider API key. Create a Add
.env file at the root of your project with the key for your chosen provider:.env to your .gitignore so secrets are never committed.Each test run makes real AI API calls that consume tokens. Standard billing from your AI provider applies.
Create the workspace structure
Create the Then create
At least one of
.finalrun/ directory and a folder for your test specs:.finalrun/config.yaml with your app’s identity and default settings:| Field | Description |
|---|---|
app.packageName | Android package identifier |
app.bundleId | iOS bundle identifier |
env | Default environment name (can be omitted if not using env files) |
model | Default AI model in provider/model format |
app.packageName or app.bundleId is required.Write your first test
Create The Then declare the bindings in
.finalrun/tests/login_smoke.yaml with a basic login scenario:${secrets.email} and ${secrets.password} placeholders are resolved from your .env file or environment variables at runtime. To use them, add the values to your .env:.finalrun/env/dev.yaml:Run the test
Run your test on Android or iOS. The FinalRun will boot the emulator or simulator, install the app, and begin executing the test steps. You’ll see live output as the AI works through each action.
--model flag can be omitted if you set a default in config.yaml.What’s next
- YAML test format — learn all test spec fields, suite manifests, and placeholder syntax
- CLI reference — full list of commands and flags
- Workspace configuration — app identity, per-environment overrides, and
--appflag
