waveさんの技術日誌

wave1008の日記の新館です。

AppiumでiOS Simulatorの起動を速くする

AppiumでiOS Simulatorを起動するとき、初回起動あるいは久しぶりに起動した場合だと、かなりの待ち時間が発生します。

xcuitest driverがXcodeを起動してWebDriverAgent(WDA)をビルドするからです。

WDAのビルドが発生する場合の画面の起動時間

以下の手順で計測してみます。


1. iOS Simulatorを起動します。WebDriverAgentアプリがインストールされている場合はアンインストールします。


2. ターミナルでappiumを実行します。

appium


3. Appium Inspectorでcapabilitiesを以下のように設定し、[Start Session]をクリックします。(ストップウォッチ(物理)で計測開始。)

{
  "appium:automationName": "XCUITest",
  "platformName": "iOS",
  "appium:platformVersion": "16.4",
  "appium:deviceName": "iPhone 14(iOS 16.4)",
  "appium:bundleId": "com.apple.Preferences"
}


4. 設定画面が表示されます。(計測終了)


計測結果は以下のようになりました。

  • 38秒
  • 34秒
  • 39秒

平均 37秒

40秒近く待たされるのは悩ましいですね。

なお、使用したマシンのスペックは以下です。

usePrebuiltWDAオプションを使用する

Simulatorを複数起動する場合、SimulatorにWDAがインストールされていなければ、都度ビルドが発生してしまいます。

usePrebuiltWDAオプションを使用すると、ビルド済みのWDAを再利用してくれます。

appium.github.io


ビルド済みのWDAは以下のパスにあります。 ~/Library/Developer/Xcode/DerivedData/

capabilitiesに

  • usePrebuiltWDA
  • derivedDataPath

を追加で指定します。

derivedDataPathにはWebDriverAgent-で開始するフォルダのパスをコピーして設定します。

{
  "appium:automationName": "XCUITest",
  "platformName": "iOS",
  "appium:platformVersion": "16.4",
  "appium:deviceName": "iPhone 14(iOS 16.4)",
  "appium:bundleId": "com.apple.Preferences",
  "appium:usePrebuiltWDA": true,
  "appium:derivedDataPath": "~/Library/Developer/Xcode/DerivedData/WebDriverAgent-gbiraffrdhzcprhckdgrvrydwlaf"
}

ビルド済みのWDAを再利用する場合の画面の起動時間

usePrebuiltWDAオプションを有効にした場合、計測結果は以下のようになりました。

  • 9秒
  • 8秒
  • 9秒

平均 8.6秒

10秒切りました。比較するとだいぶ速いですね。
AppiumでiOSのテストの初回起動が遅くて
もやっとしている場合はどうぞ。

なお、当記事ではAppium Inspectorを使用して起動しましたが、テストコードから起動した場合も同じ効果が得られます。