【Nightwatch.js】nightwatch.jsonとnightwatch.conf.jsの記述比較

【Nightwatch.js】nightwatch.jsonとnightwatch.conf.jsの記述比較

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の場合は「,」や「}」がないとすぐに怒られてどこが足りないのか探す手間があるのでちょっと厄介かも。

nightwatch.jsカテゴリの最新記事