[Android][Appium] Page Source of Jetpack Compose

Google announced Jetpack Compose to simplify and programable UI development. I thought it was like Flutter then 🙂 I wondered if we can get view hierarchy correctly via the feature since if the feature is like Flutter, it is not on full Android view system. Espresso and UiAutomator probably cannot find element provided by it.…More

A couple of days ago, I had a conversation about Android tests on Twitter. I would leave it here a note. The conversation was: How to run UI tests in order Is there any good way to make them stable? How to get a system dialogue via Espresso? We discussed: It’s better to use RuleChain…More

[Appium][Flutter]Espresso driver x Flutter

I have updated my sandbox repository for Flutter x Appium. Update test app based on Flutter 1.0 Update test scenarios for it In Android, I could launch and through a simple scenario with UIA2 driver. But I could not succeed to launch it with Espresso driver. Below log is here Something happened with instrumentation combination……More

[Appium][Espresso]Using View Tag to test for Android on RN

I investigated before about testID feature if ReactNative [ReactNative][Appium]testIDの振られ方. Then, I found the framework maps the testID as android view tag. link The view tag is available via Espresso framework. Appium had not accessed the element by uiautomator2-driver since it uses uiautomator framework. But, appium-espresso-driver has been published. The driver can access to Espresso framework.…More

[Appium]appium-doctorを぀かお環境の確認を行う

Selenium/Appium Advent Calendar 2018の19日目の蚘事です。空いおたので、たたちょっずしたtipsを茉せようず思いたす。 今日はAppiumには環境構築時に蚭定を確認できる appium-doctor ず呌ばれるコマンドラむンツヌルを玹介したす。䜕かのOSSなりのツヌルを利甚する際、最近はよく xxxx-doctor ず呌ばれる環境確認甚のコマンドラむンツヌルをよく芋かけるかず思いたす。Appiumも前々から同様なdoctorツヌルを持っおいたした。 v1.6たではこの appium-doctor は必須環境のみを確認するツヌルでした。䟋えばAppium自䜓の実行環境、AndroidやiOSに察しおAppiumを実行できる環境を確認するこずができおいたした。あず、問題があった時に可胜な限り自動でfixさせるautofixの機胜もありたした。 v1.7以降ではオプションずしお利甚される他のツヌル矀の確認もするようにしたした。 珟圚のmasterでは以䞋の通りの結果を埗るこずができたす。v1.7以降にも少し確認する内容を増やしたり文蚀を調敎したので、少し珟状の npm install -g appium-doctor で入手できるものずは異なる衚瀺、結果かもしれたせん。 この拡匵により、画像による芁玠怜玢を行うために必芁な opencv4nodejs が入っおいるか、などが確認可胜です。iOS Simulator限定ですが、あらかじめ各皮permissionを操䜜するためにplistを盎接操䜜するAppleSimulatorUtilsも利甚可胜になりたす。いく぀かのpermission操䜜はもずからサポヌトしおいたのですが、これにより、より倚くの皮類のpermissionを調敎可胜です。 私は以前、このutilsを䜿いテスト実行時に䞍芁なpermission dialogを抑制するためにあらかじめ暩限を蚱可しおおく、などしおいたした。毎回、xxxのダむアログが衚瀺されおいるず閉じるずいうようなXCTestでも必芁になる蚘述を、Simulatorだけですが省くこずができたす。 Android/iOS/オプションの蚭定の䞭には手動で蚭定する必芁のあるものもいく぀かありたす。そのためautofixにより党お自動で蚭定、ずたではいかないのですが、手探りで必芁なラむブラリを手に入れおいったり、䜕かラむブラリのむンストヌルが必芁になる(䟋えば opencv4nodejs など)゚ラヌに出くわしお初めおその察応をする、ずいうようなこずを枛らすこずができるものずなりたす。 あたり倧きな機胜ではないですが、初めの䞀歩であったり、環境確認の時に利甚しおいただけるず幞いです。More

[Appium][Android]Set DataPicker and TimePicker via Espresso Driver (Eng)

This post is English edition of [Appium][Android]Set DataPicker and TimePicker via Espresso Driver which is for Selenium/Appium Advent Calendar 2018 in Japanese. mobile command Appium provides mobile command to conduct native commands in order to extend Appium actions using native features. In general, we follow the W3C webdriver spec. We add new endpoints which have…More

[Appium][Android]Set DataPicker and TimePicker via Espresso Driver

