Sauce Labs mit XCUITest
Mit axe DevTools Mobile können Sie Zugänglichkeitsprobleme bei Ihren UI-Tests finden. Integrieren Sie Ihren Test mit Sauce Labs und erhalten Sie Einblicke in die Nutzererfahrung Ihrer App – noch bevor die Nutzer sie überhaupt gesehen haben! Sauce Labs ist die größte cloudbasierte Testplattform und bietet verschiedene Geräte- und Simulatorkonfigurationen, damit Sie Vertrauen in Ihre digitalen Abläufe gewinnen. Konfigurieren Sie Ihre Tests so, dass sie im Rahmen Ihrer aktuellen Build-Automatisierung auf Sauce ausgeführt werden, damit Fehler erkannt werden, bevor sie in die Produktion gelangen.
Nachfolgend finden Sie eine Anleitung zum Ausführen Ihrer UI-Tests mit axe DevTools Mobile und Sauce Labs.
Voraussetzungen
- Bereiten Sie Ihre App für die Verteilung vor. Da die Tests bei Sauce Labs mit echten Geräten durchgeführt werden, sorgt die Bereitstellung der App- und UITest-Ziele vor dem Senden an den Dienst zur erneuten Signierung für einen reibungsloseren Ablauf.
- Installieren Sie die
saucectlBefehlszeilenschnittstelle und richten Sie Ihre Sauce Labs-Anmeldeinformationen ein. Befolgen Sie die Anweisungen von Sauce Labs.
Suchen Sie ein Beispiel? Unser iOS-Beispielprojekt verfügt über eine testbereite Integration.
- Überprüfen Sie, ob Sie die Voraussetzungen erfüllen.
- Laden Sie das [Beispielprojekt von Github] herunter(https://github.com/dequelabs/axe-devtools-ios-sample-app)
- Öffnen Sie ein Terminalfenster, geben Sie
cdein und ziehen Sie dannaxe-devtools-ios-sample-appper Drag & Drop aus 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 durchführen
Sauce Labs Konfiguration hinzufügen
Sauce Labs verwendet eine yaml-Datei, die sich im Projektverzeichnis .sauce/config.yml befindet. Nachfolgend finden Sie eine Beispielkonfiguration 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
Rufen Sie aus dem Stammordner Ihres Projekts im Terminal den folgenden Befehl auf, um Geräte-Builds zu erstellen, ohne dass ein Gerät an Ihren Computer angeschlossen sein muss:
xcodebuild build-for-testing -configuration Debug \
-scheme "$APP_SCHEME" \
-target "$APP_UITEST_TARGET" \
-sdk iphoneos \
-derivedDataPath "./DerivedData"Dieser Befehl generiert zwei App-Dateien, die sich an folgendem Ort befinden: ./DerivedData/Build/Products/Debug-iphoneos/Ihre iOS-Anwendung und Ihre UI-Tests (mit der Endung UITests-Runner).
Konvertieren Sie anschließend beide Anwendungsdateien in .ipa Dateien. Befolgen Sie die 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 dem Testen 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 mit Ihrer CI-Pipeline und Sauce Labs.
Automatisierung
Sobald Sie bestätigt haben, dass Ihre Konfigurationen richtig eingerichtet sind, können Sie diesen Prozess automatisieren! Wir haben unten ein Skript eingefügt, um automatisch .ipa Dateien für Geräte zu erstellen, sie in Sauce Labs hochzuladen und Ihre XCUITests auszuführen. Ihr Team kann dieses Skript auch verwenden, um manuell einen Testlauf auf Sauce Labs aufzurufen.
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 nachstehenden Schritten, um zu beginnen.
Sauce Labs Konfiguration hinzufügen
Wenn Sie mit Simulatoren testen, befindet sich Ihre Konfiguration im Projektverzeichnis, .sauce/config.yml. Wenn Sie zuvor Tests mit realen Geräten durchgeführt haben, sollten Sie beachten, dass sich die Konfiguration für Simulatoren von der Konfiguration für reale Geräte unterscheidet. Die Dateiendung .zip wird in den Dateinamen von app und testApp verwendet, und suites listet 'Simulatoren' anstelle von 'Geräten' 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 mit echten Geräten als auch mit Simulatoren arbeiten möchten, sollten Sie zwei separate suites-Konfigurationen anlegen und für app und testApp jeweils eine Konfiguration für jede Suite bereitstellen.
Build-Setup
Sie werden die App und den Test-Runner speziell für Simulatoren erstellen und dabei den unten stehenden Codeausschnitt als Anleitung verwenden. Falls Sie zuvor Tests mit echten Geräten durchgeführt haben, werden Sie hier möglicherweise einige Unterschiede feststellen – -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=NOZippen Sie nun die .app-Dateien, um sie für den Upload zu 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 dem Testen zu beginnen.
saucectl runAutomatisierung
Sobald Sie die Konfiguration für Tests auf Simulatoren eingerichtet haben, können Sie diesen Prozess automatisieren! Verwenden Sie das untenstehende Skript, um .app-Dateien für Simulatoren automatisch zu erstellen, sie zu zippen, auf 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