Windows の Selenium Server を Nightwatch.js でテストする
Windows 上のブラウザで E2E テストを行うために、Windows で Selenium Server を 動かしておいて、Linux 上の Nightwatch.js からテストしたい。
テストが通るところまでやってみたのでメモ。
Selenium Server のダウンロード/起動
Selenium Server は Windows で動かす。
- http://www.seleniumhq.org/download/ から最新版をダウンロードする。
現時点の最新版である バージョン 2.45 の selenium-server-standalone-2.45.0.jar をダウンロードした。
- コマンドプロンプトで以下のように Selenium Server を起動する:
java -jar selenium-server-standalone-2.45.0.jar
実行には JRE が必要なので、入っていなければインストールする。
Nightwatch.js のインストール
Nightwatch.js は Node.js で書いたテストコードを Selenium Server で実行してくれるツール。こちらは Linux で動かす。
npm でインストールする:
npm install nightwatch
nightwatch.json に設定を書く。以下が Selenium Server をテストするのに必要な設定。
{
"src_folders": ["tests"],
"output_folder": "reports",
"selenium": {
"start_process": false
},
"test_settings": {
"default": {
"selenium_port": 4444,
"selenium_host": "192.168.1.23",
"silent": true,
"screenshots": {
"enabled": true,
"path": "./reports"
}
}
}
}
注意点としては
selenium_host
,selenium_port
辺りは環境によって変更する。- テストでエラーが発生した場合のスクリーンショットの保存先を
screenshots
で指定しているが、path
は Linux 上のパスを指定する。 上の例ではカレントディレクトリのreports
ディレクトリに出力している。
テストコード
Nightwatch.js のプロジェクトページにあるものに少し手を入れた。
tests/google.js:
module.exports = {
"Demo test Google": function (client) {
client
.url("http://www.google.com")
.waitForElementVisible("body", 1000)
.assert.title("Google")
.assert.visible("input[type=text]")
.setValue("input[type=text]", "rembrandt van rijn")
.waitForElementVisible("input[name=btnK]", 1000)
.click("input[name=btnK]")
.pause(1000)
.assert.containsText(
"ol#rso li:first-child",
"レンブラント・ファン・レイン - Wikipedia"
)
.end()
},
}
テストの実行
Linux から以下のコマンドを実行する:
./bin/nightwatch
Windows 上で Firefox が起動しテストが実行される。
nightwatch.json の silent
を false
にすると Nightwatch.js 側の
ログが確認できる。
スクリーンショット
スクリーンショットは以下のように取得できる:
client.url("http://www.google.com").saveScreenshot("./screenshot.png")