🤮

Apple Silicon 搭載 Mac で iOS Simulator を起動するとデフォルトの言語環境がMacのシステム設定に従う件

2022/02/24に公開

ようやく M1 Pro Mac が届きサクサク快適に動く環境で開発頑張るぞヤッフーと思っていた矢先に、UITest が落ちまくる現象を発見しテンションが下がっている筆者です。

UITest が落ちる原因はタイトルの通りです。M1 Mac ではプロセッサーが arm64 になって iOS Simulator の動作環境が変わったことが影響しているのか、起動時のデフォルト言語環境が Mac のシステム環境設定で指定されている言語に従うようになりました。その結果、UITest が英語環境前提で組まれており、Macの言語環境が日本語である場合、XCUIElementを取得できずにテストが落ちるようになりました。

言語によらずXCUIElementを取得できるように UI コンポーネントに Accessibility Identifier をつければいいじゃんというのもあるのですが、このテクニックはWKWebView内の要素には使えません。ので、iOS Simulator の言語環境を制御するか、テストコード側で Locale を判別してXCUIElementのキーの言語を切り替えるなど対応が必要です。

UITest だけ言語環境を固定したいならば、基本的には Scheme Edit でApp LanguageApp Regionを指定すれば良いです。が、この方法ではWKWebViewの Locale は制御できませんし、システムが出すアラート(ダイアログ)の言語も制御できません。iOS Simulator全体の言語環境に依存します。そのため、読み込むページの言語環境を別途指定するか、なんとかしてiOS Simulator全体の言語環境を制御する必要があります。

現在進行形で対処方法の調査をしていますが、「こうするといいよ」などノウハウがあるならば教えていただきたいです!

Discussion