Sauce Labs met XCUITest

This page is not available in the language you requested. You have been redirected to the English version of the page.
Link to this page copied to clipboard
Not for use with personal data

Met axe DevTools Mobile kun je toegankelijkheidsproblemen vinden met je UI-tests. Integreer je test met Sauce Labs en krijg inzicht in de ervaring van de gebruikers van je app - nog voordat ze deze hebben gezien! Sauce Labs is het grootste cloud-based testplatform en biedt diverse configuraties van apparaten en simulatoren om je digitale vertrouwen op te bouwen. Configureer je tests om ze uit te voeren op Sauce binnen je huidige build-automatisering, zodat je problemen kunt opsporen voordat ze in productie komen.

Hieronder vind je een gids voor het uitvoeren van je UI-tests geïntegreerd met axe DevTools Mobile en Sauce Labs.

Vereisten

  1. 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.
  2. Installeer de saucectl command line interface en stel je Sauce Labs-gegevens in. Volg de instructies van Sauce Labs.
tip

Op zoek naar een voorbeeld? Ons Sample iOS Project heeft een integratie klaar om te testen.

  1. Verifieer dat je aan de vereisten voldoet.
  2. Download het sample project van Github
  3. Open een Terminal-venster, voer cd in en sleep vervolgens de axe-devtools-ios-sample-app uit Finder naar het Terminal-venster. Druk op return/enter.
  4. Typ in hetzelfde venster sh prepareForSauceRealDevice.sh OF sh prepareForSauceVirtualDevice.sh. Druk op return/enter.

Tests uitvoeren op echte apparaten

Sauce Labs-configuratie toevoegen

Sauce Labs gebruikt een yaml bestand, dat zich in de hoofdmap van het project bevindt, .sauce/config.yml. Zie het voorbeeldconfiguratie hieronder voor testen 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-opstelling

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"

Dit commando genereert twee app-bestanden die zich bevinden op ./DerivedData/Build/Products/Debug-iphoneos/: Je iOS-applicatie en je UI-tests (afsluitend in 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, maak een apps map in de projectdirectory en voeg beide .ipa bestanden toe.

Voer de volgende opdracht uit om de .ipa bestanden naar Sauce Labs te pushen en te beginnen met testen:

saucectl run
note

Gebruik 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 je hebt bevestigd dat je configuraties correct zijn ingesteld, ben je klaar om dit proces te automatiseren! We hebben hieronder een script toegevoegd om automatisch .ipa bestanden voor apparaten te bouwen, ze naar Sauce Labs te uploaden, en je XCUITests uit te voeren. Je team kan dit script ook gebruiken om handmatig een testuitvoering 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 DerivedData

Tests 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 je configuratie zich in de projectroot, .sauce/config.yml. Als je eerder tests hebt uitgevoerd met echte apparaten, moet je merken dat de configuratie voor simulators verschilt van de configuratie die je voor echte apparaten gebruikt. 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"
note

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

Je zult de app en de test runner specifiek voor simulators bouwen, gebruik onderstaande snippet als je gids. Als je eerder tests hebt uitgevoerd met echte apparaten, zul je hier misschien een paar 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=NO

Nu, pak de .app bestanden in om voor te bereiden op upload naar Sauce Labs.

  zip -r testApp.zip testApp.app
  zip -r testRunner.zip testRunner.app

Voer ten slotte de volgende opdracht uit om je .zip bestanden te uploaden en het testen te starten.

  saucectl run

Automatisering

Zodra je de configuratie voor het testen op simulators hebt ingesteld, kun je dit proces automatiseren! Gebruik het script hieronder om automatisch .app bestanden voor simulators te bouwen, ze in te pakken, ze naar Sauce Labs te uploaden, en je 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