Skip to main content
The minitap-ai/minitest-trigger GitHub Action is the CI surface for miniTest. It authenticates via GitHub OIDC, uploads your build (or asks Mini to build one), and starts the run — fire and forget. Results come back via a GitHub Check Run on the commit. For the workflow setup walkthrough, see Triggering a run → From CI.

Minimal usage

That’s enough. Mini builds your app for both platforms on the head commit, runs every story, and posts the verdict to the PR.

Prerequisites

The workflow must have the id-token: write permission for OIDC authentication:
And the MiniTest GitHub App must be installed on the org — see GitHub integration.

Inputs

Outputs

Build paths and requirements

If you don’t pass a build path, Mini builds your app for that platform on the triggering commit (using whatever’s configured in Providing app builds). If you pass a build path, the Action uploads that artifact instead of asking Mini to build.

iOS

A typical xcodebuild line for the simulator:

Android

.apk only, and it must contain native libraries for x86_64. The Action inspects the APK and fails with a clear error if only arm64-v8a or armeabi-v7a are present. Configure app/build.gradle:
Then build:

Web runs

run-ios, run-android, and the web inputs each select a lane. Lanes are additive: you can run just the web lane, just one native lane, or any mix. Web targets point at a URL instead of an uploaded artifact, with one exception: a web app linked to a GitHub repo builds and serves the commit this workflow runs on. See Building the commit. There are two ways to include the web lane:
  • run-web: true runs the app’s configured default web targets, set per app in the dashboard. This is the defaults marker: it expands to whatever browsers and viewports you set there. A repo-linked app runs them against the built commit; a URL-only app runs them against its configured web URL.
  • web-targets runs an explicit list instead. Each spec is <browser>:<viewport>, comma-separated. Setting web-targets includes the web lane on its own.
Set run-web or web-targets, not both. One picks the app defaults, the other an explicit list. A web app can be tested on a mobile device’s browser, so <browser>:<viewport> maps to a concrete target: The Action parses <browser>:<viewport> and the backend validates the combination. Browser support is chrome and firefox for desktop, plus safari for iOS mobile-web. Desktop Safari (safari:desktop) is not a valid web target. Each lane ignores nothing silently: web-url and web-targets apply only when the web lane is on, ios-build-path only when run-ios is on, android-build-path only when run-android is on. Passing a lane’s input while that lane is off is rejected, so a typo can’t quietly drop your build or URL.

Building the commit

If your web app is linked to a GitHub repo (set in App Settings), run-web: true builds your frontend at the commit this workflow runs on, serves it in the test environment, and runs your web stories against that build. No web-url is required. This holds even if the app also has a configured web URL: the linked-repo lane tests the commit, not the deployment. Supply web-url only when you want to test a separately-deployed URL (e.g. a PR preview) instead of the commit.

Per-run URL with web-url

The common CI case is testing a PR preview deployment. Set web-url to the deploy’s URL and it overrides the app’s configured web URL for that run:
This runs the web lane against the preview URL, alongside whichever native lanes are enabled. CI is one of two surfaces allowed to override web targets and the web URL per run; the other is the Run tests panel in the dashboard. The CLI, MCP tools, and Slack can pick the web lane but can’t override its targets or URL.

Examples

Default — Mini builds for both platforms

iOS only

Android only, with your own build

Bring your own iOS build, let Mini build Android

Restrict to specific story types

Web app, configured defaults

Web app, explicit targets

Web app on mobile browsers

Multi-workspace setup

Cancelling previous runs

When you push repeatedly to the same release branch — reopening a release PR with a fix, for example — older runs that are still pending or running pile up. With cancel-previous-runs: true (the default), the server cancels in-flight runs that match the same source branch before starting the new one. Cancellation is scoped:
  • Same source branch only — matched on the PR head branch (pull_request events) or the branch ref for push / workflow_dispatch / schedule / merge_group.
  • Release branches only — the branch must match one of the app’s configured release branch patterns (gitignore-style; configured per app in the dashboard).
  • CI-triggered only — only runs started by this Action are cancelled. Dashboard, Slack, or CLI runs are untouched.
It’s a no-op for:
  • Tag pushes (refs/tags/*).
  • Branches that don’t match a configured release pattern.
  • Events where the branch can’t be determined.
Opt out with cancel-previous-runs: false.

How it works

  1. OIDC auth. The Action requests a GitHub OIDC token scoped to the Minitap API. Nothing to manage on your side.
  2. Validate builds. If you supplied any build paths, the Action checks the artifacts (simulator-only iOS, x86-64 Android).
  3. Upload builds. Anything you supplied is uploaded to miniTest. .app bundles get packaged into .ipa first.
  4. Trigger the run. For any enabled platform without a supplied build, Mini builds the app for the triggering commit. This includes the web lane for a repo-linked web app: Mini builds and serves the commit unless you point web-url at a deployed URL.
  5. Fire and forget. The Action exits immediately. Results come back via the GitHub Check Run on the commit.