nightwatch.jsonとnightwatch.conf.jsの記述比較
公式もWeb上の記事でも「nightwatch.jsonはnightwatch.conf.jsでも書けるよ!nightwatch.conf.jsの方がjavascriptベースで書けるから見やすくなるよ!」って書いてあっても、
 実際の中身についてどんな風に書けばいいのかがイマイチわからなかったのでメモ。
読み込みの流れ
当たり前のことだけど一応。
 nightwatchを起動したときに、読み込まれるconfigの流れは3パターンある。
nightwatch.jsonのみ
nightwatch.jsonが読み込まれる
nightwatch.conf.jsのみ
nightwatch.conf.jsが読み込まれる
nightwatch.jsonとnightwatch.conf.jsが共存
nightwatch.conf.jsが優先されて読み込まれる。
 nightwatch.conf.jsからnightwatch.jsonを以下のように呼び出すことができる。
module.exports = (function(settings) {
  settings.test_workers = false;
  return settings;
})(require('./nightwatch.json'));
これは公式に書いてある。
nightwatch.json
シンプルな設定のjsonを作成した。
 chromedriverのみを使用してchromeにtests配下のソースを実行させる設定。
{
	"src_folders": [
		"tests"
	],
	"output_folder": "reports",
	"webdriver": {
		"start_process": true,
		"server_path": "./lib/chromedriver_2.45",
		"cli_args": [
			"--verbose"
		],
		"port": 9515
	},
	"test_settings": {
		"default": {
			"desiredCapabilities": {
				"browserName": "chrome"
			}
		}
	}
}
nightwatch.conf.js
こちらがnightwatch.jsonを置き換えたあと。
var webdriverManagerPath = './lib/';
var DRIVERENV = {
  start_process: true,
  server_path: webdriverManagerPath + 'chromedriver_2.45',
  port: 9515,
  cli_args: "--verbose"
};
var CHROME_CONFIGURATION = {
  browserName: 'chrome'
};
var DEFAULT_CONFIGURATION = {
  desiredCapabilities: CHROME_CONFIGURATION
};
var TESTENV = {
  default: DEFAULT_CONFIGURATION
};
module.exports = {
  src_folders: ['tests'],
  output_folder: 'reports',
  webdriver: DRIVERENV,
  test_settings: TESTENV
};
まとめ
nightwatch.conf.jsの方が、個別の設定ごとにまとめられて後々のメンテが楽だなと感じた。
 あとjsなので拡張していろいろできそう。固定値を別ファイルに外出しするとか。
 一方で、nightwatch.jsonもこれはこれでぱっと見でどこがどの設定に紐づいているのかというのがわかって良いかもしれない。
 けどjsonの場合は「,」や「}」がないとすぐに怒られてどこが足りないのか探す手間があるのでちょっと厄介かも。

 
 
 
 
 
コメントを書く