Introdução
Este artigo é uma continuação de https://www.ux-republic.com/introduction-to-nightwatch-for-lightning-acceptance-tests/
Nightwatch em uma equipe com vários sistemas operacionais
No mundo real, você pode encontrar uma equipe executando vários sistemas operacionais: Windows, MacOS, Linux, etc. Quando você deseja executar um teste de aceitação, ele deve ser executado em cada sistema operacional.
O Nightwatch usa o Selenium como um executor de navegador subjacente, no entanto, o driver do navegador deve ser diferente em cada sistema operacional: você não deseja executar uma versão Windows do Chrome sempre que o Nightwatch for executado no MacOS e vice-versa.
Curiosidade: você NÃO precisa da seguinte configuração se estiver executando apenas testes de aceitação no Firefox (MacOS ou Windows). Apenas o Chrome requer a seguinte configuração.
A configuração
Primeiro, você precisa pegar um driver Selenium Chrome para Windows. O driver mais recente é disponíveis aqui. Coloque isso abaixo (your_preferred_nighwatch_path)/lib/chromedriver.exe : o outro chromedriver para MacOS/Linux já está disponível em nosso node_modules pasta.
Em segundo lugar, você precisa criar um nightwath.conf.js arquivo, é aqui que você dividirá os drivers:
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'));
Terceiro, você precisa criar um nightwatch.js Arquivo. Este é um runner, e isso é obrigatório se você quiser executar testes no Windows, runner.js já está empacotado com Nightwatch:
require('./node_modules/nightwatch/bin/runner.js');
Resumindo
Agora que dividimos nossos drivers, você pode se livrar do webdriver.chrome.driver definição sob o seu nightwatch.json configuração do selenium, pois ela será concluída automaticamente:
"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" : ""
}
}
Por fim, volte para o seu package.json, atualize o scripts campo e diga ao Nightwatch para usar nosso mais novo divisor:
"scripts": {
"test": "node nightwatch.js -c nightwatch.conf.js"
},
Terminamos, basta executá-lo:
teste npm
No MacOS/Linux, ./node_modules/chromedriver/bin/chromedriver será executado, no Windows, nw/lib/chromedriver.exe será executado em seu lugar.
Feliz teste!
Laurent, desenvolvedor Javascript na UX-Republic
