nightwatch.conf.js

Nightwatchテストランナーバイナリは、デフォルトで現在の作業ディレクトリからnightwatch.conf.jsまたはnightwatch.jsonファイルのいずれかを使用する設定ファイルを想定しています。両方のファイルが見つかった場合、nightwatch.conf.jsが優先されます。

Nightwatch 2以降では、設定ファイルがPromiseを返すように指定することもでき、テストランナーはそれが解決されるのを待ちます。

これは、ターゲットブラウザとしてFirefoxを使用し、geckodriver NPMパッケージがインストールされていることを前提とした構成ファイルの例です。

module.exports = {
  // An array of folders (excluding subfolders) where your tests are located;
  // if this is not specified, the test source must be passed as the second argument to the test runner.
  src_folders: [],
  
webdriver: { start_process: true, port: 4444, server_path: require('geckodriver').path, cli_args: [ // very verbose geckodriver logs // '-vv' ] },
test_settings: { default: { launch_url: 'https://nightwatch.dokyumento.jp', desiredCapabilities : { browserName : 'firefox' } } } };

自動生成された設定

バージョン1.3以降、Nightwatchは最初の実行時、または他の構成ファイルが見つからない場合に、オペレーティングシステムと既存のドライバパッケージに基づいてnightwatch.conf.js構成ファイルを生成します。現在のフォルダーにnightwatch.jsonまたはnightwatch.conf.jsファイルが見つかった場合、何も起こらず、ファイルは生成されません。

このファイルを自由に編集し、必要に応じて設定を調整してください。これまでのところ、Chrome、Firefox、Safari、およびInternet Explorerのサポートが含まれています。

次のパッケージはNPMから使用でき、インストールされている場合、Nightwatchはテストランナーを自動的に検出し、構成します。

テスト環境での作業

複数の環境や異なるブラウザに対してテストを実行する可能性が高くなります。Nightwatchは、特定のテスト設定を設定できるさまざまな環境を定義するための概念を提供します。

環境は、構成ファイルの"test_settings"ディクショナリの下にあります。他の環境が設定を継承するdefault環境は常に必要です。必要に応じて、各環境のテスト設定を上書きできます。

自動生成されたnightwatch.conf.jsには、いくつかの異なるブラウザ(Firefox、Chrome、Safari)に対してテストを実行するための、およびSelenium Serverまたは人気のあるクラウドテストプロバイダーBrowserstackを使用してテストを実行するための、いくつかの事前定義されたテスト環境が含まれています。

以下はその一部です。

module.exports = {
  src_folders: [],
  
test_settings: { default: { launch_url: 'https://nightwatch.dokyumento.jp' },
safari: { desiredCapabilities : { browserName : 'safari', alwaysMatch: { acceptInsecureCerts: false } }, webdriver: { port: 4445, start_process: true, server_path: '/usr/bin/safaridriver' } },
firefox: { desiredCapabilities : { browserName : 'firefox' },
webdriver: { start_process: true, port: 4444, server_path: require('geckodriver').path } } } }

この設定を考慮すると、たとえばSafariに対してテストを実行するには、次のコマンドラインを実行します。

nightwatch --env safari

テスト環境の使用方法の詳細については、テスト環境の定義ページを参照してください。

テストグローバルでの作業

Nightwatchが提供するもう1つの便利な概念は、テストグローバルです。最も単純な形式では、構成ファイルで定義された名前と値のペアのディクショナリです。

グローバルは、"globals"プロパティとして、または"globals_path"プロパティとして指定された外部ファイルとして定義できます。

これは、nightwatch.json"globals"プロパティを使用した定義の例です。

{
  "src_folders": [],
  
"test_settings": { "default": { "launch_url": "https://nightwatch.dokyumento.jp",
"globals": { "myGlobalVar" : "some value", "otherGlobal" : "some other value" } } } }

launch_urlプロパティと同様に、globalsオブジェクトは、テストに渡されるNightwatch APIで直接利用できます。

module.exports = {
  'Demo test' : function (browser) {
    
console.log(browser.globals.myGlobalVar); // myGlobalVar == "some value" } };

テストグローバルの使用方法の詳細については、テストグローバルの使用ページを参照してください。

Env変数の使用

nightwatch.conf.jsまたはnightwatch.jsonのいずれかの設定値は、環境変数の名前として指定できます。Nightwatchは、process.envから見つかった場合、値を自動的に設定します。

Dotenvファイルもサポートされており、現在の作業ディレクトリに.envファイルが見つかった場合に使用されます。

以下は、生成されたnightwatch.conf.jsの例です。

module.exports = {
  src_folders: [],
  
test_settings: { default: { launch_url: 'https://nightwatch.dokyumento.jp' },
browserstack: { webdriver: { start_process: false },
selenium: { host: 'hub-cloud.browserstack.com', port: 443 },
desiredCapabilities: { browserName: 'chrome', 'bstack:options' : { userName: '${BROWSERSTACK_USER}', accessKey: '${BROWSERSTACK_KEY}', } } } } }

手動設定

この時点で、少なくとも1つのWebDriverパッケージがプロジェクトにインストールされている必要があります。詳細については、WebDriverのインストールセクションを参照してください。プロジェクトのルートフォルダーにnightwatch.jsonを作成します。

ChromeDriverサービスをダウンロードまたはインストールしたと仮定すると、最も単純なnightwatch.jsonファイルは次のようになります。ここで、node_modules/.bin/chromedriverはChromeDriverがインストールされているパスです。

{
  "src_folders" : ["tests"],
  
"webdriver" : { "start_process": true, "server_path": "node_modules/.bin/chromedriver", "port": 9515 },
"test_settings" : { "default" : { "desiredCapabilities": { "browserName": "chrome" } } } }

さらに詳しく