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
Tag Archives: android
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
[Android]Run android tests on x86 emulators in Azure pipeline
I’ve published [iOS]try out Azure pipeline for Xcode build including XCTest/XCUITest as an article about Azure pipeline and iOS build. I thought we can use arm architectured emulators in Azure environment for Android case as well as Travis or CircleCI, etc. But I noticed we could run tests on x86 emulators in Azure. PR: https://github.com/KazuCocoa/EspressoEnv/pull/18/files…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