Nightwatch設定
nightwatch.conf.js
Nightwatchテストランナーバイナリは、デフォルトで現在の作業ディレクトリからnightwatch.conf.js
またはnightwatch.json
ファイルのいずれかを使用する設定ファイルを想定しています。両方のファイルが見つかった場合、nightwatch.conf.js
が優先されます。
これは、ターゲットブラウザとして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はテストランナーを自動的に検出し、構成します。
- geckodriver – Firefoxでテストを実行するため
- chromedriver – Chromeでテストを実行するため
- selenium-server – Selenium Serverを使用するため
テスト環境での作業
複数の環境や異なるブラウザに対してテストを実行する可能性が高くなります。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"
}
}
}
}