Acelerar las pruebas basadas en Appium en Device Farm con las capacidades deseadas - AWS Device Farm

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

Acelerar las pruebas basadas en Appium en Device Farm con las capacidades deseadas

Cuando se utiliza Appium, se puede encontrar que el conjunto de pruebas de modo estándar es muy lento. Esto se debe a que Device Farm aplica la configuración predeterminada y no hace suposiciones sobre cómo desea utilizar el entorno de Appium. Si bien estos valores predeterminados se basan en las prácticas recomendadas del sector, es posible que no se apliquen a su situación. Para ajustar los parámetros del servidor Appium, puede ajustar las capacidades predeterminadas de Appium en sus especificaciones de prueba. Por ejemplo, lo siguiente establece la capacidad de usePrebuildWDA en true de un conjunto de pruebas de iOS para acelerar el tiempo de inicio inicial:

phases: pre_test: - # ... Start up Appium - >- appium --log-timestamp --default-capabilities "{\"usePrebuiltWDA\": true, \"derivedDataPath\":\"$DEVICEFARM_WDA_DERIVED_DATA_PATH\", \"deviceName\": \"$DEVICEFARM_DEVICE_NAME\", \"platformName\":\"$DEVICEFARM_DEVICE_PLATFORM_NAME\", \"app\":\"$DEVICEFARM_APP_PATH\", \"automationName\":\"XCUITest\", \"udid\":\"$DEVICEFARM_DEVICE_UDID_FOR_APPIUM\", \"platformVersion\":\"$DEVICEFARM_DEVICE_OS_VERSION\"}" >> $DEVICEFARM_LOG_DIR/appiumlog.txt 2>&1 &

Las capacidades de Appium deben ser una estructura encuadrada entre comillas. JSON

Las siguientes capacidades de Appium son fuentes comunes de mejoras en el rendimiento:

noReset y fullReset

Estas dos capacidades, que se excluyen mutuamente, describen el comportamiento de Appium una vez finalizada cada sesión. Cuando noReset está configurado en la opción true, el servidor de Appium no elimina los datos de la aplicación al finalizar una sesión de Appium, por lo que no realiza ningún tipo de limpieza. fullResetdesinstala y borra todos los datos de la aplicación del dispositivo una vez cerrada la sesión. Para obtener más información, consulte Restablecer estrategias en la documentación de Appium.

ignoreUnimportantViews (solo para Android)

Indica a Appium que comprima la jerarquía de la interfaz de usuario de Android solo para incluir las vistas relevantes para la prueba, lo que acelera las búsquedas de ciertos elementos. Sin embargo, esto puede estropear algunos conjuntos de pruebas XPath basados en bases porque se ha cambiado la jerarquía del diseño de la interfaz de usuario.

skipUnlock (solo para Android)

Informa a Appium de que actualmente no hay ningún PIN código configurado, lo que acelera las pruebas después de un evento de apagado de la pantalla u otro evento de bloqueo.

webDriverAgentUrl (solo iOS)

Indica a Appium que asuma que una dependencia esencial de iOS ya está en ejecución y disponible para aceptar HTTP solicitudes en las fechas especificadas. webDriverAgent URL Si webDriverAgent aún no está en funcionamiento, Appium puede tardar algún tiempo al principio de un conjunto de pruebas en iniciar el webDriverAgent. Si inicia webDriverAgent usted mismo y configura webDriverAgentUrl como http://localhost:8100 al iniciar Appium, podrá arrancar su conjunto de pruebas más rápido. Tenga en cuenta que esta capacidad nunca debe usarse junto con la capacidad useNewWDA.

Puede usar el siguiente código para empezar webDriverAgent desde el archivo de especificaciones de prueba en el puerto local del dispositivo 8100 y, a continuación, reenviarlo al puerto local del host de la prueba 8100 (esto te permite establecer el valor de webDriverAgentUrl como http://localhost:8100). Este código debe ejecutarse durante la fase de instalación, una vez que se haya definido cualquier código para configurar las variables de Appium y de entorno webDriverAgent:

# Start WebDriverAgent and iProxy - >- xcodebuild test-without-building -project /usr/local/avm/versions/$APPIUM_VERSION/node_modules/appium/node_modules/appium-webdriveragent/WebDriverAgent.xcodeproj -scheme WebDriverAgentRunner -derivedDataPath $DEVICEFARM_WDA_DERIVED_DATA_PATH -destination id=$DEVICEFARM_DEVICE_UDID_FOR_APPIUM IPHONEOS_DEPLOYMENT_TARGET=$DEVICEFARM_DEVICE_OS_VERSION GCC_TREAT_WARNINGS_AS_ERRORS=0 COMPILER_INDEX_STORE_ENABLE=NO >> $DEVICEFARM_LOG_DIR/webdriveragent_log.txt 2>&1 & iproxy 8100 8100 >> $DEVICEFARM_LOG_DIR/iproxy_log.txt 2>&1 &

Luego, puede añadir el siguiente código a su archivo de especificaciones de prueba para asegurarse de que webDriverAgent se haya iniciado correctamente. Este código debe ejecutarse al final de la fase de prueba previa después de garantizar que Appium se haya iniciado correctamente:

# Wait for WebDriverAgent to start - >- start_wda_timeout=0; while [ true ]; do if [ $start_wda_timeout -gt 60 ]; then echo "WebDriverAgent server never started in 60 seconds."; exit 1; fi; grep -i "ServerURLHere" $DEVICEFARM_LOG_DIR/webdriveragent_log.txt >> /dev/null 2>&1; if [ $? -eq 0 ]; then echo "WebDriverAgent REST http interface listener started"; break; else echo "Waiting for WebDriverAgent server to start. Sleeping for 1 seconds"; sleep 1; start_wda_timeout=$((start_wda_timeout+1)); fi; done;

Para obtener más información sobre las capacidades que admite Appium, consulte las capacidades deseadas de Appium en la documentación de Appium.

Para ver más formas de ampliar tu conjunto de pruebas y optimizar tus pruebas, consulta. Ampliación de los entornos de prueba personalizados en Device Farm