Sauce Labs avec XCUITest
En utilisant Axe DevTools Mobile, vous pouvez identifier les problèmes d'accessibilité avec vos tests UI. Intégrez votre test avec Sauce Labs et obtenez des informations sur l'expérience de votre application par le public avant même qu'ils ne l'aient vue ! Sauce Labs est la plus grande plateforme de tests 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 de détecter les problèmes avant qu'ils n'atteignent la production.
Vous trouverez ci-dessous un guide pour exécuter vos tests UI intégrés avec 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 de vrais appareils, avoir l'application et les cibles UITest provisionnées avant de l'envoyer à leur service pour la resigner facilitera le processus.
- Installez l'
saucectlinterface en ligne de commande, et configurez vos identifiants Sauce Labs. Suivez les instructions de Sauce Labs.
Vous cherchez un exemple ? Notre projet iOS d'exemple a 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 de Terminal, entrez
cd, puis faites glisser et déposez leaxe-devtools-ios-sample-appdepuis le Finder dans la fenêtre du Terminal. Appuyez 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 de vrais appareils
Ajouter une configuration Sauce Labs
Sauce Labs utilise un fichier yaml, situé à la racine du projet, .sauce/config.yml. Consultez l'exemple de configuration ci-dessous pour tester sur de vrais appareils.
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, exécutez la commande suivante pour créer des builds d'appareil sans avoir besoin qu'un appareil soit branché à 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 UI (se terminant par UITests-Runner).
Ensuite, convertissez les deux fichiers d'application en .ipa fichiers. Suivez les instructions de Sauce Labs sur la création de .ipa fichiers.
Une fois que les fichiers .ipa sont créés, créez un dossier applications dans le répertoire du projet et ajoutez-y les deux fichiers .ipa.
Exécutez la commande suivante pour pousser les fichiers .ipa vers Sauce Labs et commencer les tests :
saucectl runUtilisez-vous des outils d'intégration continue supplémentaires ? Sauce Labs prend en charge le test 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 automatiquement construire des fichiers .ipa 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 des tests sur des appareils virtuels
Vous pouvez exécuter des tests automatisés XCUITest avec des appareils virtuels sur Sauce Labs ! Suivez les étapes ci-dessous pour commencer.
Ajouter une configuration Sauce Labs
Lors des tests avec des simulateurs, votre configuration se trouvera à la racine du projet, .sauce/config.yml. Si vous avez déjà testé avec de vrais appareils, vous devez noter que la configuration pour les simulateurs est différente de celle que vous utilisez pour les vrais appareils. 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 de vrais appareils et des simulateurs, vous devriez créer deux suites configurations distinctes et fournir app et testApp configuration pour each suite.
Configuration de la compilation
Vous allez construire l'application et le test runner spécifiquement pour les simulateurs, en utilisant l'extrait ci-dessous comme guide. Si vous avez déjà testé avec de vrais appareils, vous pouvez noter 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échargés sur Sauce Labs.
zip -r testApp.zip testApp.app
zip -r testRunner.zip testRunner.appEnfin, exécutez la commande suivante pour télécharger vos fichiers .zip et commencer les tests.
saucectl runAutomatisation
Une fois que vous avez configuré la configuration pour les tests sur simulateurs, vous pourrez automatiser ce processus ! Utilisez le script ci-dessous pour automatiquement construire des fichiers .app pour simulateurs, les compresser, les télécharger sur Sauce Labs, et exécuter vos XCUITests.
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