Aprenda como executar testes utilizando uma versão específica do Geckodriver 

Nos últimos dias me deparei com um problema ao tentar executar testes escritos com o framework Protractor no Firefox devido a uma incompatibilidade com a versão atual do geckodriver que o webdriver-manager atualiza por padrão (na data de publicação deste post v0.18.0). Vale resaltar que tais testes já funcionavam no Chrome.

Geckodriver é o webdriver que pilota do Firefox.

A primeira mudança que precisei realizar foi remover a configuração directConnect: true do arquivo de configurações do Protractor (protractor.conf.js). Na data deste post estou utilizando o Protractor versão 5.1.2 e nesta versão o Firefox não suporta tal configuração.

Sem a configuração directConnect e não havendo um seleniumAddress definido, por padrão o Protractor inicializa os testes utilizando o selenium standalone. Portanto, foi o que fiz, ou seja, removi o directConnect e não defini um seleniumAddress.

A próxima mudança foi definir a versão específica do geckodriver a ser utilizada, para isso bastou definir tal configuração com o caminho onde tal versão seria instalada, no meu caso em: ../../node_modules/protractor/node_modules/webdriver-manager/selenium/geckodriver-v0.17.0. Ou seja, o testes não funcionavam na versão 0.18.0, mas funcionam na versão 0.17.0 do geckodriver.

O próximo passo foi criar um npm script para rodar os testes, porém previamente instalando a versão correta do geckodriver, a mesma definida na configuração anterior. Meu npm script ficou assim:

"test:e2e-firefox": "webdriver-manager update --versions.gecko=v0.17.0 && protractor tests/e2e/protractor.conf.js --browser firefox",

Este script foi definido no arquivo package.json.

Por fim, bastou instalar o geckodriver na versão compatível através do npm (gerenciador de pacotes Node.js). O comando para tal instalação foi:

npm install geckodriver@1.7.0 --save-dev

@1.7.0 definie a versão específica a ser instalada e o – – save-dev define tal biblioteca como uma dependência de desenvolvimento.

Voilà! Bastou rodar o comando npm run test:e2e-firefox e este é um resumo do resultado dos testes executados no Firefox:

[00:19:56] I/update - geckodriver: unzipping geckodriver-v0.17.0.tar.gz
[00:19:56] I/update - geckodriver: setting permissions to 0755 for /Users/foo/www/foobarbaz/node_modules/protractor/node_modules/webdriver-manager/selenium/geckodriver-v0.17.0
[00:19:56] I/launcher - Running 1 instances of WebDriver
[00:19:56] I/local - Starting selenium standalone server...
[00:19:57] I/local - Selenium standalone server started at http://192.168.0.19:62604/wd/hub
Started

Versão correta do geckodriver instalada. ^

36 specs, 0 failures
Finished in 97.227 seconds

Executed 36 of 36 specs SUCCESS in 1 min 37 secs.

[00:21:37] I/local - Shutting down selenium standalone server.
[00:21:37] I/launcher - 0 instance(s) of WebDriver still running
[00:21:37] I/launcher - firefox #01 passed

O legal de usar o selenium standalone é a vantagem de ele desligar o servidor automaticamente ao final da execução dos testes, bastante útil em cenários onde se utiliza integração e entrega contínua, que é o meu caso. 😉

Espero que o post ajude caso alguém esteja enfrentando o mesmo problema.

Tem alguma sugestão, crítica ou elogio, deixa um comentário. =)

Até a próxima e bons testes!

Um comentário em “Executando testes do Protractor no Firefox

  1. Apenas como um update, na versão 0.19.0 do geckodriver o problema foi resolvido, portanto, basta atualizar esta versão no package.json, remover a configuração específica do geckodriver no arquivo de configurações do protractor (protractor.conf.js) e atualiznar o npm script que roda os testes do Firefox para simplesmente rodar o webdriver-manager update puro, sem solicitar uma versão específica do geckodriver.
    =)

Deixe um comentário

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair /  Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair /  Alterar )

Conectando a %s