LoginSignup
0
1

WebdriverIOのAppiumを1.xから2.xへ移行する

Last updated at Posted at 2023-08-16

概要

この記事はWebdriverIO + Appium1.xをAppium2.xへ移行する際に最低限必要な移行作業をまとめた記事です。

前提

業務で1年ほど前からWebdriverIO + Appium + XCUITestを用いていました。
しかし、先日突如テストが実行できなくなってしまいました。
原因を調査したところ、XCodeがarm64前提になったことや、Appiumのnpmパッケージに含まれるWebDriverAgentRunnerのtagetがiOS10であり、最近のXCodeでは対応できないことが判明しました。
どうにか1.x系でテストを実行できないか模索できないか試行錯誤をしましたが、結果的に2.x系への移行を決め、移行作業を行いました。

移行作業

1. node_modulesの削除

appiumのドライバーなど依存関係をいったんリセットするためにnode_modulesを削除します。

rm -rf node_modules

2. package.jsonのappiumのアップデート

まず、package.jsonのappiumパッケージを1.xから2.xにアップデートします。
筆者の環境では

"appium": "^1.2.2"

となっていたところを、

"appium": "^2.0.1"

と変更しました。

3. npmのインストール

バージョンを上げたらnpm installを実行し、必要なモジュールをインストールします。

4. appium-xcuitest-driverのインストール

以下のコマンドで、iOSのUIテストに必要なドライバーを追加します

appium driver install xcuitest

※driverについて

appium 2.xからdriverという概念が導入されました。
詳細は公式ページ等の解説に譲りますが、簡潔に説明すると、1.xでは全てのdriver(xcuitest, uiautomator2, chromedriver, etc...)がappiumのパッケージに含まれていたところ、2.xではコアなモジュールとdriverを分離し別個にインストールできるようになりました。これにより、ユーザは必要なモジュールのみをインストールすれば良くなり、パッケージが軽量化されるなどの恩恵を受けることができるようになりました。

5. wdio.conf.tsのcapabilitiesの修正

上記リンクの記述にもあるように、WebDriverの仕様で非標準のcapabilitiesにはvendor prefixと呼ばれる接頭辞が必要になりました。
そのため、wdio.conf.ts内のcapabilitiesautomationNameplatformName

automationName: "XCUITest",
platformName: "iOS"

から

"appium:automationName": "XCUITest",
"appium:platformName": "iOS"

のようします。

以上で移行作業は完了です。

参考

WebdriverIO

appium

Appium XCUITest Driver

0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1