Open13

Shirates 試してみる

いけちょいけちょ

前提

AndroidStudioインストール&セットアップ済み
コンソールからadbが使える状態

追加でインストールしたもの

IntelliJ IDEA

いけちょいけちょ

Appiumインストール

npm install -g appium@next
appium driver install uiautomator2

これで、最低限Androidアプリのテストが実行できる状態

いけちょいけちょ

Android Settings Demo を実行してみる

  1. shirates-core をダウンロードしてIntelliJで開く
  2. 'testrun.global.properties' を開き、’android.profile=Pixel 6 API 33’ をコメントアウト
  3. 'android.profile=10' (手持ちの端末がAndroid 10)をコメントイン
  4. src/test/kotlin/demo/AndroidSetingsDemo.kt を開いてクラス名左の▷をクリックして実行
  5. テスト結果のコンソールからログファイルのパスをクリックして結果を確認する

Android10だと Airplane mode が初期状態では表示されないのでコケる

いけちょいけちょ

testConfig/android/androidSettings/screens に各画面の定義がjsonで定義されている
PageObjectPatternっぽい

"[Network & internet]": "",

[Network & internet] というニックネームで、'Network & internet'というテキストのセレクター
使用する時は

it.tap("[Network & internet]")

という感じで使う。
ニックネームの囲いは [ ] { } の2パターンあるが

"[ ]" are recommended for static content. "{ }" are recommended for dynamic content.

とのこと。
詳しくは selector_nickname.md を参照

いけちょいけちょ

テストを書く際、画面要素を確認するのは Appium Inspector

appium &

で、Appiumサーバーを起動

Appium Inspector も起動して、こんな感じでCapabilitiesを指定して Start Session

いけちょいけちょ

DeepLinkでアプリが起動するか確認する時は
it.terminateApp()でアプリを一旦終了して

                    appiumDriver.executeScript(
                        "mobile: shell",
                        mapOf(
                            "command" to "am",
                            "args" to listOf(
                                "start",
                                "-a",
                                "android.intent.action.VIEW",
                                "-d",
                                "'[DeepLinkで起動するURL]'"
                            )
                        )
                    )

でamコマンドを直接実行することでDeepLink発火できる。
あとはscreenIsで画面が開かれているか確認する

(appiumDriver.get()はアプリでそのリンクをハンドリングしようとして失敗するため使えなかった)

いけちょいけちょ

iOS

Carthage をインストール (appium-doctorが必要って言ってた)
brew install carthage

Driver をインストール
appium driver install xcuitest

いけちょいけちょ

ios.profile=[UDID]
だとちゃんと選ばれないことがある
ios.profile=iPad Pro (12.9-inch) (6th generation)
が正解

いけちょいけちょ

iOSのテストで AppiumProxy.getSource() timed out がでた時はdriverをアップデートしてみる
appium driver update xcuitest