Як налаштувати Nightwatch у конфігурації з кількома ОС

Вступ

Ця стаття є продовженням https://www.ux-republic.com/introduction-to-nightwatch-for-lightning-acceptance-tests/

Нічний дозор у команді з кількома операційними системами

У реальному світі ви можете зіткнутися з командою, яка працює на кількох ОС: Windows, MacOS, Linux тощо. Якщо ви хочете запустити приймальний тест, він повинен бути доступним для кожної ОС.
Nightwatch використовує Selenium як базову програму для запуску браузера, однак драйвер браузера має відрізнятися для кожної ОС: ви не хочете запускати версію Chrome для Windows, коли Nightwatch працює під MacOS, і навпаки.
Цікавий факт: вам НЕ потрібне наступне налаштування, якщо ви виконуєте приймальні тести лише під Firefox (MacOS або Windows). Лише для Chrome потрібні такі налаштування.

Налаштування

Спочатку вам потрібно отримати драйвер Selenium Chrome для Windows. Останній драйвер можна ознайомитися тут. Покладіть це під (your_preferred_nighwatch_path)/lib/chromedriver.exe : інший chromedriver для MacOS/Linux вже доступний під нашим node_modules папку.
По-друге, потрібно створити a nightwath.conf.js файл, ось де ви розділите драйвери:

module.exports = (function (settings) {
  //Setting chromedriver path at runtime to run on different architectures
  if (process.platform === "darwin") {
    settings.selenium.cli_args["webdriver.chrome.driver"] = "./node_modules/chromedriver/bin/chromedriver";
  }
  else if (process.platform === "win32" || process.platform === "win64") {
    settings.selenium.cli_args["webdriver.chrome.driver"] = "nw/lib/chromedriver.exe";
  }
  return settings;
})(require('./nightwatch.json'));

По-третє, потрібно створити a nightwatch.js файл. Це бігун, і це обов’язково, якщо ви хочете запускати тести під Windows, runner.js вже в комплекті з Nightwatch:

require('./node_modules/nightwatch/bin/runner.js');
Підводячи підсумок

Тепер, коли ми розділили наших драйверів, ви можете позбутися від них webdriver.chrome.driver визначення під вашим nightwatch.json selenium конфігурація, оскільки вона буде автоматично завершена:

"selenium" : {
			"start_process" : true,
			"server_path" : "nw/lib/selenium-server-standalone-2.53.0.jar",
			"log_path" : "nw/logs",
			"host" : "127.0.0.1",
			"port" : 4444,
			"cli_args" : {
				"webdriver.chrome.driver" : "", // empty !
				"webdriver.ie.driver" : ""
			}
		}

Зрештою, поверніться до свого package.json, оновіть scripts поле та скажіть Nightwatch використовувати наш найновіший спліттер:

"scripts": {
    "test": "node nightwatch.js -c nightwatch.conf.js"
  },

Ми закінчили, просто запустіть його:

npm тест

Під MacOS/Linux, ./node_modules/chromedriver/bin/chromedriver буде працювати під Windows, nw/lib/chromedriver.exe замість цього працюватиме.

Гарного тестування!

Лоран, розробник Javascript @UX-республіка