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秒近く待たされるのは悩ましいですね。
なお、使用したマシンのスペックは以下です。
- MacBook Pro
- M1 Max
- 64GB
- macOS Ventura
usePrebuiltWDAオプションを使用する
Simulatorを複数起動する場合、SimulatorにWDAがインストールされていなければ、都度ビルドが発生してしまいます。
usePrebuiltWDAオプションを使用すると、ビルド済みのWDAを再利用してくれます。
ビルド済みの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を使用して起動しましたが、テストコードから起動した場合も同じ効果が得られます。