XCTest や XCUITest を CI で実行する時にリージョンや言語指定する
GitHub Actions で iOS アプリのテストを回そうとして、言語周りでハマった時の備忘録です。
経緯
個人で作ってる iOS アプリで CI で継続的にテストしたいという事で設定をしようとしたら、日本向けのアプリなのにタイムゾーンが GMT になってしまったり、言語設定が英語となってしまって、CI 上でだけテストが大量に失敗するという事に陥りました。解決するのに色々と設定を試したことをまとめておきます。
発生原因
普段開発に利用している Mac で Xcode を利用してテストをした時は、日本時間で日本語表示にしていました。これは、Mac 上の iOS Simulator の設定(一般 → 言語と地域)で使用言語が日本語で、地域が日本としていたためです。
Xcode で XCTest や XCUITest を実行する時には Schemes の設定が利用されます。デフォルト設定では、System の設定が利用されるようになっているため、iOS Simulator で設定している言語と地域が利用されます。CI環境ではその部分の設定していないので、デフォルト設定の英語圏の設定が利用されてしまいます。
App Language: System Language
App Region: System Region
また、特に何も設定をしない場合には GitHub Actions 上では Timezone が GMT となります。下記のように DateFormatter で Locale を .current
で指定している場合には、Date の表示の時に GMT の時間で表示されてしまう事で、日本時間から9時間ずれてしまいます。
let dateFormatter = DateFormatter()
dateFormatter.locale = .current
解決方法
Schemes 設定で日本仕様にすればよいみたいです。
Timezone を変更するには 環境変数 TZ を指定すればよいようです。
環境変数は Schemes の Arguments の Environment Variables で変更できます。
また、Test Plan 形式で設定を管理するようにした場合は、Configurations から設定を変えられます。多言語でのテストをするときは Schemes を言語毎に複数作成する必要がなくなるので、Test Plan 形式の方が便利そうですね。
Author And Source
この問題について(XCTest や XCUITest を CI で実行する時にリージョンや言語指定する), 我々は、より多くの情報をここで見つけました https://zenn.dev/mayuki12/articles/e3dcddcc04e2a9著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Collection and Share based on the CC protocol