App tests (Maestro)
Venelx can run your project's UI test flows on a build worker right after the app is built. It is optional and off by default — projects that don't enable it are unaffected, and tests never block the artifact upload. Today the supported framework is Maestro.
Turn it on
- Add Maestro flow files to your repository (the default folder is
.maestro). - Open your project → Settings → Testing
(
https://app.venelx.com/project/<projectId>/settings?tab=testing) and tick Enable app tests. - Choose the Build target to test. It must produce something installable on an
emulator or simulator: an APK for Android, or a simulator .app / .zip build for iOS.
Android App Bundles (
.aab) and device.ipabuilds are rejected with a clear message. - Set the options below and click Save testing settings.
| Field | Meaning |
|---|---|
| Framework | Maestro. |
| Build target to test | The build target whose artifact gets installed. |
| Test flows path | Folder or file relative to your repo's root directory (default .maestro). |
| Device | Optional AVD name, adb serial, or simulator name. Empty uses the first available device (one is booted if needed). |
| Extra CLI arguments | Appended to the Maestro command, for example --env USERNAME=qa --include-tags smoke. Shell operators are rejected. |
| Timeout | 3 to 180 minutes. |
| Mark the build job failed when tests fail | Off by default. The build itself stays success in history either way. |
Triggers (any combination):
- After every build of the test target (manual, push or pull request).
- On pull request — build and test the target when a PR is opened or updated.
- On push — build and test when the target's branch receives a push.
Pull request and push triggers need GitHub automation enabled for the project.
Run tests for a single build
- From the project overview: use the Run app tests after build checkbox when you start a build.
- Any branch: the same option works when you build a specific branch.
- From the MCP server:
trigger_buildacceptsbranchandrunTests. See the MCP guide.
Run tests against an existing build
Once tests are enabled, every successful build that has an installable artifact shows a Run tests button in Build history and on the project's Files page. It queues a test-only job: the worker takes the stored artifact, checks out the commit it was built from (for the flow files), installs it, and runs your suite. No rebuild and no new build-history entry — the test run links back to the original build.
Results
Open App tests in the project
(https://app.venelx.com/project/<projectId>/tests). Each run shows:
- status (
passed,failed,error,running,queued), platform, branch or PR number, duration and the worker that ran it; - a pass/fail/skip summary and every test case, failures first, with their messages;
- the tail of the runner output;
- a link to the build logs.
For failed or errored runs a Debug bundle is attached (Maestro screenshots and command logs). Download it from the run's row; it is available to people with access to the project.
Other places results show up:
- a comment on the pull request for PR-triggered runs;
tests.passedandtests.failedoutbound webhooks, if you have webhooks configured.
Worker requirements
Tests run on a build worker. Whoever runs the worker needs:
- the Maestro CLI installed (on
PATHor in~/.maestro/bin); - Android: Android SDK platform-tools (
adb), plus an emulator image (AVD) or a connected device; - iOS: a Mac with an installed simulator runtime.
If something is missing, the test run finishes with status error and an actionable message (for example "no AVD" or "artifact is an .aab") instead of failing your build.
MCP
| Tool | What it does |
|---|---|
test_runs | Lists recent app-test runs (status, summary, branch, linked build, failing cases) and returns the project's test configuration. Read scope. |
update_test_config | Changes the test configuration; only the fields you pass change. Write scope. |
trigger_build | With runTests: true, runs the suite after the build. Write scope. |
list_branches | Lists repository branches to build or test. Read scope. |
Troubleshooting
| Message | Fix |
|---|---|
"App tests are not enabled" (tests_not_configured) | Enable them under Settings → Testing. |
Artifact is an .aab / device .ipa | Pick an APK or simulator build as the test target. |
Run is error with an install hint | Install Maestro or the emulator/simulator on the worker. |