Skip to main content

GitHub Actions

The CLI automatically posts results as a GitHub Check Run on the pull request.

Environment variables

Pre-built binaries

Grantiva can consume pre-built .app bundles or .ipa archives instead of building from source. This decouples the build from the test, enabling faster and more flexible CI pipelines.
When --app-file is provided:
  • The xcodebuild step is skipped entirely
  • The binary is validated to be a simulator build (not a device build)
  • The bundle ID is derived from the binary’s Info.plist if not specified
  • .ipa files are automatically extracted (.app from Payload/)
  • scheme is not required in grantiva.yml

Split build and test

Separate the build and test into different CI jobs. This lets you cache build artifacts, reuse them across multiple test runs, and run visual regression on different device configurations in parallel.
Benefits:
  • Build and test can be separate jobs (even separate machines)
  • Build artifacts can be cached and reused across multiple test runs
  • Visual regression doesn’t re-build when only baselines changed
  • Multiple Grantiva configs (different screen sizes, locales) can run in parallel against the same binary

JSON output for scripting

Exit code is 0 if all screens pass, 1 if any fail — works with CI if conditions.

Approving new baselines

When UI changes are intentional, approve the new screenshots:
Or approve specific screens:
Approved captures become the new baselines for future comparisons.

Results

After each run, the CLI outputs:
  • Run ID and dashboard URL
  • Screen-by-screen pass/fail status
  • Pixel diff percentage and perceptual distance per screen
  • Total duration
Results are also visible in the Grantiva dashboard under your project.