Skip to main content
Native mobile pull requests do not produce a preview URL. QA.tech tests the binary your CI built for that PR, not a deployed website. After the upload, pin the run or change review to that build with applicationBuildShortId. If the GitHub App auto-runs without a build override, it uses the application’s default environment (the last configured staging or production build). That is not the PR binary.

Choose an integration mode

Both modes use the same upload. They differ only in how you start testing after you have a build short ID.
Create the mobile application in Settings → Applications & Envs before CI uploads. See Mobile App Testing. Passing applicationBuildShortId creates or reuses an environment for that build; you do not add a new environment in the UI for every PR.

Prerequisites

  • Mobile testing enabled for the organization (contact support if it is not)
  • A mobile application in Settings → Applications & Envs. Each row has a short ID (app_…). Use the three-dot menu → Copy Short ID. You do not need a test plan for this. Test Plans → API Integration only lists apps already on a plan.
  • A test plan short ID for API-driven runs, or the GitHub App / GitLab MR integration connected for change reviews
  • An API token from Organization Settings → API Keys, stored as QATECH_API_TOKEN (GitHub) or QA_TECH_API_TOKEN (GitLab). Project-scoped keys are fine. Org-scoped keys need projectShortId on list and upload APIs.
  • A project short ID for GitHub Actions (for example proj_abc123). Copy it from the project URL or Settings.
  • A simulator or emulator build in CI: Android .apk, or iOS .app compressed as .zip or .tar.gz. Device and App Store .ipa files cannot run on simulators. See Preparing Your App Build.

How it works

See the Application Builds API for request and response details.

Upload the PR build

Run this after your compile step, on every PR. Replace app_gXeBl2 and the file path.
For iOS, zip the .app first, set "platform": "ios", and upload the archive:
The presigned URL expires in about two hours. Maximum file size is 4 GB. To install companion apps on the same device, upload those builds too and pass their short IDs in otherApplicationBuildShortIds. See Other Apps. Per-CI steps for starting the review are on GitHub, GitLab, and Bitrise. To run a test plan against the same build, see Mobile regression testing.

Network access

Mobile sessions use a different outbound IP pool than web tests. If the app talks to a firewalled backend, allowlist the ranges under Settings → Network (Mobile Testing IP Whitelist). See Network Access.

Troubleshooting

Tests ran, but against the old app The job did not pass applicationBuildShortId, or GitHub App Auto-run on PRs started a second review on the default environment. Pin the CI trigger to the uploaded build and turn auto-run off when CI owns the review. Upload or create-build fails for iOS The file is a device or App Store .ipa. Produce a simulator .app and upload a .zip or .tar.gz. See Preparing Your App Build. Change review starts but never comments on the PR The GitHub App is not installed, or it does not have access to the repository. The Change Review Action still needs that App connection so the agent can read the PR and post the review. See Change Review Action setup. Login or API calls fail in the emulator The backend is blocking mobile testing IPs. Update the Mobile Testing IP Whitelist.