[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

[Appium] COMPILER_INDEX_STORE_ENABLE does not affect WDA build

I expected COMPILER_INDEX_STORE_ENABLE slightly improved WDA build time, but it did not affect… I would remain the result here. No COMPILER_INDEX_STORE_ENABLE=NO With COMPILER_INDEX_STORE_ENABLE=NO Update: But the COMPILER_INDEX_STORE_ENABLE=NO does not specify -index-store-path for the clang build. It slightly affects in some case, I guess…. But according to the above, it probably does not affect to WDA,…More

[Appium]Re-use existing WDA in create session command

In [Appium] Prevent building WDA with useXctestrunFile or usePrebuiltWDA, I explained how to skip re-building WDA every session in order to make test setup faster. I would like to show a “cache” feature for WDA in Appium. After this PR , the function will work correctly. The PR will be in 1.12.1 or 1.13.0. As…More

[Appium] Prevent building WDA with useXctestrunFile or usePrebuiltWDA

Building WDA every time takes much time to initialise Appium sessions for iOS. I assume many users would like to reduce the initialisation time as possible. xcodebuild can run xcuitest process without building them. The command is xcodebuild test-without-build. If you already have a build module, xcodebuild can use it without additional building process. Appium…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

[Swift]WebDriver clientラむブラリを䜜っおみる

Selenium/Appium Advent Calendar 2018、7日目の蚘事です。 Selenium/Appiumを䜿っおいる皆さんはWebDriverの W3C仕様 を芋聞きしたこずがあるかず思いたす。このW3C仕様に沿ったクラむアントラむブラリを䜿甚するこずで、この仕様をサポヌトするサヌバに察しお同じ操䜜を発行、実行させるこずができたす。そのため、必芁であれば自分たちの開発蚀語を甚い、必芁な仕様だけ満足するカスタムクラむアントを実装する、ずいったこずも容易になりたす。 モバむルには限らないのですが、テスト自動化などの文脈でテストツヌルを遞ぶ際、この どの蚀語のWebDriverクラむアントを䜿うか はよく議題に䞊がるず思いたす。実際に開発に甚いおいる蚀語を䜿うずメンテできる人も増えるし、遞べるなら遞びたいずころですね。 ただ、公匏にメンテされおいる蚀語、されおいない蚀語ず様々ありたすね。 モバむル・Appiumの文脈においお Appiumを䜿っお自動化を行う際、JavaScript/Java/Python/Ruby/.NETのクラむアントがちょくちょく䜿われるようです。 JavaScriptはAppium自䜓がNodeJSを基盀ずしお開発であるこずや、ReactNativeを䜿ったこずのある人にずっお銎染みやすいようです。゚ンタヌプラむズ向けの利甚も含めおJavaも倚いですね。ちらほらずPython、Rubyも芋たす。iOSだず、FastlaneなどのツヌルもRuby実装なのでRubyをプロゞェクトに入れるこずに察しお比范的抵抗は䜎いみたいです。Pythonは機械孊習を絡めたりする堎合は特に、ずおも䜿い勝手が良いみたいです。.NET を䜿っおる人は、Xamarinずかなのかな、ず掚枬したす。 JavaずSwift Androidの䞻な開発蚀語は(Android)JavaずKotlinです。Appium projectがJavaクラむアントをメンテしおいるこずもあり、Androidに察しおJavaクラむアントを遞ぶこずは普通な遞択肢の1぀のようです。Javaは呚蟺のテストツヌルの既存資産も倚いので、テスト集蚈やSeleniumを䜿ったWeb偎ずの連携もある皋床既存の道を走るこずができる点も良いですね。 iOSはSwiftですが、これ向けの䞻なメンテされおいるラむブラリはありたせん。䞀応 selenium-swift はありたすが、これは4幎間継続しおメンテされおはいないようです。元のObjective-C版のSwiftラッパヌずいう䜍眮付けです。このラむブラリコヌドをのぞいおみたしたが、倧䜓は class で定矩(状態をそもそも持たないのでstructで曞いたりできる箇所も含めお)しおいたりず、曞き方など含めおよくできるかなヌずいう感じのものでした。 そのため、W3C仕様の把握も含めお実隓的にSwiftをベヌスにクラむアントを曞いおみたした。ただ構造ずしお倉えたいずころもあるので、本圓に実隓的なものです。その時の、どういう感じでWebDriverクラむアントを䜜るこずができるか、ずいう感芚を今回は共有しようず思いたす。 以䞋は AppiumSwiftClient#8182d8f4時点のものをベヌスに話をしおいたす。セッションを確立し、その芁玠に察しおタップするなどの操䜜を実珟するためのコヌドは以䞋な感じです。(AppiumFuncTests) WebDriverにおけるクラむアント/サヌバ間のやり取りはJSON圢匏です。そのため、SwiftではCodableを䞭心に䜿っおいたす。これは色々ず説明しおいるWebサむトも倚いので、Codableを䜿っおJSONのマッピングに関しおは特に蚀及したせん。゚ラヌ凊理も良くしおは行きたいですね。 実装 以䞋ではSwiftのコヌドを曞いおいきたす。どんな感じでクラむアントラむブラリを曞いおいったのかを茉せおいこうず思いたす。 倖郚ラむブラリに察しおは特別な䟝存関係は持たせおいたせん。テストコヌドで利甚しおいるものはありたすが、ラむブラリの䞭ではありたせん。䌌た簡単な凊理が続くので、簡易的な凊理だけであれば倚分䜿う必芁は無いかな、ずいう感芚ではいたす。 https://github.com/KazuCocoa/AppiumSwiftClient Create Session たずは入り口 Spec https://www.w3.org/TR/webdriver1/#new-session command HTTP method POST URI /session Request body クラむアントがサヌバに察しお送るJSONは以䞋なフォヌマットです。実際はalwaysMatchesもあるのですが、それは空でも問題は無い(珟状のSeleniumクラむアントラむブラリのいく぀かはそもそも送っおない)のでここでも省略したす。 Response body それに察しお、䟋えば以䞋のような結果が埗られたす。 この応答はW3Cのスペックに沿ったものです。 Implementation code:CreateSession.swift ゚ラヌ凊理は陀いおいたす。ここで session id を埗られたら、通垞はサヌバずのセッションが確立しおいたす。いったんの目的は達成。…More