😎

GitHub ActionsのM1 Runnerでスナップショットテストを動かす

2024/01/14に公開

前提

  • 個人で開発しているアプリにスナップショットテストを導入したい
    • pointfreeco/swift-snapshot-testing
    • 正確にはすでに導入されているが、ローカルでしか動かせていないので、CI環境に乗せてPRごとにテストが動くようにしたい
  • ローカルの開発環境はApple Siliconマシンである

GitHub Actionsのジョブ設定

name: Snapshot test
on:
  pull_request:
    branches: [ "main" ]
jobs:
  build:
    name: Run snapshot test
    runs-on: macos-latest-xlarge
    steps:
      - name: Checkout
        uses: actions/checkout@v4
        with:
          submodules: recursive
      - name: Setup Xcode
        uses: maxim-lobanov/setup-xcode@v1
        with: 
          xcode-version: 15.1
      - name: Set IDESkipPackagePluginFingerprintValidatation
        run: defaults write com.apple.dt.Xcode IDESkipPackagePluginFingerprintValidatation -bool YES
      - name: Run Xcodebuild Test
        run: set -o pipefail && xcodebuild test -workspace App.xcworkspace -scheme AppSnapshotTests -sdk iphonesimulator -destination 'platform=iOS Simulator,name=iPhone 15,OS=latest' -resultBundlePath TestResults.xcresult | xcpretty
        env:
          SNAPSHOT_REFERENCE_DIR: ${GITHUB_WORKSPACE}/AppSnapshotTests/__Snapshots__
      - name: Upload xcresult
        uses: actions/upload-artifact@v4
        if: success() || failure()
        with:
          name: "TestResults.xcresult"
          path: "TestResults.xcresult"
          compression-level: 1

ちなみにM1 Runnerは無料枠ないです

Discussion