So richten Sie Nightwatch in einer Konfiguration mit mehreren Betriebssystemen ein

Einführung

Dieser Artikel ist eine Fortsetzung von https://www.ux-republic.com/introduction-to-nightwatch-for-lightning-acceptance-tests/

Nightwatch in einem Team mit mehreren Betriebssystemen

In der realen Welt begegnen Sie möglicherweise einem Team, das mehrere Betriebssysteme betreibt: Windows, MacOS, Linux usw. Wenn Sie einen Abnahmetest durchführen möchten, muss er unter jedem Betriebssystem lauffähig sein.
Nightwatch verwendet Selenium als zugrunde liegenden Browser-Runner, der Browsertreiber muss jedoch unter jedem Betriebssystem unterschiedlich sein: Sie möchten nicht immer eine Windows-Version von Chrome ausführen, wenn Nightwatch unter MacOS ausgeführt wird, und umgekehrt.
Fun Fact: Sie benötigen das folgende Setup NICHT, wenn Sie nur Akzeptanztests unter Firefox (MacOS oder Windows) durchführen. Nur Chrome erfordert die folgende Einrichtung.

Die Einrichtung

Zuerst müssen Sie sich einen Selenium Chrome-Treiber für Windows besorgen. Der neuste Treiber ist finden Sie hier. Stell das unter (your_preferred_nighwatch_path)/lib/chromedriver.exe : Der andere Chrometreiber für MacOS/Linux ist bereits unter unserer verfügbar node_modules -Ordner.
Zweitens müssen Sie eine erstellen nightwath.conf.js Datei, hier teilen Sie die Treiber auf:

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

Drittens müssen Sie eine erstellen nightwatch.js Datei. Dies ist ein Runner, und dies ist obligatorisch, wenn Sie Tests unter Windows ausführen möchten. runner.js ist bereits mit Nightwatch gebündelt:

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

Jetzt, da wir unsere Treiber aufgeteilt haben, können Sie die loswerden webdriver.chrome.driver Definition unter deinem nightwatch.json Selenium-Konfiguration, da sie automatisch abgeschlossen wird:

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

Gehen Sie schließlich zurück zu Ihrem package.json, aktualisieren Sie die scripts Feld und weisen Sie Nightwatch an, unseren neuesten Splitter zu verwenden:

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

Wir sind fertig, führen Sie es einfach aus:

npm Test

Unter MacOS/Linux, ./node_modules/chromedriver/bin/chromedriver läuft unter Windows, nw/lib/chromedriver.exe wird stattdessen ausgeführt.

Viel Spaß beim Testen!

Laurent, Javascript-Entwickler bei UX-Republic