A integração contínua (CI) é uma prática essencial no desenvolvimento de software moderno, garantindo que as mudanças no código sejam verificadas regularmente. Quando combinada com testes automatizados como os realizados com Selenium, a CI ajuda a detectar erros rapidamente e manter a qualidade do software em alto nível.
Este tutorial explica como configurar a integração contínua para um projeto de testes com Selenium utilizando o GitHub Actions.
O que é Integração Contínua (CI)?
Integração Contínua é a prática de integrar código continuamente em um agora repositório compartilhado e executar testes automáticos para validar as mudanças. Benefícios da CI:
- Detecção Rápida de Erros: Bugs são identificados logo após serem introduzidos.
- Feedback Imediato: Os desenvolvedores recebem resultados rápidos sobre a qualidade do código.
- Automatização do Processo de Build e Teste: Reduz o trabalho manual.
Parte 1: Introdução ao GitHub e Criação de um Repositório
Antes de iniciar com a integração contínua, precisamos criar um repositório no GitHub e configurar um projeto Selenium.
O que é o GitHub?
O GitHub é uma plataforma de hospedagem para controle de versão utilizando Git. Ele permite colaborar com outros desenvolvedores, gerenciar projetos e criar pipelines de integração contínua.
Passo a Passo para Criar um Repositório
- Crie uma Conta no GitHub: Acesse github.com e registre-se.
- Acesse o Painel do GitHub: Após o login, clique no ícone de “+” no canto superior direito e selecione “New Repository”.
- Configure o Repositório:
- Nome do repositório:
selenium-tests
- Descrição (opcional): “Projeto de testes automatizados com Selenium”
- Escolha “Public” ou “Private” dependendo da necessidade.
- Selecione “Add a README file” e clique em “Create Repository”.
- Nome do repositório:
Configurando o Projeto Selenium – Se estiver usando o VS Code, veja este tutorial –
- Clone o Repositório: No terminal, execute:
git clone https://github.com/<seu-usuario>/selenium-tests.git cd selenium-tests
- Configure o Ambiente Python:
- Crie um ambiente virtual:
python -m venv venv source venv/bin/activate # No Windows: venv\Scripts\activate
- Instale o Selenium:
pip install selenium pytest
- Salve as dependências no arquivo
requirements.txt
:pip freeze > requirements.txt
- Crie um ambiente virtual:
- Adicione um Arquivo de Teste: Crie a pasta
tests
e dentro dela um arquivotest_google.py
:from selenium import webdriver from selenium.webdriver.common.by import By def test_google_search(): driver = webdriver.Chrome() driver.get("https://www.google.com") assert "Google" in driver.title driver.quit()
- Adicione e Faça o Commit do Código:
git add . git commit -m "Initial commit with Selenium test" git push origin main
Parte 2: Configurando o GitHub Actions
O GitHub Actions é uma ferramenta poderosa para implementar pipelines de CI/CD. Vamos configurar um workflow que executa os testes do Selenium sempre que o código é alterado.
1. Criando um Arquivo de Workflow
No repositório do GitHub, crie o seguinte arquivo de configuração:
Caminho: .github/workflows/selenium-ci.yml
name: Selenium CI
on:
push:
branches:
- main
pull_request:
branches:
- main
jobs:
selenium-tests:
runs-on: ubuntu-latest
steps:
- name: Checkout repository
uses: actions/checkout@v3
- name: Set up Python
uses: actions/setup-python@v4
with:
python-version: '3.9'
- name: Install dependencies
run: |
python -m pip install --upgrade pip
pip install -r requirements.txt
- name: Start Selenium Server
run: |
wget https://chromedriver.storage.googleapis.com/114.0.5735.90/chromedriver_linux64.zip
unzip chromedriver_linux64.zip
sudo mv chromedriver /usr/local/bin/
- name: Run Selenium tests
run: pytest tests/
2. Explicação do Arquivo
- on: Define os gatilhos para o workflow (push e pull request no branch
main
). - jobs: Especifica as tarefas do pipeline.
- runs-on: Define o sistema operacional no qual o trabalho será executado.
- steps: Passos para realizar as tarefas:
- Fazer checkout do código.
- Configurar o ambiente Python.
- Instalar dependências.
- Baixar e configurar o ChromeDriver.
- Executar os testes Selenium usando Pytest.
3. Adicionando Dependências
Certifique-se de que o arquivo requirements.txt
contém as dependências necessárias:
selenium
pytest
pytest-html
4. Validando o Workflow
- Commit e push no repositório.
- Acesse a aba Actions no GitHub.
- Verifique se o pipeline foi iniciado e acompanhe a execução.
Parte 3: Adicionando Relatórios de Testes
Para gerar relatórios mais detalhados, você pode usar o plugin pytest-html
.
Atualizando o Workflow
Adicione o seguinte passo ao arquivo selenium-ci.yml
:
- name: Generate HTML Report
run: pytest tests/ --html=report.html
- name: Upload Report Artifact
uses: actions/upload-artifact@v3
with:
name: test-report
path: report.html
O arquivo de relatório será salvo como um artefato do GitHub Actions, podendo ser baixado para análise posterior.
Parte 4: Melhorando o Processo com Paralelismo
Se você possui muitos testes, pode dividi-los em lotes para execução paralela.
Atualizando o Workflow para Paralelismo
strategy:
matrix:
batch: [1, 2, 3] # Divida os testes em 3 lotes
steps:
- name: Run Selenium tests in batch
run: pytest tests/ --batch=${{ matrix.batch }}
Isso divide os testes em lotes, melhorando o desempenho do pipeline.