[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

[xcuitest] more process arguments

It looks like iOS/macOS has more process arguments that can control configurations in addition to: AppleTemperatureUnit, AppleMetricUnitsm and AppleMetricUnits are. For example, “processArguments”: {args: [“-AppleLanguages”,”(ja)”,”-NSLanguages”,”(ja)”, “-AppleTemperatureUnit”, “Celsius”, “-AppleMetricUnits”, “<false/>”]} for the iOS’s capabilities set. Perhaps how properly work with them could depend on app’s implementation.More

[Appium][iOS] Do not need to scroll in some cases

In some cases, iOS does not require scrolling to click an element outside the screen. For example, in the Settings app below. Let’s think to do the action, driver.find_element(:accessibility_id, ‘Accessibility’).click. The “Accessibility” column is outside the screen, but the command works without any “scroll” action. This is the same as XCTest (UI) since Appium also…More

[Appium][XCUITest] Device orientation does not work in some cases

orientation and rotation endpoints in Appium XCUITest driver rely on XCTest’s orientation API. For example, @driver.orientation = :landscape in Ruby client occurs, Appium XCUITest/WebDriverAgent sets the device orientation as landscape. The behavior, if the device orientation succeeds, depends on how the XCTest API behaves. An app can control the device’s orientation. It could cause weird…More

[Appium] Start an appium session with a network device

This is a note to run Appium/XCUITest driver on a real device over Wi-Fi. Then, it works. I have confirmed this way worked in this issue. I haven’t tested, but port-forwarding to a network device may not work with vanilla appium-ios-device so far, so it needs another tool such as iproxy for now. For app…More

[Appium][Compose] testTagsAsResourceId helps Appium/UIA2

I don’t know since, but testTagsAsResourceId is available as part of androidx.compose.ui.semantics package in Compose. According to the description, the value will be available as AccessibilityNodeInfo.viewIdResourceName. This is brilliant news since UIAutomator can access the element via resource id as before, via accessibility tree-based integration test such as Appium/UIA2 driver. testTag is via extras. Now,…More