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
Category Archives: test automation
[Appium] Use prebuilt WebDriverAgentRunner for Appium XCUITest Driver
As of Appium XCUITest driver 9.9, download-wda-sim is available. The script command helps you to download a proper WDA prebuilt packages from GitHub releases for Simulator use. https://github.com/appium/ruby_lib_core/pull/625/files will be a reference to use it. Then, the appium session will use the prebuilt WDA to launch WDA on the target simulator. It will skip running…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
[iOS] Using rvictl for Network Traffic Capture on iOS Devices
Apple publishes Recording a Packet Trace, which explains how to capture packets for macOS and iOS. With the rvictl and tcpdump The combination addressed on the page allows us to capture the network traffic that occurs on a connected iOS device. One note here is about rvictl. The page addresses the functionality as; iOS doesn’t…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][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][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