iOS端末上でテストを行う(コマンドライン)
- HTML5 APIs
- UI ライブラリ
- テスト支援
- ドキュメント
- コード品質ツール
- バリデータ
- キー入力支援
- テストダブル
- ハイブリッドアプリケーション
- 継続的インテグレーション
テスト環境
- Mac OS X 10.11
- JDK 1.8
- Apple Developer Programに登録済であり、iOSアプリのdeveloperアカウントを取得している。
環境構築
XCodeのインストール
- App StoreからXCodeを検索し、インストールする
- ターミナルで次のコマンドを実行する。
xcode-select --install - "xcode-select"コマンドを実行するには、コマンドライン・デベロッパ・ツールが必要です"
というダイアログが表示されるので、「インストール」を選択してインストールする。
node.jsのインストール
- http://nodejs.org/download/ にアクセスし、release -> v0.12.0 - >node-v0.12.0.pkg をダウンロードする。
- ウィザードに従ってインストールする。
- ターミナルで次のコマンドを実行し、バージョンが表示されることを確認する。
node -v
Homebrewのインストール
- (プロキシ環境のみ)環境変数http_proxy, https_proxy, all_proxyが設定されていない場合は、ターミナルで次のコマンドを実行する。
export http_proxy=http://<username>:<password>@<proxy-host>:<proxy-port>
export https_proxy=$http_proxy
export all_proxy=$http_proxy - ターミナルで次のコマンドを実行する。
ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
※ 「fatal: unable to access 'https://github.com/Homebrew/homebrew/':
SSL certificate problem: Invalid certificate chain」とメッセージが出て失敗する場合
次の手順でキーチェーンを更新する。
1. アプリケーション -> ユーティリティ -> キーチェーンアクセス を開く。
1. 「システムルート」のキーチェーンの中から「DigiCert High Assurance EV Root CA」を探す。
1. 「システム」にドラッグ&ドロップする。
参考: https://github.com/Homebrew/homebrew/issues/28844 - ターミナルで次のコマンドを実行し、バージョンが表示されることを確認する。
brew -v
Gitのインストール
- ターミナルで次のコマンドを実行する。
brew install git - ターミナルで次のコマンドを実行し、バージョンが表示されることを確認する。
git -version
Appiumのインストール
- (プロキシ環境のみ)ターミナルを立ち上げて次のコマンドを実行し、npmのプロキシ設定を行う。
npm -g config set proxy http://<username>:<password>@<proxy-host>:<proxy-port>
npm -g config set https-proxy http://<username>:<password>@<proxy-host>:<proxy-port>
npm -g config set registry http://registry.npmjs.org/
npm -g config set strict-ssl false - ターミナルで次のコマンドを実行し、Appiumをインストールする。
npm install -g appium
※ インストールに失敗する場合は、次のコマンドで/usr/localディレクトリに
書き込み権限を付与してから再度試す。
sudo chmod -R a+w /usr/local
Appium Client (WebDriver)のインストール
- ターミナルで次のコマンドを実行する。
npm install wd
インストールの診断
- ターミナルで次の次のコマンドを実行し、必要なツールが正しくインストールされたことを確認する。
appium-doctor --ios
設定
AppiumからiOS Simulatorの使用を許可する
- ターミナルで次のコマンドを実行する。
sudo authorize_ios
iOS上でSafariを起動する準備
開発者証明書・端末・プロビジョニングプロファイルの登録
- Apple Developerサイトで開発者証明書を作成し、キーチェーンに登録しておく。
- Apple Developerサイトでテストに使用する端末を登録しておく。
- 登録した開発者・端末で利用可能なプロビジョニングプロファイルを作成する。
ios-webkit-debug-proxy(MacからiOSのSafariを操作するためのツール)のインストール
- ターミナルで次のコマンドを実行する。
brew install ios-webkit-debug-proxy - iOSの端末をPCに接続する。
- iOSの実機上で、次のメニューからWebインスペクタを有効にする。
設定 > Safari > 詳細 > Webインスペクタ
設定 > デベロッパ > UIAutomationの有効化
※ ios-webkit-debug-proxyでエラーが出た場合、https://github.com/google/ios-webkit-debug-proxyも合わせてご確認ください。
ideviceinstaller(iOS端末にアプリをインストールするためのツール)のインストール
- ターミナルで次のコマンドを実行する。
brew install ideviceinstaller
SafariLauncher(Safariを起動するためのアプリ)のビルド
- ターミナルで次のコマンドを実行し、appiumプロジェクトをチェックアウトする。
git clone https://github.com/appium/appium.git - チェックアウトしたappiumディレクトリに移動し、次のコマンドを実行してSafariLauncherをビルドする。
./reset.sh --ios --real-safari --verbose- "Code Sign error" で失敗した場合は、この問題を修正する。
/appium/node_modules/safari-launcher/SafariLauncher.xcodeproj プロジェクトが生成されるため、
XCodeで開く。 - 左メニューでプロジェクト名をクリックしてGeneralの設定画面を開き、
Bundle Identifier、Teamなどをプロビジョニングプロファイルに合わせて適切に設定する。 - XCodeのビルドボタンをクリックして、SafariLauncherが実機にインストールされることを確認する。
- 再度ターミナルでチェックアウトしたappiumディレクトリに移動し、次のコマンドを実行してSafariLauncherをビルドする。
./reset.sh --ios --real-safari --verbose
- "Code Sign error" で失敗した場合は、この問題を修正する。
- /appium/build/SafariLauncher/SafariLauncher.zipが生成されるため、次のパスにコピーする。
/usr/local/lib/node_modules/appium/build/SafariLauncher/SafariLauncher.zip
Appium起動・テスト
nodeConfig.jsonファイルの用意
任意のフォルダに、次のような内容でnodeConfig.json(Selenium GridにAppiumサーバを登録するための設定を記載するファイル)を作成する。
{
"capabilities": [
{
"platformName": "iOS",
"platformVersion": "8.3",
"deviceName": "iPhone6",
"browserName": "safari",
"os": "iOS",
"version": "8.3",
"maxInstances": 1,
"seleniumProtocol": "WebDriver"
}
],
"configuration": {
"cleanUpCycle": 2000,
"timeout": 30000,
"proxy": "org.openqa.grid.selenium.proxy.DefaultRemoteProxy",
"url": "http://[このMacのホスト]:4723/wd/hub",
"host": "[このMacのホスト]",
"port": 4723,
"maxSession": 1,
"register": true,
"registerCycle": 5000,
"hub": "http://[Selenium Grid Hubのホスト]:4444/grid/register",
"hubPort": 4444,
"hubHost": "[Selenium Grid Hubのホスト]"
}
}
●項目の説明
項目名 | 説明 |
---|---|
platformName | テストを実行する端末のOS。 |
platformVersion | 端末のOSのバージョン。 |
deviceName | 端末の種類。 |
browserName | テスト対象のブラウザ名。 |
version | 端末を区別するためのバージョン名。 任意の値だが、OSバージョン+デバイス名とすると複数端末でのテスト実行時に区別することが出来る。 |
url | Appiumサーバのアドレス。 |
host | 「url」のホスト部。 |
port | 「url」のポート。 |
hubPort | Hubの起動しているポート。 |
hubHost | Hubの起動しているサーバのホスト。 |
Appiumの起動
- iTunesを開き、端末アイコン > 「シリアル番号」をクリックしてUDIDを表示し、右クリックでコピーする。
- ターミナルで次のコマンドを実行し、ios_webkit_debug_proxyを起動する。
ios_webkit_debug_proxy -c <コピーしたUDID>:27753 -d - ターミナルをさらに別ウィンドウで開き、次のコマンドを実行してAppiumを起動する。
appium -U <コピーしたUDID> --nodeconfig nodeConfig.jsonファイルへのフルパス --session-override
テストの実行
次のCapabilityを指定してテストを実行する。
"browserName": "safari",
"deviceName": "iPhone6",
"os": "iOS",
"platformName": "iOS",
"platformVersion": "8.3",
"version": "8.3"
}
以下の点に注意すること。
- "browserName"、"version" はAppiumを起動するときに設定したnodeConfig.jsonと同一の値を指定する。