Skip to the content

Every build, checked before it ships

After your CI builds the app, Trailcam uploads the build, runs your flows on it and waits for the results. A failing flow fails the job, and the pull request shows each flow's result.

A pull request's results in Trailcam: 5 of 6 runs passed, with checkout failing on Android at step 7 because the app changed and the flow didn't.A pull request's results in Trailcam: 5 of 6 runs passed, with checkout failing on Android at step 7 because the app changed and the flow didn't.A pull request's results in Trailcam: 5 of 6 runs passed, with checkout failing on Android at step 7 because the app changed and the flow didn't.

Runs from the CI you have, and alerts where your team is

  • GitHub Actions
  • GitLab
  • Bitrise
  • CircleCI
  • Codemagic
  • EAS Build
  • Slack
  • PagerDuty

Made for the way you ship

Each flow on each device is one run, as anywhere else in Trailcam. Flows with errors are skipped and listed in the results instead of running.

  • Re-run from GitHub

    Re-run on GitHub runs the same flows on the same builds again, with no new commit and no new build.

  • A status check and one comment

    Each commit gets a status check, and each pull request one comment with every flow's result, updated as runs finish.

  • Our problems aren't yours

    When Trailcam couldn't run a flow, the pull request's check is neutral, not failed: your app didn't break.

  • Any CI service

    Guides for GitHub Actions, GitLab, Bitrise, CircleCI, Codemagic, Xcode Cloud and EAS Build, and a command-line tool for the rest.

  • Choose what runs

    Every flow on each platform's default device, or the flows and devices a job names: a quick set on each pull request, the tablets too before a release.

  • Wait, or carry on

    Wait for the results and pass or fail the job on them, or start the runs and let the pipeline move on.

One step after your build

Link your repository on the project's CI tab, then add the action after the step that builds your app.

.github/workflows/trailcam.yml
name: Trailcam
on:
  pull_request:
  push:
    branches: [main]
permissions:
  contents: read
  id-token: write
jobs:
  android:
    runs-on: ubuntu-24.04
    steps:
      - uses: actions/checkout@v7
      - run: ./gradlew assembleDebug
      - uses: trailcam/action@v1
        with:
          project: <your project's ID>
          build: app/build/outputs/apk/debug/app-debug.apk

A failing flow fails the pull request

With each failure, what went wrong and, when Trailcam AI can tell, why.

A pull request's results: 5 of 6 runs passed, with checkout failing on Android because it couldn't find “Pay now”, and Trailcam AI's view that the app changed and the flow didn't.

Why, from Trailcam AI

More of Trailcam

Find out before your customers do

Start with the journey that would hurt most if it broke, usually sign-up or checkout. One reliable check beats ten flaky ones.