サーチ…


備考

NightwatchはMeteorアプリケーションの受け入れとエンドツーエンドのテストをv0.5日から提供しており、PHPからSpark to BlazeとReactへの移行を管理しています。すべての主要なContinuous Integrationプラットフォームをサポートします。その他のヘルプについては、以下を参照してください。

Nightwatch APIドキュメント
Nightwatch.js Googleグループ

構成

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のローカルコピーが必要です。また、このようなchromedriverphantomjsとして、セレンを制御することができ、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();
  }
};


Modified text is an extract of the original Stack Overflow Documentation
ライセンスを受けた CC BY-SA 3.0
所属していない Stack Overflow