Accélérer les tests basés sur Appium dans Device Farm grâce aux fonctionnalités souhaitées - AWS Device Farm

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

Accélérer les tests basés sur Appium dans Device Farm grâce aux fonctionnalités souhaitées

Lorsque vous utilisez Appium, vous constaterez peut-être que la suite de tests en mode standard est très lente. Cela est dû au fait que Device Farm applique les paramètres par défaut et ne fait aucune hypothèse quant à la manière dont vous souhaitez utiliser l'environnement Appium. Bien que ces valeurs par défaut soient basées sur les meilleures pratiques du secteur, elles peuvent ne pas s'appliquer à votre situation. Pour affiner les paramètres du serveur Appium, vous pouvez ajuster les fonctionnalités Appium par défaut dans vos spécifications de test. Par exemple, ce qui suit définit la usePrebuildWDA fonctionnalité d'trueune suite de tests iOS afin d'accélérer l'heure de démarrage initiale :

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 &

Les fonctionnalités d'Appium doivent être une structure entre guillemets échappée au shell. JSON

Les fonctionnalités Appium suivantes sont des sources courantes d'amélioration des performances :

noReset et fullReset

Ces deux fonctionnalités, qui s'excluent mutuellement, décrivent le comportement d'Appium une fois chaque session terminée. Lorsqu'il noReset est défini surtrue, le serveur Appium ne supprime pas les données de votre application lorsqu'une session Appium se termine, n'effectuant en fait aucun nettoyage. fullResetdésinstalle et efface toutes les données d'application de l'appareil après la fermeture de la session. Pour plus d'informations, consultez Reset Strategies dans la documentation d'Appium.

ignoreUnimportantViews(Android uniquement)

Demande à Appium de compresser la hiérarchie de l'interface utilisateur Android uniquement pour les vues pertinentes pour le test, ce qui accélère la recherche de certains éléments. Cependant, cela peut perturber certaines suites de tests XPath basées sur des données car la hiérarchie de la disposition de l'interface utilisateur a été modifiée.

skipUnlock(Android uniquement)

Informe Appium qu'aucun PIN code n'est actuellement défini, ce qui accélère les tests après un événement de fermeture d'écran ou un autre événement de verrouillage.

webDriverAgentUrl(iOS uniquement)

Demande à Appium de supposer qu'une dépendance iOS essentielle est déjà en cours d'exécution et disponible pour accepter les HTTP demandes à la date spécifiée. webDriverAgent URL S'il webDriverAgent n'est pas déjà opérationnel, Appium peut mettre un certain temps au début d'une suite de tests pour démarrer le. webDriverAgent Si vous démarrez webDriverAgent vous-même et que vous le configurez webDriverAgentUrl au http://localhost:8100 moment du démarrage d'Appium, vous pouvez démarrer votre suite de tests plus rapidement. Notez que cette fonctionnalité ne doit jamais être utilisée conjointement avec la useNewWDA fonctionnalité.

Vous pouvez utiliser le code suivant pour commencer à webDriverAgent partir de votre fichier de spécifications de test sur le port local de l'appareil8100, puis le transférer vers le port local de l'hôte de test 8100 (cela vous permet webDriverAgentUrl de définir la valeur surhttp://localhost:8100). Ce code doit être exécuté pendant la phase d'installation une fois que tout code de configuration d'Appium et des variables d'webDriverAgentenvironnement a été défini :

# 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 &

Vous pouvez ensuite ajouter le code suivant à votre fichier de spécifications de test pour vous assurer que le webDriverAgent démarrage est réussi. Ce code doit être exécuté à la fin de la phase de pré-test après avoir vérifié le bon démarrage d'Appium :

# 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;

Pour plus d'informations sur les fonctionnalités prises en charge par Appium, consultez la section Capacités souhaitées d'Appium dans la documentation d'Appium.

Pour découvrir d'autres moyens d'étendre votre suite de tests et d'optimiser vos tests, consultezExtension des environnements de test personnalisés dans Device Farm.