これは ZOZO Advent Calendar 2022 カレンダー Vol.7 の 1 日目の記事です。
なぜか、ローカルで走らせたテストだと上手くいくのに、Bitriseで実行すると失敗する時ってありますよね。
そんな時に限ってBitriseのログを見るとFailing testsと書かれているだけで、原因が出力されていない。。。
そんな時は、Bitrise CLIを使ってXcodeのxcresultを確認しましょう。
補足. Bitrise CLIとは
Bitrise CLIは、Bitriseのオープンソースランナー。
Bitrise環境をローカルで再現・実行することが可能で、ローカルだと上手くいくけどBitriseだと失敗する場合の原因特定に便利です。
ちなみに実行にBitriseアカウントは不要です。
1. Bitrise CLIをインストール
Bitrise CLIのインストールはとても簡単で以下のコマンドを二つ叩けば完了します。
brew update && brew install bitrise
bitrise setup
2. bitrise.ymlをルートに置く
Bitrise CLIでリモートの環境を再現させるため、bitrise.ymlを実行ディレクトリのルートに置いておきます。
3. Bitriseでテストワークフローを実行する
bitrise.ymlに定義しているテスト用ワークフローを以下のコマンドで実行してください。
bitrise run [実行したいbitrise.ymlに定義しているテストワークフロー]
4. Xcodeが吐くテストログを取得する
テストが失敗すると以下のようなログが吐かれます。
** TEST FAILED **
If you can't find the reason of the error in the log, please check the xcodebuild_test.log.
<中略>
Exporting test results
$ cp "-a" "/var/folders/xxxx/Test-XXXX.xcresult" "/var/folders/xxxx/XXXX/"
そのログ内に以下のようなコマンドが書かれているのでターミナル上で実行してコピーします。
cp "-a" "/var/folders/xxxx/Test-XXXX.xcresult" "[保存したいディレクトリを指定]"
5. xcresultを開いて原因を特定する
あとは上記でコピーしたxcresultを開いて、原因を特定しましょう。
最後に
Bitrise CLI使えば、ローカルで実行できるので素早く確認できて嬉しいですね。
この記事が、テストコードがローカルだと成功するのにBitrise上だと失敗する人の一助になれば幸いです。