暇人じゃない

Windows の Selenium Server を Nightwatch.js でテストする

Windows 上のブラウザで E2E テストを行うために、Windows で Selenium Server を 動かしておいて、Linux 上の Nightwatch.js からテストしたい。

テストが通るところまでやってみたのでメモ。

Selenium Server のダウンロード/起動

Selenium Server は Windows で動かす。

現時点の最新版である バージョン 2.45selenium-server-standalone-2.45.0.jar をダウンロードした。

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"
      }
    }
  }
}

注意点としては

テストコード

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 の silentfalse にすると Nightwatch.js 側の ログが確認できる。

スクリーンショット

スクリーンショットは以下のように取得できる:

client
  .url('http://www.google.com')
  .saveScreenshot('./screenshot.png')