Skip to main content
Start from a test plan. GitHub Actions runs that plan. It does not choose the tests. For a review of the pull request diff, use GitHub pull request testing.

Set it up

Test Run Action

Add the secret and a workflow that runs the plan.

Mobile build

Upload the build and run the plan against it.
The post-merge agent is separate. After a reviewed pull request merges, it can promote tests from that review into the suite. It does not start the test plan.
1

Configure Secrets

Add a secret to your GitHub repository (Settings → Secrets and variables → Actions). Create the token in Organization Settings → API Keys. Store it as QATECH_API_TOKEN. Project-scoped keys are bound to one project. Org-scoped keys can see multiple projects and need projectShortId on API calls.
2

Get the project short ID

Copy proj_… from the project URL or Settings (for example proj_abc123). Pass it as project_short_id on the action. See Understanding Different IDs.
3

Get the test plan short ID

Open the plan under Test Plans and copy pln_… from the URL (for example pln_abc123). See Find the test plan short ID.
4

Create Workflow

Create .github/workflows/qatech.yml:

What works on GitHub

What this does not do

  • The Test Run Action does not post a pull request review and does not pick tests from the diff.
  • Envoyer is a different trigger for the same kind of plan. It is not required when you have GitHub Actions. See Envoyer.

Patterns

Run on pull requests

Test preview deployments

This pattern passes the preview URL into the Test Run Action. It does not create GitHub deployment records. If you also want the GitHub App to pick up the same preview for automatic PR reviews, add the steps in GitHub Deployments.

Test a mobile pull request build

Native apps have no preview URL. Build the APK or simulator .app in the workflow, upload it, then pass applicationBuildShortId in applications_config instead of url. How application builds work is on Mobile regression testing. The shared upload script is on API pull request testing.
Replace app_gXeBl2, pln_abc123, proj_abc123, and the APK path. Set blocking: true if the workflow should fail when tests fail. Native Android and iOS examples assume android/ or an .app already exist. Expo and React Native managed apps gitignore those folders. In CI, generate them before upload:
The debug APK path is typically android/app/build/outputs/apk/debug/app-debug.apk. EAS preview APKs also work if you wait for the build and download the artifact. Still upload a simulator or emulator binary, not a store .ipa. Full build steps are in Preparing Your App Build. iOS builds need a macOS runner and a simulator .app. Zip it, use "platform": "ios", and point BUILD_FILE at the archive. Full xcodebuild flags are in Mobile App Testing.

Persist environment custom headers

Pass customHeaders on any environment in applications_config to persist host-pattern header rules (auth and protection bypass). The Test Run Action and Change Review Action both accept this field. The preview deployment example shows it in a full workflow.
customHeaders works with url, shortId, or applicationBuildShortId. Omit the field to leave stored headers unchanged. Pass [] to clear them. The Start Run API uses the same customHeaders shape on applications[].environment (array of application objects, not a map). See Environment custom headers.

Use action outputs

Test Run Action reference

Inputs

Outputs