Nightwatchは、seleniumを使ってNode.jsで書かれたWebアプリケーション自動テストフレームワーク javascript

Nightwatchとは?
Selenium WebDriver APIを使い、Node.jsで書かれたWebアプリケーション/Webサイト用の
自動テストフレームワーク

nightwatchで参考になったサイト
https://www.webprofessional.jp/javascript-functional-testing-nightwatch-js/

Nightwatch自体はNode.jsモジュールで、Nodeをマシンにインストールする必要があります。
もっとも簡単な方法はnvmなどのバージョンマネージャーを使用することです。
Nightwatchはnpmで配布されるので、そのほかのモジュールと同じように、-gでグローバルにインストールするか、
-save-devで現在のプロジェクト内にインストールします。

Nightwach.jsはNode.jsベースのE2E(End-to-End)テストフレームワーク
テストブラウザを操作する仕組みであるSelenium WebDriverのAPIを仲介して各種ブラウザ操作を行い、
ブラウザの挙動が期待したものと合致しているかをテストするために用います。


http://blog.mmmcorp.co.jp/blog/2015/09/24/use-nightwatch/
公式ドキュメントのDeveloper Guideに従ってインストールします。
必要なステップ
1 nightwatch本体のインストール
2 Selenium Server のインストール


Nightwatch.jsとは
Nightwatch.jsはNode.js上で動作するエンドツーエンド(E2E)のテストフレームワークのことで、
Webブラウザーの自動化促進を目的としたプロジェクトSeleniumに依存します。
ヒューマンフレンドリーな構文を通じて、Nightwatch.jsはブラウザーが自動的に再生する
「スクリプト」のシナリオを可能にします(必ずしもヘッドレスブラウザーではありません)。


npm install --save-dev nightwatch
NightwatchはSelenium WebDriver APIに依存するため、Java上で実行するSelenium WebDriverサーバーを必要とします。
つまりJava Development Kit(JDK 7+)もインストールする必要があります。JDKはOracleのWebサイトからダウンロードできます。
ダウンロードしてインストールしたら、java -versionのあるマシン上でJavaを正常に利用できるか確認できます。
最後のステップは、Seleniumのダウンロードページから
Seleniumスタンドアロンサーバーパッケージをjarとしてダウンロードすることです。
パッケージはプロジェクト内のbinフォルダに置いてください

・手順
・npm install --save-dev nightwatch
・selenium-server-standalone-3.0.0-beta3.jar ダウンロード
・geckodriverないと怒られる場合がある

・selenium サーバー起動
C:¥xampp¥htdocs¥nightwatch2>java -jar selenium-server-standalone-3.0.0-beta3.jar -port 4444

・geckodriver-v0.10.0-win64.zip
C:¥xampp¥htdocs¥nightwatch2¥geckodriver-v0.10.0-win64.zip

・テスト実行方法
¥nightwatch2>.¥node_modules¥.bin¥nightwatch tests¥app-spec.js



・設定ファイル
htdocs¥nightwatch2¥nightwatch.json

{
src_folders : [ tests ]
output_folder : reports
selenium : {
start_process : false
}
test_settings : {
default : {
selenium_port : 4444
selenium_host : 127.0.0.1
silent : true
screenshots : {
enabled : true
path : ./reports
}
}
}
}

・C:¥xampp¥htdocs¥nightwatch2¥tests
・app-spec.js
use strict ;
module.exports = {
Contents test : function (browser) {
browser
.url( http://localhost/webdriver/test2.html )
.pause(1000)
.assert.title( Nightwatch.js Demo )
.assert.containsText( #content Hello Nightwatch.js! )
.end();
}

};


・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();
}
};

・test1.js
module.exports = {
webdriverの検索ヒット数を表示する : function (browser) {
var timeoutMSec = 1500;
browser
.url( http://www.google.com )
.setValue( [name= q ] webdriver )
.click( [name= btnG ] )
.waitForElementPresent( #resultStats timeoutMSec)
.getText( #resultStats function(res) {
console.log(res.value);
})
.end();
}
};