サーチ…
備考
NightwatchはMeteorアプリケーションの受け入れとエンドツーエンドのテストをv0.5日から提供しており、PHPからSpark to BlazeとReactへの移行を管理しています。すべての主要なContinuous Integrationプラットフォームをサポートします。その他のヘルプについては、以下を参照してください。
構成
Nightwatchがとても強力な主な理由は、それが優れた設定ファイルだからです。他のほとんどのテストフレームワークとは異なり、Nightwatchはさまざまな環境やテクノロジースタックに対して完全に構成可能でカスタマイズ可能です。
.meteor / nightwatch.json
以下の設定ファイルはMeteor v1.3以降用で、2つの環境をサポートしています。クロムドライブブラウザを起動するdefault
環境と、ヘッドレス環境でテストを実行するphantom
環境です。
{
"nightwatch": {
"version": "0.9.8"
},
"src_folders": [
"./tests/nightwatch/walkthroughs"
],
"custom_commands_path": [
"./tests/nightwatch/commands"
],
"custom_assertions_path": [
"./tests/nightwatch/assertions"
],
"output_folder": "./tests/nightwatch/reports",
"page_objects_path": "./tests/nightwatch/pages",
"globals_path": "./tests/nightwatch/globals.json",
"selenium": {
"start_process": true,
"server_path": "./node_modules/starrynight/node_modules/selenium-server-standalone-jar/jar/selenium-server-standalone-2.45.0.jar",
"log_path": "tests/nightwatch/logs",
"host": "127.0.0.1",
"port": 4444,
"cli_args": {
"webdriver.chrome.driver": "./node_modules/starrynight/node_modules/chromedriver/bin/chromedriver"
}
},
"test_settings": {
"default": {
"launch_url": "http://localhost:5000",
"selenium_host": "127.0.0.1",
"selenium_port": 4444,
"pathname": "/wd/hub",
"silent": true,
"disable_colors": false,
"firefox_profile": false,
"ie_driver": "",
"screenshots": {
"enabled": false,
"path": "./tests/nightwatch/screenshots"
},
"desiredCapabilities": {
"browserName": "chrome",
"javascriptEnabled": true,
"acceptSslCerts": true,
"loggingPrefs": {
"browser": "ALL"
}
},
"exclude": "./tests/nightwatch/unittests/*",
"persist_globals": true,
"detailed_output": false
},
"phantom": {
"desiredCapabilities": {
"browserName": "phantomjs",
"javascriptEnabled": true,
"databaseEnabled": false,
"locationContextEnabled": false,
"applicationCacheEnabled": false,
"browserConnectionEnabled": false,
"webStorageEnabled": false,
"acceptSslCerts": true,
"rotatable": false,
"nativeEvents": false,
"phantomjs.binary.path": "./node_modules/starrynight/node_modules/phantomjs-prebuilt/bin/phantomjs"
}
},
"unittests": {
"selenium": {
"start_process": false,
"start_session": false
},
"filter": "./tests/nightwatch/unittests/*",
"exclude": ""
}
}
}
インストールと使用
Nightwatchを動作させるには、自動化されたブラウザインスタンスを管理するコマンドと制御のサーバであるseleniumのローカルコピーが必要です。また、このようなchromedriverやphantomjsとして、セレンを制御することができ、Webブラウザが必要です。
package.json
次のdevDependenciesを追加します。
{
"devDependencies": {
"nightwatch": "0.9.8",
"selenium-server-standalone-jar": "2.45.0",
"chromedriver": "2.19.0",
"phantomjs-prebuilt": "2.1.12"
}
}
次に、すべてのデデンションをインストールします。
cd myapp
meteor npm install
次のコマンドでNightwatchを実行することができます。
nightwatch -c .meteor/nightwatch.json
nightwatch -c .meteor/nightwatch.json --env phantom
テストを書いていない場合や、まだフォルダ構造を設定していない場合は、エラーが発生することがあります。
起動スクリプトの設定
アプリケーションのルートにあるpackage.json
ファイルは、スクリプトとdevDependenciesを定義する必要があります。
{
"name": "myapp",
"version": "1.0.0",
"scripts": {
"start": "meteor --settings settings-development.json",
"nightwatch": "nightwatch -c .meteor/nightwatch.json",
"phantom": "nightwatch -c .meteor/nightwatch.json --env phantom",
}
}
次のコマンドでnightwatchを起動することができます:
meteor npm run-script nightwatch
meteor npm run-script phantom
この例では、単にnightwatch -c .meteor/nightwatch.json
実行する方が簡単nightwatch -c .meteor/nightwatch.json
。しかし、より複雑なコマンド、複雑な環境変数、オプション、および設定では、これはチームのためにdevopsスクリプトを指定する非常に便利な方法になります。
フォルダ構造
Meteor用のNightwatchの基本的なインストールでは、以下のディレクトリとファイルがインストールされます。
/myapp
/myapp/.meteor/nightwatch.json
/client/main.html
/client/main.js
/client/main.css
/tests
/tests/nightwatch
/tests/nightwatch/assertions
/tests/nightwatch/commands
/tests/nightwatch/data
/tests/nightwatch/logs
/tests/nightwatch/pages
/tests/nightwatch/reports
/tests/nightwatch/screenshots
/tests/nightwatch/walkthroughs
/tests/nightwatch/walkthroughs/critical_path.js
/tests/nightwatch/globals.json
データ駆動型テスト
Nightwatchは、 Meteor.settings
がコマンドラインからのデータをアプリケーション全体でどのように利用できるかと非常によく似た、テストランナー自身にデータを注入する第2のglobals.json
設定ファイルを受け入れます。
globals.json
{
"default" : {
"url" : "http://localhost:3000",
"user": {
"name": "Jane Doe",
"username" : "janedoe",
"password" : "janedoe123",
"email" : "[email protected]",
"userId": null
}
},
"circle" : {
"url" : "http://localhost:3000",
"user": {
"name": "Jane Doe",
"username" : "janedoe",
"password" : "janedoe123",
"email" : "[email protected]"
"userId": null
}
},
"galaxy" : {
"url" : "http://myapp.meteorapp.com",
"user": {
"name": "Jane Doe",
"username" : "janedoe",
"password" : "janedoe123",
"email" : "[email protected]"
"userId": null
}
}
}
特定のユーザー、パスワード、検索入力などでハードコードされていないテストを書くことができます。
module.exports = {
"Login App" : function (client) {
client
.url(client.globals.url)
.login(client.globals.user.email, client.globals.user.password)
.end();
}
};