Como executar testes Selenium do Jenkins usando o pipeline

Última atualização: 19 de março de 2019 — Continuous Testing Expert

 

Jenkins é um sistema de software Java de código aberto projetado para auxiliar na integração contínua de software É um sistema baseado em servidor que roda em contêineres de servlet, como o Apache Tomcat. O Jenkins suporta ferramentas de controle de versão (por exemplo, Git) e pode executar seus projetos com base em Apache Ant, Apache Maven e sbt, bem como scripts e comandos arbitrários de shell/Windows. Durante o desenvolvimento de sistemas de grande porte, surge a necessidade de um processo contínuo de implantação e testar novas versões do seu produto. Para resolver esse problema, usaremos o Selenium Pipeline do Jenkins.

O Jenkins Selenium Pipeline é um conjunto de plugins que oferece suporte à integração de entrega contínua no Jenkins. Em outras palavras, é um script que contém várias tarefas e pode ser executado sempre que uma determinada condição for atendida. Vejamos um exemplo de como usar o Pipeline. Para saber mais, clique aqui. Digital.ai Continuous Testing Integrações, veja aqui..

Nossa tarefa é criar um Pipeline que será executado automaticamente a cada push para nosso repositório público de testes Maven. O repositório armazenará um projeto Maven com um autoteste de interface do usuário, escrito usando o Selenium WebDriver.

Nosso pipeline do Jenkins receberá as alterações de código, compilará um projeto e executará um teste automatizado simples.

Em etapas:

1) Baixar Jenkins.

2) Instale com os parâmetros recomendados seguindo as instruções do instalador. (Nota importante: recomenda-se instalar o Jenkins em uma máquina separada com acesso à internet, pois é necessário conectar sua instância ao repositório. No entanto, para a demonstração, podemos (e iremos neste artigo) usar um projeto Jenkins local com acesso através da ferramenta Ngrok).

3) Quando a instalação estiver concluída, clique no botão “criar novos trabalhos”.

Bem-vindo - pipeline Jenkins

4) Em seguida, selecione a seção Pipeline e insira o nome do seu trabalho. Clique em OK.

Nome do item - pipeline Jenkins

5) Em seguida, acesse a seção Pipeline e defina os seguintes parâmetros:

a) Definição = “script de pipeline do SCM”

Gatilhos de compilação - pipeline do Jenkins

b) SCM = “Git”

Gatilhos de compilação - pipeline do Jenkins

6) Defina um repositório. Aqui, o campo Caminho do Script tem como padrão o valor “Jenkinsfile” – este é o nome do arquivo de script que contém a descrição de todas as tarefas que nosso Pipeline do Jenkins executará. Este arquivo deve estar na raiz do repositório por padrão. Voltaremos à criação e configuração do Jenkinsfile mais tarde, então agora vamos preparar um repositório e um projeto para nosso teste Selenium. Por enquanto, basta clicar no botão Salvar.

pipeline - pipeline Jenkins

7) O script do nosso teste automático visitará a página. https://experitest.com/free-trial/ e verifique o título desta página; em seguida, veremos as mensagens "TESTE APROVADO" ou "TESTE REPROVADO" como resultado. Portanto, usaremos Chromedriver e IntelliJ IDEA IDE, faça o download e instale-os, se necessário.

8) Crie um projeto Maven padrão em sua IDE e coloque o arquivo chromedriver.exe no mesmo diretório onde sua instância do Selenium no Jenkins está instalada. No meu caso, Clique aqui para ver o código..

  [java] package com.test; import org.openqa.selenium.WebDriver; import org.openqa.selenium.chrome.ChromeDriver; public class Selenium { public static void main(String[] args) { System.setProperty(“webdriver.chrome.driver”,”F:\Jenkins\workspace\chromedriver.exe”); // <– Altere este caminho WebDriver driver = new ChromeDriver(); String baseUrl = “https://experitest.com/free-trial/”; String expectedTitle = “Teste gratuito”; String actualTitle = “”; driver.get(baseUrl); actualTitle = driver.getTitle(); if (actualTitle.contentEquals(expectedTitle)){ System.out.println(“TESTE APROVADO!”); } else { System.out.println(“TESTE FALHOU”); } driver.close(); } } [/java]

9) Para garantir que nosso teste funcione, vamos executá-lo localmente. Abra o terminal integrado (você pode encontrá-lo no canto inferior direito da interface do IDEA) e digite os seguintes comandos:

Java - pipeline Jenkins

a) mvn clean install – Como resultado deste comando, uma pasta /target será criada, e nela um arquivo com.test-1.0-SNAPSHOT.jar.

