ProtractorとAppiumでiOSシミュレータのブラウザを対象にE2Eテストを実行する
こんにちは。リバウンドのせいでこの季節、Tシャツを着たくないkitakです。
今日はiOSシミュレータのブラウザを対象にE2Eテストを実行する方法を紹介します。
モバイルアプリの操作の自動化には今どきはAppiumというツールが人気があるそうなので、これを使うことにしました。 E2EのテストランナーにはProtractorを使います。Protractor自体はSelenium2(WebDriver)をラップしたツールなので、Seleniumを直接使う、あるいは他のSelenium2をラップしたテストランナーを使う場合でも、この記事の内容は参考になると思います。
Appiumのインストール
Protractorのドキュメントを参考にしました (refs: protractor/mobile-setup.md at master · angular/protractor · GitHub )
npm install -g appium appium-doctor # iOS, Androidの環境・ツールが用意されているかどうか検証するコマンド authorize_ios # appiumがiOSシミュレータにアクセスするための権限を得る
Appiumは、この記事で紹介したnpmパッケージとしてインストールする以外にも公式サイトからMacアプリのパッケージをダウンロードしてインストールする方法もあります。
Appiumサーバの起動とProtractorの設定
Appiumのサーバの起動はappiumコマンドを叩くだけです。 Appiumサーバはjson wire protocolで通信をおこなうので、Appiumサーバ ≒ WebDriverのリモートサーバです。
Protractorの設定ファイルは以下のようになります。 seleniumAddressプロパティで指定してるURLのホストはAppiumサーバです。 capabilitiesには、シミュレータで立ちあげたいブラウザを指定します。
exports.config = { seleniumAddress: 'http://localhost:4723/wd/hub', capabilities: { 'browserName': 'safari', 'appium-version': '1.0', platformName: 'iOS', platformVersion: '8.3', deviceName: 'iPhone Simulator' } // その他設定が続く... }
あとは設定ファイルを指定してProtractorコマンドを叩くだけです。
protractor config.js