Introduzione
Questo articolo è un seguito di https://www.ux-republic.com/introduction-to-nightwatch-for-lightning-acceptance-tests/
Nightwatch in una squadra con più sistemi operativi
Nel mondo reale, potresti incontrare un team che esegue diversi sistemi operativi: Windows, MacOS, Linux, ecc. Quando si desidera eseguire un test di accettazione, deve essere eseguibile in ogni sistema operativo.
Nightwatch utilizza Selenium come browser runner sottostante, tuttavia, il driver del browser deve essere diverso in ogni sistema operativo: non si desidera eseguire una versione Windows di Chrome ogni volta che Nightwatch viene eseguito su MacOS e viceversa.
Curiosità: NON è necessaria la seguente configurazione se si eseguono solo test di accettazione in Firefox (MacOS o Windows). Solo Chrome richiede la seguente configurazione.
Il set up
Innanzitutto, devi prendere un driver Selenium Chrome per Windows. L'ultimo driver è disponibile qui. Metti questo sotto (your_preferred_nighwatch_path)/lib/chromedriver.exe : l'altro chromedriver per MacOS/Linux è già disponibile sotto il ns node_modules cartella.
In secondo luogo, è necessario creare un nightwath.conf.js file, qui è dove dividerai i driver:
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'));
Terzo, è necessario creare un nightwatch.js coda. Questo è un corridore, ed è obbligatorio se vuoi eseguire i test in Windows, runner.js è già in bundle con Nightwatch:
require('./node_modules/nightwatch/bin/runner.js');
Concludendo
Ora che abbiamo diviso i nostri driver, puoi sbarazzarti del webdriver.chrome.driver definizione sotto la tua nightwatch.json configurazione del selenio, perché verrà automaticamente completata:
"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" : ""
}
}
Alla fine, torna al tuo package.json, aggiorna il file scripts campo e dì a Nightwatch di usare il nostro nuovo splitter:
"scripts": {
"test": "node nightwatch.js -c nightwatch.conf.js"
},
Abbiamo finito, eseguilo:
test npm
Sotto MacOS/Linux, ./node_modules/chromedriver/bin/chromedriver verrà eseguito, in Windows, nw/lib/chromedriver.exe verrà eseguito invece.
Buon test!
Laurent, sviluppatore Javascript @UX-Repubblica