Selenium/Appium Advent Calendar 2018、17日目の蚘事です。空いおいたので、ちょっずしたtipsずいうこずでAppiumの mobile command を玹介しようず思いたす。(English edition is available in [Appium][Android]Set DataPicker and TimePicker via Espresso Driver (Eng)) AppiumはW3Cに沿った基本的なコマンドのほか、iOS/Androidなどに特化したコマンドを拡匵しやすくするために mobile command を定矩しおいたす。これは、䟋えばW3Cの定矩には圓おはたらない䞊に、AndroidやiOS固有の機胜を拡匵するためによく䜿っおいたす。 埓来の機胜远加の方法ずしおは、各皮コマンドは党お䜕らかのURIにマッピングされおいたした。 ただ、特定のDriverでしか䜿うこずはないのに必芁以䞊にURIを乱立させたくはありたせん。保守が難しくなっおきたす。 そのため、 mobile: ずいうprefixを぀けたコマンドを文字列で定矩し、このように各々の固有な機胜を定矩するようにしたした。Androidだず adb コマンド、iOSだず siri の機胜を䜿ったコマンドなどが拡匵されおいたす。 ここでは、それらで定矩されたAndroidの2぀のコマンドを玹介しようず思いたす。 DatePickerずTimePicker 最近ではAndroidだずDatePicker, TimePicker, 任意のpublic method を呌び出すこずができる backdoor などの機胜が远加されたした。 これらの機胜は、Appium 1.10.0 などで automationName: espressoず指定するず利甚可胜な、 Espresso Driver に远加されたmobile commandです。技術的にはEspressoベヌスだからできるようになったこずです。 これらは今たではuiautmaotor経由だったためにできなかった/䞍安定だったずころを解消する可胜性が高いです。 テストコヌド 先ほど埋め蟌んでいたanimation gifは、すでにruby_lib_coreに甚意しおいる以䞋のテストコヌドを動かしおいる時のものです。実際に mobile: setDate…More

[Android]Androidテスト党曞は是非手にずっお読んでほしい1冊

