Android エミュレータでGoogle アカウントに自動でログインする方法はないのか?

Play Billingなどを使う場合は、前もってgoogleアカウントにログインしておく必要があります。

エミュレータを初期化するなどすると消えてしまうのでその度ログインするのは面倒です。

今のところUI Automatorだけ成功

flutter_driverでなんとかする

現状では無理のようです。

flutter_driver can't interact with native elements · Issue #34345 · flutter/flutter · GitHub

flutter driver and android permissions · Issue #12561 · flutter/flutter · GitHub

ただ、個人的にはfind.text()とか使っていけそうな気がする。。。

Robo test

Test Labにアップロードしてテストする。flutter driveを使ったIntegration testが実行可能

Robo スクリプトはどう?

Robo テストを使ってみる  |  Firebase

注: Robo スクリプトの記録時に、テスト対象アプリの外部で行われた操作はキャプチャされません。たとえば、FacebookTwitter などのソーシャル アプリからのログインは記録されません。

無理そう。

UI Automator

複数のアプリの UI をテストできるらしい

成功したのでソースを公開

android_uiautomator_sample/GooglePlayTest.kt at main · na8esin/android_uiautomator_sample · GitHub

flutterで作ったbuttonもクリックできる

purchase画面の¥100ボタンのクリックに成功 · na8esin/flutter_in_app_purchase@d770a50 · GitHub

ただ、なぜかテキストがcontent-descに入る

f:id:ta_watanabe:20210714172611p:plain
uiautomatorviewerのdump結果

flutterとUI Automatorの連携は?

この辺りで議論中
Provide better support for UiAutomator · Issue #32062 · flutter/flutter · GitHub

Support UIAutomator tests of Flutter module in existing android app · Issue #53383 · flutter/flutter · GitHub

Android Test Orchestrator

uiautomatorviewerがjdk8しか対応してない

android - uiautomatorviewer - Error: Could not create the Java Virtual Machine - Stack Overflow

その上m1 macでは別の問題がある

Broken GUI of UIAutomatorViewer on MacOS Big Sur · Issue #911 · android/android-test · GitHub

swt.jarのダウンロードがわかりづらい

f:id:ta_watanabe:20210714155344p:plain f:id:ta_watanabe:20210714155340p:plain

当たり前かもしれませんが、armの方だとだめです。 間違って、ダウンロードして、uiautomatorviewerを実行したら、~/.swtを削除しないといけません。

espresso

email,passwordを入力するときは別のアプリになるから無理かもしれない。

flutter espresso

同上?

ソース内でベタっと書いてGoogle OAuthする

OpenID Connect  |  Google Identity  |  Google Developers

googleのUIを経由しないで、emailとpasswordを送信できるインターフェースが見つからない。 当たり前と言えば当たり前。

adb

インテントは起動できるみたいだけど、そこから先が不明。 ちなみに、RC_SIGN_IN