Sauce Labs avec XCUITest
En utilisant axe DevTools Mobile, vous pouvez trouver des problèmes d'accessibilité avec vos tests d'interface utilisateur. Intégrez vos tests avec Sauce Labs et obtenez des informations sur l’expérience de l’audience de votre application – avant même que l’audience n’y ait accédé ! Sauce Labs est la plus grande plateforme de test basée sur le cloud, hébergeant diverses configurations d'appareils et de simulateurs pour renforcer votre confiance numérique. Configurez vos tests pour qu'ils s'exécutent sur Sauce dans votre automatisation de build actuelle, afin d'identifier les problèmes avant leur passage en production.
Vous trouverez ci-dessous un guide pour exécuter vos tests d'interface utilisateur intégrés à axe DevTools Mobile et Sauce Labs.
Prérequis
- Préparez votre application pour la distribution. Étant donné que les tests sur Sauce Labs sont effectués avec des appareils réels, le fait de provisionner l'application et les cibles UITest avant de les envoyer à leur service pour qu'elles soient re-signées entraînera un processus plus fluide.
- Installez l'interface de ligne de commande
saucectlet configurez vos informations d'identification Sauce Labs. Suivez les instructions de Sauce Labs.
Vous cherchez un exemple ? Notre exemple de projet iOS dispose d'une intégration prête à être testée.
- Vérifiez que vous avez les prérequis.
- Téléchargez le projet d'exemple depuis Github
- Ouvrez une fenêtre Terminal, entrez
cd, puis faites glisser et déposez le fichier du Finder dans la fenêtre Terminal.axe-devtools-ios-sample-appAppuyez sur retour/entrée. - Dans la même fenêtre, tapez
sh prepareForSauceRealDevice.shOUsh prepareForSauceVirtualDevice.sh. Appuyez sur retour/entrée.
Exécution des tests sur des appareils réels
Ajouter la configuration de Sauce Labs
Sauce Labs utilise un fichier yaml, situé à la racine du projet, .sauce/config.yml. Consultez l'exemple de configuration ci-dessous pour effectuer des tests sur des appareils réels.
apiVersion: v1alpha
kind: xcuitest
sauce:
region: us-west-1
concurrency: 1
xcuitest:
# file names for real devices have the `.ipa` extension
app: "<app_name>.ipa"
testApp: "<app_name>UITests-Runner.ipa"
suites:
- name: "<app_name>UITests"
devices:
- name: "iPhone.*"
platformVersion: "17.2"Configuration de la compilation
Depuis le dossier racine de votre projet dans le Terminal, appelez la commande suivante pour créer des builds de périphériques sans avoir besoin d'avoir un périphérique branché sur votre ordinateur :
xcodebuild build-for-testing -configuration Debug \
-scheme "$APP_SCHEME" \
-target "$APP_UITEST_TARGET" \
-sdk iphoneos \
-derivedDataPath "./DerivedData"Cette commande générera deux fichiers d'application situés à ./DerivedData/Build/Products/Debug-iphoneos/ : votre application iOS et vos tests d'interface utilisateur (se terminant par UITests-Runner).
Ensuite, convertissez les deux fichiers d’application en fichiers .ipa . Suivez les instructions de Sauce Labs pour créer des fichiers .ipa.
Une fois les .ipa fichiers créés, créez un dossier apps .ipa dans le répertoire du projet et y ajouter les deux fichiers.
Exécutez la commande suivante pour envoyer les fichiers à Sauce Labs et commencer les tests : .ipa
saucectl runUtilisez-vous des outils d’intégration continue supplémentaires ? Sauce Labs prend en charge les tests dans votre environnement actuel. En savoir plus sur l'intégration avec votre pipeline CI et Sauce Labs.
Automatisation
Une fois que vous avez confirmé que vos configurations sont correctement configurées, vous êtes prêt à automatiser ce processus ! Nous avons inclus un script ci-dessous pour créer automatiquement des .ipa fichiers pour les appareils, les télécharger sur Sauce Labs et exécuter vos XCUITests. Votre équipe peut également utiliser ce script pour lancer manuellement un test sur Sauce Labs.
APP_LOCATION="DerivedData/Build/Products/Debug-iphoneos"
APP_NAME="<app_name>"
rm -rf *.ipa
xcodebuild build-for-testing -configuration Debug \
-scheme "<scheme_name>" \
-target "<UITests target>" \
-sdk iphoneos \
-derivedDataPath "./DerivedData" \
-quiet
mkdir Payload
mv $APP_LOCATION/$APP_NAME.app Payload
zip -r -qq "$APP_NAME.ipa" Payload
rm -rf Payload/*
mv $APP_LOCATION/${APP_NAME}UITests-Runner.app Payload
zip -r -qq "${APP_NAME}UITests-Runner.ipa" Payload
saucectl run
rm -rf Payload
rm -rf DerivedDataExécution de tests sur des appareils virtuels
Vous pouvez exécuter des tests XCUITest automatisés avec des appareils virtuels sur Sauce Labs ! Suivez les étapes ci-dessous pour commencer.
Ajouter la configuration de Sauce Labs
Lors des tests avec des simulateurs, votre configuration se trouvera à la racine du projet, .sauce/config.yml. Si vous avez déjà effectué des tests avec des appareils réels, veuillez noter que la configuration des simulateurs est différente de celle utilisée pour les appareils réels. L’extension .zip est utilisée dans les noms de fichiers pour app et testApp, et suites liste « simulateurs » plutôt que « appareils ».
apiVersion: v1alpha
kind: xcuitest
sauce:
region: us-west-1
concurrency: 1
xcuitest:
# file names for simulators use the `.zip` extension
app: "<app_name>.zip"
testApp: "<app_name>UITests-Runner.zip"
suites:
- name: "<app_name>UITests"
simulators:
- name: "iPhone 12 Simulator"
platformVersions:
- "16.2"Si vous souhaitez utiliser à la fois des appareils réels et des simulateurs, vous devez créer deux configurations suites distinctes et fournir une configuration app et une configuration testApp pour chaque suite.
Configuration de la compilation
Vous allez créer l'application et le lanceur de tests spécifiquement pour les simulateurs, en utilisant l'extrait de code ci-dessous comme guide. Si vous avez déjà effectué des tests avec des appareils réels, vous remarquerez peut-être quelques différences ici : -sdk iphonesimulator, EXCLUDED_ARCHS="", et CODE_SIGN_IDENTITY...
xcodebuild build-for-testing -configuration Debug \
-scheme "$APP_SCHEME" \
-target "$APP_UITEST_TARGET" \
-sdk iphonesimulator \
-derivedDataPath "./DerivedData" \
EXCLUDED_ARCHS="" \
CODE_SIGN_IDENTITY="" CODE_SIGNING_REQUIRED=NO CODE_SIGNING_ALLOWED=NOMaintenant, compressez les fichiers .app pour les préparer à être téléversés sur Sauce Labs.
zip -r testApp.zip testApp.app
zip -r testRunner.zip testRunner.appEnfin, exécutez la commande suivante pour téléverser vos .zip fichiers et commencer les tests.
saucectl runAutomatisation
Une fois que vous aurez configuré les tests sur simulateurs, vous pourrez automatiser ce processus ! Utilisez le script ci-dessous pour générer automatiquement des fichiers .app pour les simulateurs, les compresser, les téléverser sur Sauce Labs et exécuter vos tests XCUITest.
APP_LOCATION="DerivedData/Build/Products/Debug-iphonesimulator"
APP_NAME="<app_name>"
RUNNER_NAME="<testApp_name>"
rm -rf $APP_NAME.zip $RUNNER_NAME.zip
xcodebuild build-for-testing -configuration Debug \
-scheme "<scheme_name>" \
-target "<UITests target>" \
-sdk iphonesimulator \
-derivedDataPath "./DerivedData" \
-quiet \
EXCLUDED_ARCHS="" \
CODE_SIGN_IDENTITY="" CODE_SIGNING_REQUIRED=NO CODE_SIGNING_ALLOWED=NO
zip -r -qq $APP_NAME.zip $APP_LOCATION/$APP_NAME.app
zip -r -qq $RUNNER_NAME.zip $APP_LOCATION/$RUNNER_NAME.app
saucectl run
rm -rf DerivedData