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

[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

[Android] [INSTALL_FAILED_INSUFFICIENT_STORAGE: Scanning Failed.: Package could not be assigned a valid UID] in Android

I heard “INSTALL_FAILED_INSUFFICIENT_STORAGE: Scanning Failed” error message a couple of times. https://github.com/appium/appium/issues/13957 is probably the same message in the appium repository. The logcat was: The invalid error message was probably the below (from https://cs.android.com/android/platform/superproject/+/master:frameworks/base/services/core/java/com/android/server/pm/Settings.java;l=4096-4097?q=pm%2FSettings.java ) So, when Android already has probably over Process.LAST_APPLICATION_UID – Process.FIRST_APPLICATION_UID, it definitely handles the app id as -1. It causes…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

[iOS] XCUIAutomation.framework in Xcode 13

Appium/WDA has referred to XCTest and XCTAutomationSupport frameworks. Recently, some header files for XCUITest has removed but they still worked. Thus, I wondered where the removed files. Then, I found XCUIAutomation.framework has existed since Xcode 13 in a private framework. For example, Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/Library/PrivateFrameworks/XCUIAutomation.framework. Appium/WDA failed to build when I simply added the framework in linker,…More

[appium] try out some settings when you cannot get expected elements

In some cases, no expected elements are in views via Appium/UIA2 driver. It has some conditions, so it is worth trying out the below settings apis. enableMultiWindows ignoreUnimportantViews allowInvisibleElements These attributes allow you to find elements via Appium/UIA2 driver. They may not be able to find via uiautomator framework via Android as general way, so…More