Sauce Labs mit XCUITest
Mit Axe DevTools Mobile können Sie Barrierefreiheitsprobleme mit Ihren UI-Tests finden. Integrieren Sie Ihren Test in Sauce Labs und gewinnen Sie Einblicke in das Benutzererlebnis Ihrer App - noch bevor sie es gesehen haben! Sauce Labs ist die größte cloudbasierte Testplattform und bietet eine Vielzahl von Geräte- und Simulator-Konfigurationen, um Ihr digitales Vertrauen zu stärken. Konfigurieren Sie Ihre Tests, um in Ihrer aktuellen Build-Automatisierung auf Sauce ausgeführt zu werden, und entdecken Sie Probleme, bevor sie in die Produktion gelangen.
Unten finden Sie eine Anleitung zum Ausführen Ihrer UI-Tests, die mit Axe DevTools Mobile und Sauce Labs integriert sind.
Voraussetzungen
- Bereiten Sie Ihre App für die Distribution vor. Da Tests auf Sauce Labs mit echten Geräten durchgeführt werden, sorgt die Bereitstellung der App- und UITest-Ziele vor der Einsendung an ihren Service für eine reibungslosere Verarbeitung.
- Installieren Sie die
saucectlBefehlszeilenschnittstelle und richten Sie Ihre Sauce Labs-Anmeldedaten ein. Folgen Sie den Anweisungen von Sauce Labs.
Suchen Sie nach einem Beispiel? Unser Sample-iOS-Projekt hat eine Integration, die bereit ist, getestet zu werden.
- Stellen Sie sicher, dass Sie die Voraussetzungen erfüllen.
- Laden Sie das Beispielprojekt von Github herunter
- Öffnen Sie ein Terminalfenster, geben Sie
cdein und ziehen Sie dannaxe-devtools-ios-sample-appaus dem Finder in das Terminalfenster. Drücken Sie die Eingabetaste. - Geben Sie im selben Fenster
sh prepareForSauceRealDevice.shODERsh prepareForSauceVirtualDevice.shein. Drücken Sie die Eingabetaste.
Tests auf realen Geräten ausführen
Sauce Labs-Konfiguration hinzufügen
Sauce Labs verwendet eine yaml Datei, die sich im Projektstammverzeichnis befindet, .sauce/config.yml. Siehe das Beispiel-Konfigurationsdatei unten für Tests auf realen Geräten.
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
Vom Stammverzeichnis Ihres Projekts im Terminal aus führen Sie den folgenden Befehl aus, um Geräte-Builds zu erstellen, ohne ein Gerät an Ihren Computer anschließen zu müssen:
xcodebuild build-for-testing -configuration Debug \
-scheme "$APP_SCHEME" \
-target "$APP_UITEST_TARGET" \
-sdk iphoneos \
-derivedDataPath "./DerivedData"Dieser Befehl erzeugt zwei App-Dateien, die sich unter ./DerivedData/Build/Products/Debug-iphoneos/ befinden: Ihre iOS-Anwendung und Ihre UI-Tests (endend mit UITests-Runner).
Konvertieren Sie als Nächstes beide Anwendungsdateien in .ipa Dateien. Folgen Sie den Anweisungen von Sauce Labs zur Erstellung von .ipa Dateien.
Sobald die .ipa Dateien erstellt sind, erstellen Sie einen Apps-Ordner im Projektverzeichnis und fügen Sie beide .ipa Dateien hinzu.
Führen Sie den folgenden Befehl aus, um die .ipa Dateien an Sauce Labs zu übertragen und mit den Tests zu beginnen:
saucectl runVerwenden Sie zusätzliche Tools zur kontinuierlichen Integration? Sauce Labs unterstützt Tests in Ihrer aktuellen Umgebung. Erfahren Sie mehr über die Integration in Ihre CI-Pipeline und Sauce Labs.
Automatisierung
Sobald Sie bestätigt haben, dass Ihre Konfigurationen korrekt eingerichtet sind, sind Sie bereit, diesen Prozess zu automatisieren! Wir haben unten ein Skript eingefügt, um .ipa Dateien automatisch für Geräte zu erstellen, sie an Sauce Labs hochzuladen und Ihre XCUITests auszuführen. Ihr Team kann dieses Skript auch verwenden, um einen Testrun auf Sauce Labs manuell auszulösen.
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 auf virtuellen Geräten ausführen
Sie können automatisierte XCUITest-Tests mit virtuellen Geräten auf Sauce Labs ausführen! Folgen Sie den unten stehenden Schritten, um loszulegen.
Sauce Labs-Konfiguration hinzufügen
Beim Testen mit Simulatoren befindet sich Ihre Konfiguration im Projektstammverzeichnis, .sauce/config.yml. Wenn Sie zuvor Tests mit echten Geräten durchgeführt haben, sollten Sie beachten, dass die Konfiguration für Simulatoren sich von der Konfiguration unterscheidet, die Sie für echte Geräte verwenden. Die .zip Erweiterung wird in den Dateinamen für app und testApp verwendet, und suites listet ‚Simulatoren‘ statt ‚Geräte‘ auf.
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"Wenn Sie sowohl reale Geräte als auch Simulatoren verwenden möchten, sollten Sie zwei separate suites Konfigurationen erstellen und bereitstellen app und testApp Konfiguration für each suite.
Build-Setup
Sie werden die App und den Testrunner speziell für Simulatoren bauen, wobei Sie das folgende Snippet als Leitfaden verwenden. Wenn Sie zuvor Tests mit realen Geräten durchgeführt haben, werden Sie hier einige Unterschiede bemerken- -sdk iphonesimulator, EXCLUDED_ARCHS="" und 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=NOPacken Sie nun die .app Dateien, um sie für den Upload auf Sauce Labs vorzubereiten.
zip -r testApp.zip testApp.app
zip -r testRunner.zip testRunner.appFühren Sie abschließend den folgenden Befehl aus, um Ihre .zip Dateien hochzuladen und mit den Tests zu beginnen.
saucectl runAutomatisierung
Sobald Sie die Konfiguration zum Testen auf Simulatoren eingerichtet haben, können Sie diesen Prozess automatisieren! Verwenden Sie das unten stehende Skript, um .app Dateien für Simulatoren automatisch zu erstellen, sie zu packen, an Sauce Labs hochzuladen und Ihre XCUITests auszuführen.
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