Sauce Labsと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

axe DevTools Mobileを使用すると、UIテストでアクセシビリティの問題を特定できます。テストをSauce Labsに統合し、ユーザーがアプリを見る前に、アプリのエクスペリエンスに関する洞察を得ましょう。Sauce Labsは、最も大きなクラウドベースのテストプラットフォームであり、デジタル自信を高めるための様々なデバイスとシミュレーター構成をホスティングしています。現在のビルド自動化においてSauceでテストを実行するように設定し、問題が本番環境に到達する前に捕捉しましょう。

以下は、axe DevTools MobileとSauce Labsを統合したUIテストを実行するためのガイドです。

前提条件

  1. 配信のためにアプリを準備します。Sauce Labsでのテストは実際のデバイスで行われるため、アプリとUITestターゲットを事前にプロビジョニングしてからサービスに送信して再署名されるようにすることで、プロセスがスムーズになります。
  2. コマンドラインインターフェースをインストールし、Sauce Labsの認証情報を設定します。 saucectl Sauce Labsの指示に従ってください こちらの指示に従ってください。
tip

例をお探しですか?サンプルiOSプロジェクトには、テストのための統合が準備されています。

  1. 前提条件を確認してください。
  2. サンプルプロジェクトをGithubからダウンロードします。 Githubからダウンロード
  3. ターミナルウィンドウを開き、 cd を入力し、Finderから axe-devtools-ios-sample-app をターミナルウィンドウにドラッグ&ドロップします。リターンキーを押します。
  4. 同じウィンドウで、 sh prepareForSauceRealDevice.sh または sh prepareForSauceVirtualDevice.shを入力します。リターンキーを押します。

実際のデバイスでテストを実行

Sauce Labsの設定を追加

Sauce Labsは yaml ファイルを使用します。プロジェクトのルートに配置されています。 .sauce/config.yml実際のデバイスでテストするためのサンプル設定を以下に示します。

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"

ビルドセットアップ

プロジェクトのルートフォルダーからターミナルで次のコマンドを呼び出して、デバイスをコンピュータに接続することなくデバイスビルドを作成します。

xcodebuild build-for-testing -configuration Debug \
                             -scheme "$APP_SCHEME" \
                             -target "$APP_UITEST_TARGET" \
                             -sdk iphoneos \
                             -derivedDataPath "./DerivedData"

このコマンドは、 ./DerivedData/Build/Products/Debug-iphoneos/: iOSアプリケーションとUIテスト( UITests-Runnerで終わる)の2つのアプリファイルを生成します。

次に、両方のアプリケーションファイルを .ipa ファイルに変換します。 Sauce Labsの .ipa ファイル作成方法の指示に従ってください。

ファイルが作成されたら、 .ipa プロジェクトのディレクトリに アプリ フォルダーを作成し、両方の .ipa ファイルを追加します。

次のコマンドを実行して、 .ipa ファイルをSauce Labsにプッシュし、テストを開始します。

saucectl run
note

追加の継続的インテグレーションツールを使用していますか?Sauce Labsは、現在の環境でのテストもサポートしています。 CIパイプラインとSauce Labsの統合についてさらに学びましょう。

自動化

設定が正しく設定されていることを確認したら、このプロセスを自動化する準備が整いました!以下のスクリプトを使用して、デバイス用の .ipa ファイルを自動でビルドし、Sauce LabsにアップロードしてXCUITestを実行します。このスクリプトを使用して、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 DerivedData

仮想デバイスでテストを実行

Sauce Labsで仮想デバイスを使用して自動化されたXCUITestを実行できます!以下の手順に従って開始しましょう。

Sauce Labsの設定を追加

シミュレータでテストする場合、設定はプロジェクトルートに配置されます。 .sauce/config.yml以前に実デバイスでテストを行ったことがある場合、シミュレータ用の設定が実デバイス用の設定とは異なることに注意してください。 .zip ファイル名には app 拡張子が使用され testAppリストには 「デバイス」ではなく「シミュレータ」が表示されます。 suites

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

実デバイスとシミュレータを両方使いたい場合は、2つの別々の suites 設定を作成し、 apptestApp 設定を提供する必要があります。 each suite.

ビルドセットアップ

シミュレータ用にアプリとテストランナーをビルドするには、以下のスニペットをガイドとして使用します。 -sdk iphonesimulator以前に実デバイスでテストを行ったことがある場合、いくつかの違いがあることに気付くかもしれません— EXCLUDED_ARCHS=""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

.app 次に、

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

ファイルを圧縮し、Sauce Labsへのアップロードの準備をします。 .zip 最後に、次のコマンドを実行して

  saucectl run

ファイルをアップロードし、テストを開始します。

オートメーション .app シミュレータでのテスト用の設定が完了したら、このプロセスを自動化できます!以下のスクリプトを使用して、シミュレータ用の

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