AWS Security ChangesHomeSearch

AWS devicefarm documentation change

Service: devicefarm · 2025-11-01 · Documentation low

File: devicefarm/latest/developerguide/test-types-appium.md

Summary

Updated Appium version selection documentation and added WebDriverAgent configuration guidance for iOS tests. Restructured content to clarify version management and test environment setup.

Security assessment

The changes introduce documentation about using pre-signed WebDriverAgent versions for iOS testing, which relates to code signing security practices. However, there is no evidence this addresses a specific disclosed vulnerability. The update improves clarity around secure test environment configuration but does not directly mitigate a known security flaw.

Diff

diff --git a/devicefarm/latest/developerguide/test-types-appium.md b/devicefarm/latest/developerguide/test-types-appium.md
index c0aaf65ce..5e8724db5 100644
--- a//devicefarm/latest/developerguide/test-types-appium.md
+++ b//devicefarm/latest/developerguide/test-types-appium.md
@@ -5 +5 @@
-Version support
+Selecting an Appium versionSelecting a WebDriverAgent version for iOS tests
@@ -9 +9 @@ Version support
-This section describes how to configure, package, and upload your Appium tests to Device Farm. Appium is an open source tool for automating native and mobile web applications. For more information, see [Introduction to Appium](http://appium.io/docs/en/about-appium/intro/) on the Appium website.
+This section describes how to configure, package, and upload your Appium tests to Device Farm. Appium is an open source tool for automating native and mobile web applications. For more information, see [Introduction to Appium](http://appium.io/docs/en/latest/intro) on the Appium website.
@@ -15 +15 @@ For more information about testing in Device Farm, see [Test frameworks and buil
-## Version support
+## Selecting an Appium version
@@ -17 +17 @@ For more information about testing in Device Farm, see [Test frameworks and buil
-Support for various frameworks and programming languages depends on the language used. 
+###### Note
@@ -19 +19,5 @@ Support for various frameworks and programming languages depends on the language
-Device Farm supports all Appium 1.x and 2.x server versions. For Android, you can choose any major Appium version with `devicefarm-cli`. For example, to use Appium server version 2, add these commands to your test spec YAML file:
+Support for specific Appium versions, Appium drivers, or programming SDKs will depend on the device and test host selected for the test run. 
+
+Device Farm test hosts come pre-installed with Appium in order to enable quicker setup of tests for more straightforward use cases. However, the use of the test spec file allows you to install differing versions of Appium if needed. 
+
+Device Farm comes pre-configured with different Appium server versions based on the test host. The host comes with tooling that enables the pre-configured version with the device platform's default driver (UiAutomator2 for Android, and XCUITest for iOS). 
@@ -25 +28,0 @@ Device Farm supports all Appium 1.x and 2.x server versions. For Android, you ca
-          # To install a newer version of Appium such as version 2:
@@ -29 +32,3 @@ Device Farm supports all Appium 1.x and 2.x server versions. For Android, you ca
-For iOS, you can choose specific Appium versions with the `avm` or `npm` commands. For example, to use the `avm` command to set the Appium server version to 2.1.2, add these commands to your test spec YAML file:
+To view a list of supported software, see the topic on [Supported software within custom test environments](./custom-test-environments-hosts-software.html). 
+
+To select a custom version of Appium, use the `npm` command to install it. The following example shows how to install the latest version of Appium 2. 
@@ -35,3 +40,2 @@ For iOS, you can choose specific Appium versions with the `avm` or `npm` command
-          # To install a newer version of Appium such as version 2.1.2:
-          - export APPIUM_VERSION=2.1.2
-          - avm $APPIUM_VERSION
+          - export APPIUM_VERSION=2
+          - npm install -g appium@$APPIUM_VERSION
@@ -39 +43 @@ For iOS, you can choose specific Appium versions with the `avm` or `npm` command
-Using the `npm` command to use the latest version of Appium 2, add these commands to your test spec YAML file:
+On the [Legacy iOS test host](./custom-test-environments-hosts-ios.html#legacy-ios-host), you can choose specific Appium versions with `avm`. For example, to use the `avm` command to set the Appium server version to `2.1.2`, add these commands to your test spec YAML file. 
@@ -45,2 +49,4 @@ Using the `npm` command to use the latest version of Appium 2, add these command
-          - export APPIUM_VERSION=2
-          - npm install -g appium@$APPIUM_VERSION
+          - export APPIUM_VERSION=2.1.2
+          - avm $APPIUM_VERSION
+
+## Selecting a WebDriverAgent version for iOS tests
@@ -48 +54 @@ Using the `npm` command to use the latest version of Appium 2, add these command
-For more information about `devicefarm-cli` or any other CLI commands, see the [AWS CLI reference](https://docs.aws.amazon.com/cli/latest/reference/devicefarm/).
+In order to run Appium tests on iOS devices, the use of WebDriverAgent is required. This application must be signed in order to be installed on iOS devices. Device Farm provides pre-signed versions of WebDriverAgent that are available during custom test environment runs. 
@@ -50 +56,19 @@ For more information about `devicefarm-cli` or any other CLI commands, see the [
-To use all the features of the framework, like annotations, choose a custom test environment, and use the AWS CLI or the `Device Farm` console to upload a custom test spec.
+The following code snippet can be used to select a WebDriverAgent version on Device Farm within your test spec file that is compatible with your XCTestUI Driver version.. 
+    
+    
+    phases:
+      pre_test:
+        commands:
+          - |-
+            APPIUM_DRIVER_VERSION=$(appium driver list --installed --json | jq -r ".xcuitest.version" | cut -d "." -f 1);
+            CORRESPONDING_APPIUM_WDA=$(env | grep "DEVICEFARM_APPIUM_WDA_DERIVED_DATA_PATH_V${APPIUM_DRIVER_VERSION}")
+            if [[ ! -z "$APPIUM_DRIVER_VERSION" ]] && [[ ! -z "$CORRESPONDING_APPIUM_WDA" ]]; then
+              echo "Using Device Farm's prebuilt WDA version ${APPIUM_DRIVER_VERSION}.x, which corresponds with your driver";
+              DEVICEFARM_APPIUM_WDA_DERIVED_DATA_PATH=$(echo $CORRESPONDING_APPIUM_WDA | cut -d "=" -f2)
+            else
+              LATEST_SUPPORTED_WDA_VERSION=$(env | grep "DEVICEFARM_APPIUM_WDA_DERIVED_DATA_PATH_V" | sort -V -r | head -n 1)
+              echo "Unknown driver version $APPIUM_DRIVER_VERSION; falling back to the Device Farm default version of $LATEST_SUPPORTED_WDA_VERSION";
+              DEVICEFARM_APPIUM_WDA_DERIVED_DATA_PATH=$(echo $LATEST_SUPPORTED_WDA_VERSION | cut -d "=" -f2)
+            fi;
+
+For more information about the WebDriverAgent, see Appium's [ documentation](https://appium.github.io/appium-xcuitest-driver/9.10/guides/run-prebuilt-wda/).