Sauce Labs met XCUITest
Met Axe DevTools Mobile kunt u toegankelijkheidsproblemen met uw UI-tests opsporen. Integreer uw test met Sauce Labs en krijg inzicht in de ervaring van uw publiek met uw app - nog voordat zij deze hebben gezien! Sauce Labs is het grootste cloudgebaseerde testplatform en biedt diverse apparaat- en simulatorconfiguraties om uw digitale vertrouwen op te bouwen. Configureer uw tests om te draaien op Sauce binnen uw huidige buildautomatisering, om problemen op te vangen voordat ze de productie bereiken.
Hieronder vindt u een handleiding voor het uitvoeren van uw UI-tests geïntegreerd met Axe DevTools Mobile en Sauce Labs.
Vereisten
- Bereid je app voor op distributie. Aangezien testen op Sauce Labs wordt uitgevoerd met echte apparaten, zal het voorzien van de app en UITest-doelen voordat je deze naar hun service stuurt voor hertekenen, het proces soepeler maken.
- Installeer de
saucectlcommand line interface en stel je Sauce Labs-gegevens in. Volg de instructies van Sauce Labs.
Op zoek naar een voorbeeld? Ons Sample iOS Project heeft een integratie klaar om te testen.
- Verifieer dat je aan de vereisten voldoet.
- Download de sample project van Github
- Open een Terminal-venster, voer
cdin en sleep vervolgens deaxe-devtools-ios-sample-appvan Finder naar het Terminal-venster. Druk op return/enter. - Typ in hetzelfde venster
sh prepareForSauceRealDevice.shOFsh prepareForSauceVirtualDevice.sh. Druk op return/enter.
Tests uitvoeren op echte apparaten
Sauce Labs-configuratie toevoegen
Sauce Labs gebruikt een yaml-bestand, dat zich bevindt in de projectroot, .sauce/config.yml. Zie de voorbeeldconfiguratie hieronder voor tests op echte apparaten.
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"Build Setup
Vanaf de hoofdmap van je project in de Terminal, voer je het volgende commando uit om apparaat-builds te maken zonder dat je een apparaat op je computer hoeft aan te sluiten:
xcodebuild build-for-testing -configuration Debug \
-scheme "$APP_SCHEME" \
-target "$APP_UITEST_TARGET" \
-sdk iphoneos \
-derivedDataPath "./DerivedData"Deze opdracht genereert twee app-bestanden die zich bevinden op ./DerivedData/Build/Products/Debug-iphoneos/: Uw iOS-applicatie en uw UI-tests (eindigend op UITests-Runner).
Converteer vervolgens beide applicatiebestanden naar .ipa bestanden. Volg de instructies van Sauce Labs over het maken van .ipa bestanden.
Zodra de .ipa-bestanden zijn aangemaakt, maakt u een apps-map in de projectdirectory en voegt u beide .ipa-bestanden toe.
Voer het volgende commando uit om de .ipa-bestanden naar Sauce Labs te pushen en te beginnen met testen:
saucectl runGebruik je extra continuous integration-tools? Sauce Labs ondersteunt testen binnen je huidige omgeving. Lees meer over integratie met je CI-pijplijn en Sauce Labs.
Automatisering
Zodra u heeft bevestigd dat uw configuraties correct zijn ingesteld, kunt u dit proces automatiseren! We hebben hieronder een script toegevoegd om automatisch .ipa-bestanden voor apparaten te bouwen, deze naar Sauce Labs te uploaden en uw XCUITests uit te voeren. Uw team kan dit script ook gebruiken om handmatig een testrun op Sauce Labs te starten.
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 DerivedDataTests uitvoeren op virtuele apparaten
Je kunt geautomatiseerde XCUITest-tests uitvoeren met virtuele apparaten op Sauce Labs! Volg de onderstaande stappen om aan te slag te gaan.
Sauce Labs-configuratie toevoegen
Bij het testen met simulators bevindt uw configuratie zich bij de projectroot, .sauce/config.yml. Als u eerder testen heeft gedaan met echte apparaten, moet u er rekening mee houden dat de configuratie voor simulators verschilt van de configuratie die u gebruikt voor echte apparaten. De .zip extensie wordt gebruikt in de bestandsnamen voor app en testApp, en suites vermeldt 'simulators' in plaats van 'apparaten'.
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"Als je zowel echte apparaten als simulators wilt gebruiken, moet je twee aparte suites configuraties aanmaken en voorzien van app en testApp configuratie voor each suite.
Build Setup
U bouwt de app en de testrunner specifiek voor simulators, met behulp van de onderstaande snippet als uw gids. Als u eerder testte op echte apparaten, kunt u hier enkele verschillen opmerken - -sdk iphonesimulator, EXCLUDED_ARCHS="", en 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=NOZip nu de .app-bestanden om ze voor te bereiden op uploaden naar Sauce Labs.
zip -r testApp.zip testApp.app
zip -r testRunner.zip testRunner.appVoer tenslotte het volgende commando uit om uw .zip-bestanden te uploaden en het testen te starten.
saucectl runAutomatisering
Zodra u de configuratie voor testen op simulators heeft ingesteld, kunt u dit proces automatiseren! Gebruik het onderstaande script om automatisch .app-bestanden voor simulators te bouwen, ze te zippen, te uploaden naar Sauce Labs en uw XCUITests uit te voeren.
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