DOCS
Automate

App builds from CI

Upload the build your pipeline just made and run the app's tests on it, in the same step.

Android and iOS#

# Android (Gradle)
./gradlew assembleDebug
node qa-ai.mjs run --project p_your_project --build app/build/outputs/apk/debug/app-debug.apk --junit qa-ai-junit.xml

# iOS: build for the Simulator, zip the .app
xcodebuild -scheme MyApp -sdk iphonesimulator -configuration Debug -derivedDataPath build
(cd build/Build/Products/Debug-iphonesimulator && zip -qry ../../../../MyApp.app.zip MyApp.app)
node qa-ai.mjs run --project p_your_project --build MyApp.app.zip

# Upload only (prints the build id), list builds, run a chosen build
node qa-ai.mjs build upload app-debug.apk --project p_your_project --label "$GITHUB_SHA"
node qa-ai.mjs builds --project p_your_project
node qa-ai.mjs run --test t_abc --build ab_123

run --build uploads the file, waits until it is checked, and runs the project's tests of that app on it. Each app test gets the build of its own app (by package name or bundle id), so one command can carry an Android and an iOS build.

What builds are accepted#

A build our devices cannot run is refused with the reason, and the command exits 2.

Over the API#

Uploading is three calls: start (returns the part size and count), one call per part with the raw bytes, and complete with every part's etag. A key that can only run tests can upload builds; deleting one needs a key that can also create and edit tests.