[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

[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][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

[ios] provisioning profile offline support

ppq.apple.com is used to verify an app provisioning profile for development and ad-hoc. Recently? they started providing offline support, that allows provisioning profiles to not ask the server 7 days. It will help app installation in some situation.More