Firebase Test Labでスクリーンショットを撮るために cloudtestingscreenshotter_lib というライブラリが提供されています。(ライブラリのDL、導入方法などは下記公式ページへ→ Firebase Test Lab インストゥルメンテーション テストのスクリーンショットを作成する)
ScreenShotter.takeScreenshot("main_activity", activity)
↑のようなコードでスクリーンショットを撮ることができるのですが、引数で指定しているスクリーンショット名(上記のコードでは "main_activity"
)に日本語を使ったらダメだったというお話です。
何故かテストが「不確定」となって終わってしまう
Firebase Test Labを定期実行させているのですが、いつぞやのタイミングから「不確定」というステータスでテストが終わってしまうようになりました。
CI上のログから ERROR: (gcloud.firebase.test.android.run) Firebase Test Lab infrastructure failure: Exhausted test run attempts というエラーメッセージが出ており、Freeプランで使っているから何か制限をオーバーしたのかな?と思ったりしたので、数日様子見。
しかし数日経っても状況は変わらずで、Consoleからもこれ以上の情報を得ることができず、途方にくれてました。
Firebase Slackコミュニティで質問してみた
どうしようもないので、「明確な結果が得られずお困りの場合は、Firebase Slack コミュニティの #test-lab チャンネルにご参加ください。」 とあったのでSlackで質問してみました。
Firebase Community Slackには、各サービスごとにチャンネルがあり、そこの #test-lab で質問をしました。
内容としては
ERROR: (gcloud.firebase.test.android.run) Firebase Test Lab infrastructure failure: Exhausted test run attempts
というエラーが出てしまっています。フリープランで使ってるけど、上限はオーバーしてないんだけど
みたいな感じです。(ちなみにめっちゃ拙い英語で送りました)
Googlerから返信が来た
1日もしないうちに返信が来ました。
内容としては
「スクリーンショット名をasciiにして、もっかい試してほしい」
みたいな感じで、 This is the error we see on our side: (エラー文)
とFirebase側のエラーの内容も添付してくれました。(SlackのDM)
エラーの内容を見ると、いつぞやのタイミングで追加したテストで、スクリーンショット名に日本語が含まれているやつが原因っぽいことがわかりました。
スクリーンショット名はASCII文字で
すぐさまスクリーンショット名に日本語を指定しているところを直して、Firebase Test Labでテストを走らせたら、問題なく実行されました。
スクリーンショット名には日本語など含ませず、ASCII文字でやる必要がある ということがわかりました。
まとめ
-
cloudtestingscreenshotter_lib
でスクリーンショットを撮るときは、スクリーンショット名に日本語を指定してるとダメだった - FirebaseでわからないことがあったらSlackで質問をするとGooglerが返信してくれる