Bagaimana untuk menyediakan Nightwatch dalam konfigurasi berbilang OS

Pengenalan

Artikel ini adalah susulan daripada https://www.ux-republic.com/introduction-to-nightwatch-for-lightning-acceptance-tests/

Jam malam dalam pasukan dengan pelbagai sistem Pengendalian

Di dunia nyata, anda mungkin menghadapi pasukan yang menjalankan beberapa OS: Windows, MacOS, Linux, dsb. Apabila anda ingin menjalankan ujian penerimaan, ia mesti boleh dijalankan di bawah setiap OS.
Nightwatch menggunakan Selenium sebagai pelari penyemak imbas asas, bagaimanapun, pemacu penyemak imbas mesti berbeza di bawah setiap OS: anda tidak mahu menjalankan versi Windows Chrome apabila Nightwatch berjalan di bawah MacOS, dan sebaliknya.
Fakta menarik: anda TIDAK memerlukan persediaan berikut jika anda hanya menjalankan ujian penerimaan di bawah Firefox (MacOS atau Windows). Hanya Chrome memerlukan persediaan berikut.

Penyediaannya

Pertama, anda perlu mengambil pemacu Selenium Chrome untuk tingkap. Pemandu terbaru ialah boleh didapati di sini. Letakkan ini di bawah (your_preferred_nighwatch_path)/lib/chromedriver.exe : chromedriver lain untuk MacOS/Linux sudah tersedia di bawah kami node_modules folder.
Kedua, anda perlu membuat a nightwath.conf.js fail, di sinilah anda akan membahagikan pemacu:

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'));

Ketiga, anda perlu mencipta a nightwatch.js fail. Ini adalah pelari, dan ini wajib jika anda ingin menjalankan ujian di bawah Windows, runner.js sudah disertakan dengan Nightwatch:

require('./node_modules/nightwatch/bin/runner.js');
Mengakhiri

Memandangkan kami telah memisahkan pemandu kami, anda boleh menyingkirkannya webdriver.chrome.driver definisi di bawah anda nightwatch.json konfigurasi selenium, kerana ia akan dilengkapkan secara automatik:

"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" : ""
			}
		}

Akhirnya, kembali kepada anda package.json, kemas kini scripts medan dan beritahu Nightwatch untuk menggunakan pembahagi terbaharu kami:

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

Kami sudah selesai, jalankan sahaja:

ujian npm

Di bawah MacOS/Linux, ./node_modules/chromedriver/bin/chromedriver akan dijalankan, di bawah Windows, nw/lib/chromedriver.exe akan berjalan sebaliknya.

Selamat menguji!

Laurent, Pembangun Javascript @UX-Republic