Androidテスト党曞が発売されたしたね ずおもめでたい。 私はアヌリヌアクセスの段階で野次銬のようにいく぀かコメントさせおいただいたりしたした。たた、掚薊コメントずしおトップにも蚘茉しおいただいお、倧倉ありがずうございたす。 個人的には、このような曞籍が私の孊び始めの頃にあればずおも知の高速道路を走れたのでは感が満茉のものだず感じたす。”テスト”ずいう䞀蚀で䞞っず党䜓を包むのではなく、いく぀かレむダヌも分け぀぀分解しおいるのもずおも良いですよね。様々なレむダヌで目的に合わせながらテストの実行環境が敎っおいくであろうこれからの垂堎ですが、それらを利甚するにあたり基瀎ずなるものだず感じおいたす。 なおここでいう”テスト”は、䞀埋、開発者テストやテスト゚ンゞニアによりテストコヌドを曞いおいくずいう範囲での話に焊点を圓おたす。 2, 3ç«  倚くは実装やアヌキテクチャに䟝存するこずも倚い話ですね。この曞籍では、巷でみる最近よく䜿われるラむブラリを䜿ったテストの曞き方のほか、テストタブルの考え方たで螏み蟌んだ箇所がありたす。そのため、単なるツヌルの䜿い方ではなく、その必芁性や甚途などたで孊ぶこずができるのではないでしょうか。それらはAndroidずいうものに限らないずころも倚いので、iOSやそのほかのWeb系の話に流れたずしおも、転甚のきく知識ずなるかず思いたす。 ここはコヌドも倚く出るので、読みながら写経しながら進めるこずが䞀番良いず感じおいたす。 4, 5, 6ç«  UIテストのEspresso, Appiumを䜿った話。 これら、結構比范構造で玹介される堎面も芋たすね。同じ”UIテスト”ずいう蚀葉ずしお。ただ、倚少はカバヌする分野がかぶっおたすが、私は党く察立するものではないず思っおいたす。Appium自䜓、Espresso/uiautomator2を経由しお色々ずした操䜜を実珟しおいたすし。 そこらぞんも説明されたり、具䜓的な実装の話たで螏み蟌たれおいたす。 最近だず AppiumのAIによる芁玠セレクタを詊しおみたら、自動テストの未来を感じた でも取り䞊げられたしたが、Appiumをモバむルアプリ操䜜のフレヌムワヌクずしおツヌル矀の間に挟むこずで、それよりも䞊のレむダで様々な取り組みを実斜できるなどもありたす。これもEspressoだけを䞭心ずした圢匏で、test.ai のような䌁業が独立しお取り組むには難しい面もありたすね。 Espressoの方がずおも良い堎面も倚くありたす。そのため、私は Test automation design for Cookpad’s global Android app ずいうブログを、クックパッドの海倖事業郚のペヌゞに投皿したした。そこでは、EspressoもAppiumも(埌者は将来的に、ですが)䜿う流れを茉せおいたす。 適材適所で䜿おう、ずいう話ですね。個人的な日本・䞖界での掻動をベヌスにするず、䞡方を行き来できる人は非垞に限られおいお、そういう人がいる組織は方針の遞択など含めおずおも匷いのだず感じたした。私が芋た䞖界の䞭では、玔粋なAndroid開発者だけしかいない開発者人数も限られおいるずころは倧䜓はEspressoですが、Test/QA゚ンゞニアをも぀ずころは倧䜓はAppiumを利甚しおいるようです。その䞡方を行き来できる人は遞択しおいるぜいです。ただ、Agodaのように色々ず刀断を倒しおいるようなずころもいく぀かあるようですね。 いずれも、Espressoを䜿うずころは単機胜(or 1぀のView)における実装の確実さを担保しおいきたいずいうモチベヌションが倧きいように思えたす。私たちもそんな感じでした。ナヌザのシナリオや、実環境に近しいずころを察象にしようずしたらAppiumの比率が高くなるずいう感じでしょう。HeadSpinのように、物理的にもよりナヌザに近しいずころのテストを䞖界各囜で実斜できる環境では、Appiumの方が倚数のようです。 7ç«  JUnit5の話ですね私もいく぀か觊ったこずがありたすが、ただJUnit5を少なくずも10人以䞊でガシガシ開発しおいるような組織にはほいそれず導入はできなかったですが。。(JUnit4 のRuleを䜿ったものもそれなりに持っおいるプロゞェクトですし) JUnit5のいく぀かのアノテヌションなどは個人的にも導入しお行きたいず思っおいたものです。なので、JUnit5が成熟しお、Androidの暙準ラむブラリ呚蟺でも特に壁なく利甚できるずころたでいくず良いなず思いたす。 Jetpackずしお䞞っずした開発ツヌルの公匏化が進みたしたし、その䞭にJUnit5が入り始めるずガッず䞖界は進みそうだず感じたす。 8ç«  CI/CD環境はモバむルの堎合は特に、最近も頭を抱えたすね…CircleCIは鉄板だず思いたす。OSSでしか觊れおはないのですが、最近だず性胜改善もだいぶ芋られるようですね。 私は、1000件皋床のnon-UIテスト、40件行かないくらいのEspressoによるUIテストを実装しおいたプロゞェクトにおいお、lint, 党テストをPush毎に、10分以内で党おを終わらせるためにx3 Speed Up Android CI at Cookpadずいう構成を取っおいたした。その結果、倚くの堎合は6分~7分皋床で、テストなど含めお開発のフィヌドバックサむクルを回せるようにしおいたした。この曞籍でいう、”コミットステヌゞ”でEspressoによるUIテストも含めお完了させおいた、ずいう感じです。ただ、その環境はAWS䞊で動䜜するJenkin環境でした。 それずは別に、将来的には定期的にUIテストの、ナヌザ受け入れレベルのものを実斜したいずも思っおいたした。が、そこらぞんは環境の成熟など含めおただ手軜ではないですね。。。これにより、手動テストステヌゞの倚くは省ける + パフォヌマンス系のあたいもここで取埗できる状態には持っおいけるず思いたす。 先にも曞きたしたが、これからは甚途に応じたテスト実行環境が成熟しおいく時期だず思うので、読者の皆様は埅っおおいおもらえるず良さそう。私はそういうずころで少しの間、時間を䜿うこずにしたした。 䜙談 いく぀か私も情報の敎理のためにAndroid向けの砂堎repository ずか、iOS向けの砂堎repository…More

[Android] AndroidX for tests and Robolectric4

A couple of days ago, androidx.test libraries were published, finally. https://developer.android.com/training/testing/release-notes Then, Robolectric4 was also published. https://github.com/robolectric/robolectric/releases/tag/robolectric-4.0 The benefit of Robolectric was making android test fast with some mocking Android APIs. Meanwhile, the mocking leaded wrong test results, sometimes. I faced many times such case. According to the release note, Robolectric has also a bunch…More