🐙

Android アプリの起動チェックを行う GitHub Actions ワークフロー

2023/10/12に公開

ネタです。

GitHub Actions の runner 上のエミュレーターで、アプリが正常に起動できるかのみをチェックするワークフローです。RenovateDependabot のようなボットが作成するプルリクで動かすと、少なくとも起動できるところまではこのワークフローで担保できるのでよいかも。

普通に Espresso 等で起動を確認するテストコードを用意してもよいのですがネタなのでw

name: Launch Check

on: pull_request

jobs:
  check:
    runs-on: macos-latest
    steps:
      - name: Check out
        uses: actions/checkout@v4
      - name: Set up JDK
        uses: actions/setup-java@v3
        with:
          distribution: 'zulu'
          java-version: 17
      - name: Build with Gradle
        run: ./gradlew assembleDebug
      - name: Set up Maestro
        run: export MAESTRO_VERSION=1.33.1; curl -Ls https://get.maestro.mobile.dev | bash
      - name: Get apk path
        id: apk-path
        run: echo "path=$(find . -regex '^.*/build/outputs/apk/.*\.apk$' -type f | head -1)" >> $GITHUB_OUTPUT
      - name: Create test code
        run: |
          tool="$ANDROID_SDK_ROOT/cmdline-tools/latest/bin/apkanalyzer"
          application_id="$("$tool" manifest application-id '${{ steps.apk-path.outputs.path }}')"
          echo "appId: $application_id" >> ./flow.yaml
          echo '---' >> ./flow.yaml
          echo '- launchApp' >> ./flow.yaml
	  echo '- assertVisible: Hello, Android' >> ./flow.yaml # 起動後の画面に表示される文言を指定
      - name: Run Maestro
        uses: reactivecircus/android-emulator-runner@v2
        with:
          api-level: 28
          target: 'google_apis'
          arch: 'x86'
          profile: 'pixel'
          disable-animations: true
          script: |
            $ANDROID_HOME/platform-tools/adb install '${{ steps.apk-path.outputs.path }}'
            ~/.maestro/bin/maestro test --no-ansi ./flow.yaml

Maestro を利用して起動の確認を行っています。ワークフロー上で動的に CLI のインストールおよびテストコードの生成をしているので、このワークフローの導入にあたって特に手元の Android プロジェクトに手を加える必要はありません。

この例では runner に macos-latest を指定していますが、larger runners を利用すると実行時間の短縮が望めそうです。また actions/checkout 等を利用して Gradle の成果物のキャッシュもしておいた方がよいでしょう。

larger runners を利用する際は次の設定は忘れずに。
https://github.blog/changelog/2023-02-23-hardware-accelerated-android-virtualization-on-actions-windows-and-linux-larger-hosted-runners/

Discussion