Este repositório contém a configuração de testes automatizados com Cypress, incluindo o envio de relatórios de teste por e-mail com anexos, utilizando Node.js e bibliotecas específicas.
- Pré-requisitos
- Como clonar o repositório
- Instalação do Cypress
- Instalação das bibliotecas
- Caso de erro na instalação
- Funcionamento do
sendReport.js
e.env
- Relatório de Execução
- Scripts do repositório
- GitHub Actions
Certifique-se de ter instalado:
- Node.js (versão 14 ou superior)
- NPM (Node Package Manager)
- Cypress
-
Abra o terminal e execute o seguinte comando para clonar o repositório:
git clone https://github.com/GbrlSouza/cypress-with-email.git
-
Entre na pasta do projeto:
cd cypress-with-email
-
Instale as dependências do projeto:
npm install
-
Instale o Cypress:
npm install cypress --save-dev
-
Biblioteca dotenv
npm install dotenv
-
Biblioteca nodemailer
npm install nodemailer
-
Biblioteca html-pdf-chrome
npm install html-pdf-chrome
-
Biblioteca puppeteer
npm install puppeteer --save
-
Biblioteca multi-reporters
npm install --save-dev cypress-multi-reporters
-
Biblioteca mochawesome-reporter
npm install --save-dev cypress-mochawesome-reporter
-
Biblioteca mocha-junit-reporter
npm install --save-dev mocha-junit-reporter
- reforce a instalação com esse comando
npm audit fix
Este script realiza as seguintes tarefas:
- Verifica erros no relatório do Cypress: Lê o arquivo HTML gerado pelo Cypress para identificar falhas.
- Converte HTML em PDF: Caso erros sejam encontrados, converte o relatório HTML em um PDF formatado.
- Envia o relatório por e-mail: Usa o Nodemailer para enviar o PDF e um vídeo de teste por e-mail.
Bibliotecas necessárias:
- dotenv: Carrega as variáveis de ambiente do arquivo
.env
. - nodemailer: Envia e-mails.
- html-pdf-chrome: Converte HTML em PDF.
- path e fs (nativas do Node.js): Manipulam arquivos e diretórios.
Crie um arquivo .env
na raiz do projeto e adicione as seguintes variáveis:
EMAIL=seu-email@gmail.com
PASSWORD=sua-senha-ou-token
Atenção: Para contas do Gmail, ative a configuração de aplicativos menos seguros ou utilize um token de autenticação.
Ao executar o comando npm run test
, você verá o seguinte relatório no terminal:
> cypress_with_email@1.0.0 test
> cypress run && node sendReport.js
...
Tests: 6
Passing: 6
Failing: 0
Pending: 0
Skipped: 0
...
Relatório convertido para PDF com sucesso: C:\cypress_with_email\cypress\reports\pdf\relatorio-cypress.pdf
E-mail enviado com sucesso: 250 2.0.0 OK
-
Execução dos Testes:
- O Cypress executa todos os testes no arquivo
todo.cy.js
. - Mostra o número total de testes executados, quantos passaram e se houve falhas.
- O Cypress executa todos os testes no arquivo
-
Geração de Relatórios:
- O relatório JSON gerado pelo Cypress é convertido em um relatório HTML com detalhes dos testes.
- O relatório HTML é armazenado em
cypress/reports/html/index.html
.
-
Conversão para PDF:
- Caso erros sejam encontrados nos testes, o HTML é convertido em um arquivo PDF armazenado em
cypress/reports/pdf/relatorio-cypress.pdf
.
- Caso erros sejam encontrados nos testes, o HTML é convertido em um arquivo PDF armazenado em
-
Envio de E-mail:
- O relatório PDF e o vídeo de execução dos testes são enviados para o e-mail configurado no
.env
.
- O relatório PDF e o vídeo de execução dos testes são enviados para o e-mail configurado no
O arquivo package.json
possui o seguinte script para rodar os testes e enviar relatórios automaticamente:
"scripts": { "test": "cypress run && node sendReport.js" }
- Para rodar os testes e enviar o relatório, utilize:
npm run test
Este repositório suporta integração contínua com GitHub Actions. Certifique-se de configurar um workflow para rodar os testes com o script acima. Um exemplo de configuração YAML:
name: Run Cypress Tests
on:
push:
branches:
- main
jobs:
cypress-test:
runs-on: ubuntu-latest
steps:
- name: Checkout repository
uses: actions/checkout@v3
- name: Setup Node.js
uses: actions/setup-node@v3
with:
node-version: '16'
- name: Install dependencies
run: npm install
- name: Run Cypress Tests and Send Report
run: node sendReport.js
Com isso, o repositório estará pronto para rodar testes automatizados, gerar relatórios e enviar notificações por e-mail!