Appium server upgrades
Perfecto manages Appium server upgrades in its hybrid and enterprise clouds for native, hybrid, and mobile web testing on iOS and Android. Appium 3 is available now and becomes the default version on January 3, 2027.
Appium 2.19 has been the default execution engine since March 1, 2026, with Appium 2.4.1 available as a fallback. The default version is configured at the cloud level. You can use the appiumVersion capability to select a version for your test executions.
The following support changes apply:
-
Appium 1 end of support:
-
August 31, 2025: Support for session sharing using Appium 1 ended. Session sharing using Appium 2 is supported in Perfecto.
-
December 21, 2025: Support for Appium 1 test executions ended.
-
January 13, 2026: Appium 1 was disabled for all customers except those granted an extension.
Customers requiring an extension must coordinate with Perfecto Support to have Appium 1 enabled. For executions under an approved extension, set
enableAppiumBehaviortotrueandappiumVersionto1.22.3in your test capabilities. For capability syntax, see appiumVersion. -
-
Appium 3 rollout: Appium 3.6.0 is available now and is being rolled out gradually. It becomes the default version on January 3, 2027. Customers with an Appium 1 extension must upgrade to a supported Appium version by this date.
Before migrating to Appium 3, use an Appium 3-compatible client and review the Appium 2-to-3 migration guide for breaking changes and required script updates. To migrate now, set the
appiumVersioncapability to3.6.0. Customers are not migrated automatically before the default changes.
Perfecto supports the latest Appium version as well as the previous version. For details on the supported Appium versions, see Supported platforms.
While Perfecto manages the Appium server and driver installations, you need to update your automation scripts to ensure they run smoothly.
On this page:
Prerequisites
Before the upgrade of your Perfecto cloud from Appium 1 to Appium 2, make sure to:
-
Read the following Appium articles:
-
Familiarize yourself with the Breaking changes described in the following section.
-
Make sure you use an Appium 2-compatible client. For Appium 2, the following minimal versions are recommended:
-
Appium Java client: version 8 or later
-
Appium Python client: Version 2 or later
-
Appium .NET client: Version 5 or later
-
WebdriverIO client: Version 7 or later
To learn more about the Appium Java client migration, see Upgrade to an Appium 2-compliant client.
-
-
Before testing with Appium 2, for iOS 16.4 and later, if your application displays parts of the UI in WKWebView objects, make sure to install the app with WebView instrumentation enabled. To learn more, see Application management and Instrumentation of hybrid applications.
If you need help planning or accelerating your transition, reach out to Perfecto Support or your Perfecto account representative.
Breaking changes
The upgrade from Appium 1.22.3 to Appium 2 includes the following breaking changes. Make sure to address these changes before you run your automation scripts in a Perfecto cloud configured with Appium 2.
-
End of support for iOS 12. For complete support information, see iOS support updates.
-
(iOS only) An update of the appium-xcuitest-driver to version 6.1.0. To learn more, see the changelog information.
-
(Android only) An update of the appium-uiautomator2-driver to version 2.45.1. To learn more, see the changelog information.
-
The
automationNamecapability cannot be empty. You can specify one of the following values:Appium,XCUITest, orUIAutomator2. If you specifyAppium, Perfecto will replace theautomationNamevalue internally with the relevant platform-specific value. To learn more, see Supported Appium capabilities. -
(iOS only) As part of the Appium 2 upgrade, WebDriverAgent is upgraded to version 6. This update includes fixes for the active application detection. Following this upgrade, a known Appium Limitation may require switching the active application to
com.apple.springboardto interact with system dialogs, such as permission dialogs, while the current active application is not the SpringBoard. To learn more, see Appium bug #19716.To interact with system alerts, you can use the
or themobile: alertfunction.acceptAlertButtonSelectoranddismissAlertButtonSelectorsettings -
The obsolete
resetApp,launchApp, andcloseAppmethods throw errors on invocation. Make sure to replace them as specified in the following table. To learn more, see Appium issue #15807.Old function New function Additional info driver.launchAppmobile: launchAppSpecify the bundle ID
driver.closeAppmobile: terminateAppSpecify the bundle ID
driver.resetAppmobile: clearAppSpecify the appPackage (Android-specific)
-
With Perfecto's upgrade to Appium server 2.19.0, the
TouchActionsclass has reached end-of-life (EOL) status. This means it is no longer supported in current and future versions of Appium. You need to transition to W3C Actions instead. For migration guidance, see the Appium Gestures Plugin documentation and the blog The transition from Touch to W3C Actions in Selenium.While
TouchActionsmay still function with Appium server 1.22.3 and 2.4.1, these versions are considered legacy and may not be compatible with future updates or features. -
With Appium server 2.19.0, Android tests require the use of
android.x.test:runner1.6.2, which introduces a change in how runtime permissions are granted. This version usesUiAutomation.grantRuntimePermissions(), which alters the timing of the permission dialog boxes.For example, the camera permission dialog box now appears only when the app invokes the camera API (for example, tapping a scan button), rather than immediately on activity launch as in previous versions.
To restore the earlier behavior or avoid test failures:
-
Option 1: Adjust your test logic to handle the permission dialog after the scan or API invocation.
-
Option 2: Enable Appium’s
autoGrantPermissionscapability to pre-grant all runtime permissions, bypassing the dialog entirely. To learn more about this capability, see Supported Appium capabilities.
-
Update your scripts
If you are migrating from Appium 1, before you can run your automation scripts in a Perfecto cloud configured with Appium 2, based on the breaking changes outlined above, update your scripts as follows.
To update your scripts:
-
Update capabilities to be compatible with the W3C WebDriver protocol. All capabilities must follow the W3C standard. To learn more, see the Capabilities section in the Appium 2 documentation.
-
Set the
automationNamecapability to one of the following values:-
Appium(as shown in the following code example)Perfecto will replace this value internally with the relevant platform-specific value.
-
XCUITest(for iOS) -
UIAutomator2(for Android)
CopyDesiredCapabilities capabilities = new DesiredCapabilities();
capabilities.setCapability("automationName", "Appium"); -
-
When testing on Android devices, set the
enableAppiumBehaviorcapability totrue. This capability specifies that all operations be performed via Appium Server.Copycapabilities.setCapability("enableAppiumBehavior", true); -
When testing hybrid apps on iOS or Android and you want hybrid elements to be queried through Appium server, set the
useAppiumForHybridcapability totrue.Copycapabilities.setCapability("useAppiumForHybrid", true);
Rollback options
If you need to roll back to an earlier Appium version (for example, to Appium 2.19.0 after Appium 3 becomes the default), you have the following options:
-
Request changing the Appium version parameter at the cloud level: Contact Perfecto Support.
-
Override the Appium version at the test level: Edit your automation scripts to include the following:
Copycapabilities.setCapability("appiumVersion", "2.19.0");