[maestro] prepare Maestro for an iOS real device

Not complete, but this diff let Maestro run on a real device https://github.com/KazuCocoa/Maestro/compare/main…KazuCocoa:Maestro:real-device?expand=1 with a similar way of https://appium.github.io/appium-xcuitest-driver/latest/guides/run-preinstalled-wda One weird thing is that the server started listening to the port after a while when I launched the app via the app icon on the screen or without xcodebuild. This possible blocking behavior was weird…More

[Appium][maestro] compare running speed in one scenario for iOS

I previously posted an execution time comparison of Maestro and Appium for Android . Let’s compare in iOS as well. I picked up the same scenario from the ruby_lib_core. https://github.com/appium/ruby_lib_core/blob/61b2277ff2e391571b87e6d3931aac9e0ce9e206/test/functional/ios/patch_test.rb#L39-L51 The maestro scenario was: Maestro cannot use the element type directly, so I have replaced it with placeholders. It could potentially detect an unexpected element…More

[Appium] Reduce Animation Flakiness in Appium UIA2 driver

Not new tips, but I’d like to share a small optimization config to reduce animation flakiness in the Appium UIA2 driver. Capabilities: The settings can be configured during a session via the Settings API. It means you can dynamically adjust the config by following your desired scenario. Old post below also addresses waitForIdleTimeout and waitForSelectorTimeout…More

[Appium][maestro] compare running speed in one scenario for Android

I was curious about how Maestro is faster than Appium UIA2. I picked up a scenario from https://github.com/appium/ruby_lib_core/blob/3de46abaa933e6fa813b78192650e1f9ead5a238/test/functional/android/patch_test.rb#L38-L47, which had multiple taps and sending keys. Maestro doesn’t support Unicode, so I switched the keyword to ASCII. It took a total of 30 seconds, as shown below. This ran on an emulator on my local laptop.…More

[appium] iOS 18 introduced com.apple.ContactsUI.LimitedAccessPromptView

iOS 18 introduced a new process named com.apple.ContactsUI.LimitedAccessPromptView which is required to handle elements listed in a new contact permissions dialog in iOS 18+. Such elements were not able to be recognized by com.apple.springboard. I haven’t noticed this new behavior when I investigated iOS 18 beta in https://github.com/appium/appium/issues/20239, but https://forums.developer.apple.com/forums/thread/758669 told me this new one.…More

[appium][xcuitest] interact with alerts with appium-xcuitest-driver v6.0.0+

[Update] https://github.com/appium/appium-xcuitest-driver/blob/master/docs/guides/troubleshooting.md#interact-with-dialogs-managed-by-comapplespringboard guides about this behavior. For example defaultActiveApplication via Settings API is also a new method to take care the handling. [update] The change was reverted in 5.15.1 to avoid possible confusion. The fix and change as the side effect is in 6.0.0. As of 5.14.1, it fixed an active application selection https://github.com/appium/appium/issues/19716#issuecomment-1911895659, but…More

[Appium][Android] Read NFC content in an Appium session

According to https://stackoverflow.com/questions/57202157/android-nfc-read-fails-after-fullscreen-launcher-app-comes-from-background, if a device had a running process that had WindowManager.LayoutParams.FLAG_SHOW_WHEN_LOCKED or WindowManager.LayoutParams.FLAG_DISMISS_KEYGUARD, reading NFC contents may fail. Appium/io.appium.settings unlocks the lock screen on the device under test in the new session creation. The old method used WindowManager.LayoutParams.FLAG_DISMISS_KEYGUARD flag to achieve it. Perhaps it caused the unsuccessful NFC content read reported in https://github.com/appium/appium/issues/17973.…More

Run Maestro on CI via HeadSpin

maestro is a new mobile automation tool for Android and iOS (simulator) created by mobile.dev. The tool is OSS with Apache License 2.0, and the company may continue leading the development. I won’t say anything about the differences etc between Appium here because they have different functionality and opinions. Users may also have several opinions…More