# Run Mobile Tests in CI

This guide shows how to run Mobilewright tests against an iOS simulator in GitHub Actions. Android CI setup follows the same pattern with Android-specific setup steps.

**Prerequisites:** Mobilewright tests already running locally (see [Test an iOS App with Mobilewright](https://mobilenext.ai/docs/docs/guides/test-ios-app-with-mobilewright.md)).

## GitHub Actions workflow[​](#github-actions-workflow "Direct link to GitHub Actions workflow")

Create `.github/workflows/mobile-tests.yml`:

```
name: Mobile Tests



on:

  push:

    branches: [main]

  pull_request:



jobs:

  test:

    runs-on: macos-latest



    steps:

      - uses: actions/checkout@v4



      - uses: actions/setup-node@v4

        with:

          node-version: '22'



      - name: Install dependencies

        run: npm ci



      - name: Boot simulator

        run: |

          xcrun simctl boot "iPhone 16" || true

          xcrun simctl bootstatus "iPhone 16" -b



      - name: Run Mobilewright tests

        run: npx mobilewright test --reporter list



      - name: Upload test report

        if: always()

        uses: actions/upload-artifact@v4

        with:

          name: mobilewright-report

          path: mobilewright-report/
```

## Android CI[​](#android-ci "Direct link to Android CI")

Swap the simulator setup step with:

```
      - name: Start Android emulator

        uses: reactivecircus/android-emulator-runner@v2

        with:

          api-level: 35

          script: npx mobilewright test --reporter list
```

## Cloud devices[​](#cloud-devices "Direct link to Cloud devices")

Running on macOS GitHub Actions runners is slower and more expensive than running against cloud devices. With [Mobile Next Cloud](https://mobilenext.ai/docs/docs/cloud/overview.md), your tests run on managed real devices and your CI can use a standard `ubuntu-latest` runner. See [Mobile Next Cloud](https://mobilenext.ai/docs/docs/cloud/overview.md) for setup.