b) java -jar {caminho para o projeto local}comtesttargetcom.test-1.0-SNAPSHOT.jar – este comando executará nosso teste.

Veja os resultados na captura de tela:

Java - pipeline Jenkins

10) Agora que nosso projeto está pronto, podemos colocá-lo na raiz do nosso repositório de testes. No mesmo local, criaremos um Jenkinsfile. Assim:

pipeline selenium - jenkins

11) Agora podemos discutir o conteúdo do nosso Jenkinsfile. cujo código pode ser visualizado aqui..

Aqui:

a) node { } – uma espécie de invólucro para o nosso script. Dentro dele, o script é dividido em etapas.

b) etapa ('checkout do SCM') – etapa preparatória, durante a qual recebemos atualizações do nosso repositório.

c) estágio ('Build') – o estágio principal, durante o qual o Jenkins executará as mesmas etapas que realizamos localmente no console acima.

d) dir (“comtest”) – funciona em uma pasta específica.

e) sh “mvn clean install” – executa comandos do shell.

12) Nesta etapa, podemos iniciar manualmente nosso pipeline do Jenkins para garantir que ele funcione.

pipeline - pipeline Jenkins

Você pode visualizar os resultados do funcionamento do pipeline na forma de um texto sólido ou passo a passo.

Opção “Saída do console”:

console - pipeline do Jenkins

Opção “Etapas do pipeline”:

Etapas - pipeline Jenkins

Mas nosso objetivo não é apenas criar um pipeline do Jenkins para testes automatizados, mas também automatizar sua execução. Vamos lá.

13) Instale os plugins para integração com o GitLab. Para isso, acesse a próxima seção: Jenkins => Gerenciar Jenkins => Gerenciar Plugins

Gerenciar pipeline do Jenkins

Em seguida, selecione a aba Disponível e digite “gitlab” no campo de busca. Instale os plugins necessários e reinicie o Jenkins.

Disponível - pipeline Jenkins

14) Quando a atualização estiver concluída, retornamos à configuração. Acesse Jenkins => Configurar Sistema.

a) Adicione o repositório Gitlab ao plugin:

Acesse Jenkins => Configurar Sistema

pipeline gitlab - jenkins

Nota: Para os nossos propósitos, é necessário usar um repositório público, portanto não devemos especificar nenhuma credencial.

b) Verifique se temos um URL do Jenkins válido. Se você instalou sua instância do Jenkins Pipeline em uma máquina separada, esta etapa pode ser ignorada. Se você usou uma máquina local, como eu, verá a inscrição "localhost" no campo "URL do Jenkins".

localização - pipeline Jenkins

Neste caso, precisamos obter uma URL que possa ser acessada pelo GitLab pela internet. Como mencionei anteriormente, existe uma maneira fácil de fazer isso – grok.

Seguindo as instruções simples desta ferramenta, obtenha o URL onde está localizado o nosso Jenkins de teste:

Obtenha a URL onde está localizado o nosso Jenkins de teste.

Vamos inserir esse endereço no campo URL do Jenkins e salvar todas as alterações.

Insira este endereço no campo URL do Jenkins.

15) Agora, acesse as configurações do GitLab: GitLab => Projeto => Configurações => Integrações. Precisamos configurar o webhook do Jenkins CI. Clique no link a seguir:

GitLab => projeto => Configurações => Integrações

As configurações de integração com o Jenkins CI serão semelhantes às seguintes:

Configurações de integração com o Jenkins CI

16) Atualize as configurações do nosso pipeline do Jenkins (pipeline_selenium1) para usar um webhook do GitLab.

Pipeline do Jenkins (pipeline_selenium1) para usar um webhook do GitLab

17) É isso aí! Agora vamos enviar algo para o nosso repositório e ver o que acontece no Jenkins.

pipeline selenium 1 - pipeline jenkins

Finalizando o lançamento do pipeline do Jenkins

Como você pode ver, temos uma maneira fácil de criar um Pipeline do Jenkins, que executará testes automatizados do Selenium sem intervenção humana. O Pipeline também nos permite realizar quaisquer ações preparatórias automaticamente. Para saber mais sobre a sintaxe do Jenkinsfile, você pode acessar o link Sintaxe do Pipeline (que pode ser visto na última captura de tela).

Se este blog lhe interessou, visite Digital.ai Continuous Testing para ver como oferecer experiências impecáveis ​​ao cliente com web escalável e teste móvel.

Também recomendamos