about
テストランナーFlankを使おうpart2。
BitriseでFlankを使ってiOSアプリのUITestを実行する方法です。
Bitriseで使う前にローカル環境で試したい方は以下の記事を参考にしていただければと思います。
Flankの使い方の基本的な事項もこちらで触れています。
iOSでFlankを使ってFirebase Test LabでUITest
BitriseにFlankのステップが公開されているのでこちらを利用します。
(Script書くのと手間は変わらないけれど)
環境
- Bitrise Stack Xcode 11.3.x, on macOS 10.14.6 (Mojave)
- Bitrise Flank Step v0.1.0
手順
ソースコード側の設定
リポジトリの設定
Bitriseから読み込む為にリポジトリにFlankのymlを含めます。
ここではflank.ios.yml
を/.flank/flank.ios.yml
に配置しました。
ディレクトリが増えるのでそのうち/.bitrise
以下に置きたい気持ちもありますね。
flank.ios.ymlファイルの設定
ここでの設定項目は以下です。
1. results-dir:
Firebase Storageのディレクトリを指定します。
予め作らなくても自動で生成されます。
2. record-video:
trueでUITestの録画機能がONになりvideo.mp4ファイルが生成されます。
3. timeout:
タイムアウトを設定します。
デフォルトは15分ですが、UITestは待ち時間も多いので最大値の30分にしておいて良いと思います。
4. test:
テストアプリをzipでアーカイブしたファイルへのパスです。
$BITRISE_TEST_BUNDLE_ZIP_PATH
を指定します。
こちらは後述する[BETA] Xcode Build for testing for iOS
ステップで生成される環境変数です。
5. xctestrun-file:
XCTestRunファイルへのパスです。
$BITRISE_XCTESTRUN_FILE_PATH
を指定します。
こちらも[BETA] Xcode Build for testing for iOS
ステップで生成される環境変数です。
yml完成
出来上がったymlファイルは、コメントアウトの行を除くと以下のようになります。
gcloud:
results-dir: flank-uitest
record-video: true
timeout: 30m
test: $BITRISE_TEST_BUNDLE_ZIP_PATH
xctestrun-file: $BITRISE_XCTESTRUN_FILE_PATH
flank:
汎用的な変数なので、環境問わずこちらで良いかと思います。
Bitrise側の設定
Env Vars
Google Credentials JSONを入れる環境変数です。
ない方は以下から作成できます。p12とjsonが選べる場合はjson形式でokです。
https://console.cloud.google.com/apis/credentials/serviceaccountkey
storageへ書き込む権限が必要です。
ここでは以下のファイルがダウンロードされました。
kanari3-develop-ios-55a55aaa55aa.json
こちらをエディタで開いてBitirseのSecretタブの環境変数にコピペします。
ここではGOOGLE_SERVICE_ACCOUNT_JSON
というKEYで登録しました。
※ 私はJSONをCodeSigningタブのGENERIC FILE STORAGEに登録しようとして3時間無駄にしました…
まるっと貼り付けます。
まるっと貼り付けるとはどういうことかというと。。。
こういうことです。Private Keyなど平文なので「Make it protected」化推奨。
Workflowの追加
UITestを実行する最低限のワークフローを組みました。
私は共通処理をまとめていますが、試しやすいように組んもらえればOKです。
Pod installなど、ビルド環境が整った後のステップに
[BETA] Xcode Build for testing for iOS
とFlank
を追加します。
Scriptステップは不要ですが、環境変数など気になる方はDebug用に入れてもよいかと思います。
「[BETA] Xcode Build for testing for iOS」ステップの設定
「Scheme name」の値がデフォルトでは$BITRISE_SCHEME
ですが、基本UITest用のSchemeがあると思うので指定してください。
私は$BITRISE_UITEST_SCHEME
という環境変数を用意してEnvにスキーム名を入れています。
Flankステップの設定
このような設定項目があると思うので見ていきます。
Google Service Account JSON
先程作成したSecretの環境変数を入れます。
Enter valueを選択すると「Select secret variable」のボタンが表示されるので、そこを選択してリストを表示します。
「Choose Secret Env Var」の一覧から、先程作成したGOOGLE_SERVICE_ACCOUNT_JSON
のKEYを探して選択すればOKです。
Config Path
flank.ios.yml
へのパスです。
ソースコード側で.flank/flank.ios.yml
に配置したので、BitriseのVagrant上だと以下になります。
/Users/vagrant/git/.flank/flank.ios.yml
Bitrise Build
ビルドすると特別なことはなく終了します。
ログの見方は以下と同じなので割愛しますが、テストレポートへのリンクが出力されます。
iOSでFlankを使ってFirebase Test LabでUITest - ビルドしたFlankのjarを実行
おわり
次はUITestの並列実行について触れたいと思います。