Executar teste de interface do usuário no navegador com Pepino e Selenoid no Gitlab CI com relatório Allure

Pepino é uma infraestrutura de teste que ajuda a preencher a lacuna entre desenvolvedores de software e gerentes de negócios. Os testes são escritos em uma linguagem simples de desenvolvimento orientado a comportamento (BDD) no estilo de dado, quando, então (condições, operação, resultado), que é compreensível para qualquer usuário. Os testes de controle são gravados nos arquivos de função que abrangem um ou mais scripts de teste. Pepino interpreta testes na linguagem de programação especificada e usa o Selenium para gerenciar testes no navegador.


O Selenoid é uma solução alternativa ao Selenium Server, embora a essência seja a mesma - a organização dos drivers.


Esta postagem iniciará um teste simples do navegador usando Cucumber e Selenoid no Gitlab CI com um relatório Allure no final.


Preparação


O Docker deve estar instalado e em execução no seu sistema operacional.


Instale o Selenoid


Se você possui um sistema operacional baseado em Redhat, pode usar meu repositório para instalar o Gerenciador de Configuração .


yum -y install yum-plugin-copr yum copr enable antonpatsev/aerokube-cm-rpm yum -y install aerokube-cm 

Se você não possui um sistema operacional baseado em Redhat, pode fazer o download e usar o binário do Configuration Manager .


Executando o Selenoid usando o Gerenciador de Configuração e criando browsers.json


Se você não tiver acesso direto às imagens da Internet e da janela de encaixe, baixe o registro.


 aerokube-cm selenoid start --force --browsers "firefox:70.0;firefox:71.0;chrome:78.0;chrome:79.0" --registry -docker-registry 

Se você tem acesso direto à Internet.


 aerokube-cm selenoid start --force --browsers "firefox:70.0;firefox:71.0;chrome:78.0;chrome:79.0" 

A --force substitui o arquivo browsers.json.


O arquivo browsers.json resultante para testar o Chrome e o Firefox. Observe que o caminho é diferente para Chrome e Firefox.


 { "chrome": { "default": "79.0", "versions": { "78.0": { "image": "docker-registry/selenoid/chrome:78.0", "port": "4444", "path": "/" }, "79.0": { "image": "docker-registry/selenoid/chrome:79.0", "port": "4444", "path": "/" } } }, "firefox": { "default": "71.0", "versions": { "70.0": { "image": "docker-registry/selenoid/firefox:70.0", "port": "4444", "path": "/wd/hub" }, "71.0": { "image": "docker-registry/selenoid/firefox:71.0", "port": "4444", "path": "/wd/hub" } } } } 

Alterando browsers.json


Ao alterar as versões do navegador, você pode alterar o arquivo browsers.json e recarregar o selenoid.


Mas se você usar a --force , o browsers.json substituirá as versões mais recentes dos navegadores.


Verifique se o contêiner do docker foi iniciado e se as imagens foram baixadas.


 docker ps docker images 


Executando a interface do usuário do Selenoid usando o Gerenciador de configuração


 aerokube-cm selenoid-ui start --registry https://docker-registry 

Ou


 aerokube-cm selenoid-ui start 

Verifique se o contêiner do docker foi iniciado e se as imagens foram baixadas.


 docker ps docker images 


Vá para selenoid-ui em ip-where-you-run-selenoid-and-selenoid-ui: 8080


Você deve ter 2 luzes CONNECTED verdes e escritas em firefox e chrome.



Em recursos, vemos os navegadores disponíveis.



Teste de demonstração


Faça o download de https://github.com/andewBr/cucumber_selenium_test



ou para outro endereço onde você iniciou o selenóide.


No arquivo WebdriverBeanConfig.java, inclua Capability para executar o chrome. Se você estiver usando um servidor proxy, adicione linhas sobre o proxy como na captura de tela.



Em cada arquivo java, você pode ativar ou desativar a gravação de vídeo, a visualização ou o gerenciamento remoto via VNC e o registro em um arquivo. Para desativar a opção, você precisa adicionar duas barras no início da linha.




Executando testes


No diretório demo-tests, execute os testes:


Se você precisar especificar configurações e usar proxies maven (Nexus, Artifactory)


 mvn -s settings.xml clean test 

Se rodarmos com acesso direto à Internet e sem nenhuma configuração


 mvn clean test 

Velocidade


O tempo total necessário para iniciar um teste leva menos de 1 minuto.


Executando testes no IC do Gitlab


Para não iniciar o Selenoid e o Selenoid-UI sempre que executar testes, você pode executar o Selenoid e o Selenoid-UI uma vez ao iniciar o Gitlab Runner usando Ansible, Puppet, Chef ou outras ferramentas.


Final .gitlab-ci.yml


 --- variables: MAVEN_OPTS: "-Dhttps.protocols=TLSv1.2 -Dmaven.repo.local=/home/gitlab-runner/.m2/repository -Dorg.slf4j.simpleLogger.log.org.apache.maven.cli.transfer.Slf4jMavenTransferListener=WARN -Dorg.slf4j.simpleLogger.showDateTime=true -Djava.awt.headless=true" MAVEN_CLI_OPTS: "--batch-mode --errors --fail-at-end --show-version -DinstallAtEnd=true -DdeployAtEnd=true" before_script: - export PATH="/opt/rh/rh-maven33/root/usr/bin:$PATH" build: stage: build script: - aerokube-cm selenoid start --force --browsers "firefox:70;firefox:71;chrome:78;chrome:79" --registry docker-registry - aerokube-cm selenoid-ui start --registry docker-registry - cat ~/.aerokube/selenoid/browsers.json - set +e - mvn -s maven_settings.xml clean install -Dmaven.test.skip=true - mvn -s maven_settings.xml clean test || EXIT_CODE=$? - mvn -s maven_settings.xml allure:aggregate; - export PATH_WITHOUT_HOME=$(pwd | sed -e "s/\/home\/gitlab-runner\/builds//g") - echo '***********************************************************************' - echo "http://$HOSTNAME:9090$PATH_WITHOUT_HOME/target/site/allure-maven-plugin/" - echo '***********************************************************************' - set -e - exit ${EXIT_CODE} 

Após o echo "http://$HOSTNAME:9090$PATH_WITHOUT_HOME/target/site/allure-maven-plugin/" da linha echo "http://$HOSTNAME:9090$PATH_WITHOUT_HOME/target/site/allure-maven-plugin/"


Um URL aparece onde você pode visualizar o relatório Allure.


Para exibir o relatório Allure, você precisa ter o nginx instalado no gitlab runner com esta configuração:


 server { listen 9090; listen [::]:9090; server_name _; root /home/gitlab-runner/builds; location / { autoindex on; } error_page 404 /404.html; location = /40x.html { } error_page 500 502 503 504 /50x.html; location = /50x.html { } } 

Captura de tela do Allure Report


Source: https://habr.com/ru/post/pt480940/


All Articles