CI環境でiOS版Firebase Test Labの自動化をする手順をまとめました。
Bitrise前提で書いてますが、gcloudコマンドを使っているのでどのCI環境でも応用できます。
【前提】Test Lab for iOSで出来ること
Google データセンターでホストされているデバイス上で実機Unit Test, UI Testが可能。
AndroidでサポートされているRobo テストはiOSではサポートされてないが、手動だと辛い複数端末テストがクラウド上で出来るだけでも便利。

動画でテストの実行内容を確認可能

理解を深めるには、公式リファレンスに載ってる通り
- XCTestの.zipファイルをコンソールに上げる方法で試す
- gcloudコマンドでテスト実行
- CI上でgcloudコマンドでテスト実行
の手順で進めると良い
gcloudコマンドでテストを自動化する
CLIでテストを実行するには、GCPのコマンドラインツールである gcloudコマンドを使う
手順
- gcloudコマンドのインストール(プリインストールされている環境なら不要)
- gcloud authコマンドでGCPのサービスアカウントキーを使った認証を行う
- gcloud configコマンドでFirebaseのproject idを紐付ける
- テスト実行
Script全体はこんな感じ
# !/bin/bash
set -ex
# install gcloud
curl https://sdk.cloud.google.com | bash
source $HOME/google-cloud-sdk/path.bash.inc
# setup project
curl -o /tmp/sacc_key.json $BITRISEIO_SERVICE_ACCOUNT_KEY_URL
gcloud auth activate-service-account -q --key-file /tmp/sacc_key.json
gcloud config set project $FIREBASE_PROJECT_ID
# run test
gcloud firebase test ios run --test "${BITRISE_TEST_BUNDLE_ZIP_PATH}" \
--device model=iphone8,version=11.4,locale=ja_JP \
--device model=iphonex,version=12.0,locale=ja_JP \
--device model=iphonexsmax,version=12.1,locale=ja_JP \
--device model=iphonese,version=11.4,locale=ja_JP
補足1: 認証
Firebaseのドキュメントに書いてあるGoogleアカウントを使ったOAuth認証の他、GCPのサービスアカウントキーを使った認証も可能。
curl -o /tmp/sacc_key.json $BITRISEIO_SERVICE_ACCOUNT_KEY_URL
GCPのサービスアカウントキー(JSONファイル)をBitrise上にアップロードして、そのURLからキーをDLして認証している
Bitriseの場合、 [Code Signing] > [GENERIC FILE STORAGE]タブ
からアップロードが可能。URLを示す環境変数が生成される
※Code Signingタブのセキュリティについてはこちら
補足2: テスト実行
"${BITRISE_TEST_BUNDLE_ZIP_PATH}"
Bitriseのステップ [BETA] Xcode Build for testing for iOS
を使って生成したテスト .zipファイルのpathを指定している
Bitriseを使っている場合
iOS Device Testing
ステップを使えば簡単にTest Labを使ったテスト実行と確認が可能(全部実装し終わった後に知った。)
https://devcenter.bitrise.io/testing/device-testing-for-ios/
参考URL
https://discuss.bitrise.io/t/how-to-run-android-tests-on-firebase-testlab/2192
https://swet.dena.com/entry/2018/12/02/000000