概要
無料枠でもFirebaseTestLab使って15台/day(3台*5回)をランダムテストとespresso使ったinstumentalTestを実行するようにしておくと便利かも.
Firebase Test Labとは
Firebaseが提供している一つのサービスで, firebaseが管理してる実際の端末, エミュレータ上でテストを実行し, 動画/スクリーンショット/logcatとして残してくれるサービス.
1度に3台まで1日あたり15台までを無料枠で利用することができる.
定期的に実行できる様に環境を整える
CircleCIでの定期実行の仕方についてのメモ.
.circleci/config.yml に以下のWorkFlowを追加する.
時間の指定はUTCになるので日本時間では9時間足しておく.
triggers:
- schedule:
cron: "0 1,4,7,10,13 * * *" # UTC. 10, 13, 16, 19, 22
jobs:
- hoge # 定期実行したいjobをつなげていく
TestLabをremote実行できる状態を作る
login用のAuthenticationを作成する
コンソール画面から認証用のjsonを作成しておく.(下記の画像を参照)
「サービスアカウント」 => 「サービスアカウントを作成」 から, Test Labの管理者のアカウント作成を行い, formatをjsonとしてダウンロードする.
gcloud CLIの環境を作成する
CircleCIが用意しているDocker Image(circleci/android:api-26-alpha)はubuntuベースなので下記URLの手順にそってgcloud SDKをインストールできる.
https://cloud.google.com/sdk/downloads#apt-get
#!/bin/sh
export CLOUD_SDK_REPO="cloud-sdk-$(lsb_release -c -s)"
echo "deb http://packages.cloud.google.com/apt $CLOUD_SDK_REPO main" | sudo tee -a /etc/apt/sources.list.d/google-cloud-sdk.list
curl https://packages.cloud.google.com/apt/doc/apt-key.gpg | sudo apt-key add -
sudo apt-get update && sudo apt-get install google-cloud-sdk
sudo apt-get install google-cloud-sdk-app-engine-java
echo $TEST_LAB_AUTH | base64 --decode > test_lab_auth.json
gcloud auth activate-service-account --key-file test_lab_auth.json
TestLabを実行するshellを組む
Test Labではパラメータコマンド実行時のパラメータでdeviceの指定やroboテスト, instrumentalTestのどちらかをするなどの指定指定をできるがyamlに定義しておくことができる.
https://firebase.google.com/docs/test-lab/command-line?hl=ja
# 無料枠を最大限使うには、virtual:2, pyhsical:1だと、5 test/day できる。
# 1test => all test codes
quick-robo-test:
app: mobile/build/outputs/apk/mobile-develop-debug.apk
type: robo
max-steps: 100
timeout: 90s
async: true
device:
- {model: Nexus5X, version: 26, locale: ja}
- {model: Nexus6P, version: 23, locale: ja}
- {model: D6603, version: 21, locale: ja}
quick-inst-test:
app: mobile/build/outputs/apk/mobile-develop-debug.apk
test: mobile/build/outputs/apk/mobile-develop-debug-androidTest.apk
type: instrumentation
async: true
device:
- {model: Nexus5X, version: 26, locale: ja}
- {model: Nexus6P, version: 23, locale: ja}
- {model: D6603, version: 21, locale: ja}
上記のyamlをtest_lab.yml
と定義した上で下記のコマンドでtestを実行できる.
gcloud firebase test android run test_lab.yml:quick-inst-test