Este projeto é um estudo prático e abrangente de testes end-to-end (E2E) usando Cypress que explora diversos cenários complexos de automação, desde verificação de emails até integração com IA.
O projeto demonstra como implementar testes automatizados avançados que cobrem:
- ✅ Preenchimento de formulários de signup
- ✅ Envio de emails de confirmação
- ✅ Captura e validação de códigos de confirmação via email
- ✅ Verificação do fluxo completo de autenticação
- ✅ Create - Criação de registros
- ✅ Read - Leitura e listagem de dados
- ✅ Update - Atualização de informações
- ✅ Delete - Remoção de registros
- ✅ Upload de diferentes tipos de arquivo
- ✅ Validação de arquivos enviados
- ✅ Testes de limites e restrições
- ✅ Navegação dentro de iframes
- ✅ Interação com elementos embedados
- ✅ Validação de conteúdo em contextos isolados
- 🔄 Integração com APIs de IA externa
- 🔄 Validação automatizada via chave de API
- 🔄 Análise inteligente de resultados
- Cypress v15.1.0 - Framework de testes E2E
- Cypress Mailosaur v2.17.0 - Plugin para testes com email
- Faker.js v6.6.6 - Geração de dados fictícios
- API de IA Externa - Para validação automatizada inteligente
- Plugins de Upload - Para testes de arquivos
- Cypress iframe - Para interação com elementos embedados
- Cadastro com confirmação por email via Mailosaur
- Login e logout de usuários
- Recuperação de senha
- Create: Criação de novos registros (notas, usuários, etc.)
- Read: Listagem e visualização de dados
- Update: Edição de informações existentes
- Delete: Remoção de registros com confirmação
- Upload de imagens, documentos e arquivos diversos
- Validação de tipos de arquivo permitidos
- Testes de limites de tamanho
- Verificação de upload bem-sucedido
- Navegação dentro de elementos iframe
- Preenchimento de formulários embedados
- Validação de conteúdo em contextos isolados
- Switching entre frames
- Monitora chamadas para APIs (
**/notes,**/users, etc.) - Validação de payloads de requisições
- Simulação de respostas de erro
- Integração com APIs de IA externa
- Validação automatizada de resultados
- Análise inteligente de comportamentos
- Node.js instalado
- Conta no Mailosaur (para testes de email)
- Clone o repositório:
git clone <repository-url>
cd e2e-cypress-update- Instale as dependências:
npm install- Configure as variáveis de ambiente:
cp cypress.env.example.json cypress.env.json- Edite o arquivo
cypress.env.jsoncom suas credenciais:
{
"USER_PASSWORD": "sua_senha_de_teste",
"MAILOSAUR_SERVER_ID": "seu_server_id_mailosaur",
"MAILOSAUR_API_KEY": "sua_api_key_mailosaur",
"AI_API_KEY": "sua_chave_api_ia",
"BASE_URL": "https://sua-aplicacao.com"
}npx cypress opennpx cypress run# Executar testes e gerar dados para Allure
npx cypress run --reporter allure
# Gerar e abrir relatório Allure
npx allure generate --clean && npx allure open├── cypress/
│ ├── e2e/
│ │ ├── auth/
│ │ │ ├── signup.cy.js # Teste de cadastro com email
│ │ │ ├── login.cy.js # Teste de login
│ │ │ └── password-reset.cy.js # Recuperação de senha
│ │ ├── crud/
│ │ │ ├── notes-crud.cy.js # Operações CRUD de notas
│ │ │ ├── users-crud.cy.js # Operações CRUD de usuários
│ │ │ └── categories.cy.js # CRUD de categorias
│ │ ├── upload/
│ │ │ ├── file-upload.cy.js # Upload de arquivos
│ │ │ ├── image-upload.cy.js # Upload de imagens
│ │ │ └── bulk-upload.cy.js # Upload em lote
│ │ ├── iframe/
│ │ │ ├── embedded-forms.cy.js # Formulários em iframe
│ │ │ └── widgets.cy.js # Widgets embedados
│ │ ├── ai-evaluation/
│ │ │ ├── content-analysis.cy.js # Análise com IA
│ │ │ └── smart-validation.cy.js # Validação inteligente
│ │ └── spec.cy.js # Teste template básico
│ ├── pages/ # 📋 Page Object Model (POM)
│ │ ├── auth/
│ │ │ ├── SignupPage.js # Página de cadastro
│ │ │ ├── LoginPage.js # Página de login
│ │ │ └── PasswordResetPage.js # Página de recuperação
│ │ ├── dashboard/
│ │ │ ├── DashboardPage.js # Página principal
│ │ │ ├── NotesPage.js # Página de notas
│ │ │ └── ProfilePage.js # Página de perfil
│ │ ├── crud/
│ │ │ ├── NotesListPage.js # Lista de notas
│ │ │ ├── NoteFormPage.js # Formulário de nota
│ │ │ ├── UsersListPage.js # Lista de usuários
│ │ │ └── UserFormPage.js # Formulário de usuário
│ │ ├── upload/
│ │ │ ├── FileUploadPage.js # Página de upload
│ │ │ └── MediaGalleryPage.js # Galeria de mídia
│ │ ├── iframe/
│ │ │ ├── EmbeddedFormPage.js # Formulários embedados
│ │ │ └── WidgetPage.js # Widgets em iframe
│ │ └── base/
│ │ ├── BasePage.js # Classe base para todas as páginas
│ │ ├── NavigationComponent.js # Componente de navegação
│ │ └── HeaderComponent.js # Componente de cabeçalho
│ ├── fixtures/
│ │ ├── example.json # Dados de teste estáticos
│ │ ├── test-files/ # Arquivos para upload
│ │ ├── ai-responses/ # Respostas mockadas da IA
│ │ └── users/ # Dados de usuários para teste
│ │ ├── valid-users.json # Usuários válidos
│ │ └── invalid-users.json # Usuários inválidos
│ └── support/
│ ├── commands.js # Comandos customizados
│ ├── e2e.js # Configurações globais
│ ├── ai-helpers.js # Funções auxiliares para IA
│ ├── data-helpers.js # Helpers para manipulação de dados
│ └── page-helpers.js # Helpers específicos para POM
├── allure-results/ # Dados dos relatórios Allure
├── allure-report/ # Relatórios HTML gerados
├── cypress.config.js # Configuração do Cypress
├── cypress.env.example.json # Template de variáveis de ambiente
├── cypress.env.json # Variáveis de ambiente (não versionado)
├── package.json # Dependências e scripts
├── eslint.config.mjs # Configuração do ESLint
└── README.md # Este arquivo
- Geração de dados: Cria email único usando UUID + domínio Mailosaur
- Navegação: Acessa página de cadastro via
SignupPage.visit() - Preenchimento: Insere dados usando
SignupPage.fillForm(userData) - Submissão: Clica no botão através de
SignupPage.submitForm() - Aguarda email: Usa Mailosaur para capturar email de confirmação
- Extração de código: Usa regex para extrair código de 6 dígitos
- Confirmação: Insere código com
SignupPage.enterConfirmationCode(code) - Validação: Verifica redirecionamento usando
DashboardPage.isVisible()
// signup.cy.js
import { SignupPage } from '../pages/auth/SignupPage'
import { DashboardPage } from '../pages/dashboard/DashboardPage'
const signupPage = new SignupPage()
const dashboardPage = new DashboardPage()
// Uso limpo e legível
signupPage.visit()
signupPage.fillForm({
email: emailAddress,
password: password,
confirmPassword: password
})
signupPage.submitForm()
signupPage.enterConfirmationCode(confirmationCode)
dashboardPage.shouldBeVisible()- Criação: Testa formulários de criação com validação
- Leitura: Verifica listagens, paginação e filtros
- Atualização: Edição inline e formulários de update
- Exclusão: Confirmações e soft/hard deletes
- Drag & drop de arquivos
- Seleção múltipla
- Progress bars e feedbacks
- Validação de tipos MIME
- Switching entre frames
- Formulários embedados
- Comunicação cross-frame
- Análise automatizada de conteúdo
- Validação contextual inteligente
- Relatórios enriquecidos com insights de IA
Este projeto implementa o padrão Page Object Model para manter o código organizado, reutilizável e de fácil manutenção.
BasePage.js- Classe base com métodos comuns a todas as páginasNavigationComponent.js- Componente reutilizável de navegaçãoHeaderComponent.js- Componente de cabeçalho e menu
SignupPage.js- Encapsula elementos e ações da página de cadastroLoginPage.js- Métodos para login e validaçõesPasswordResetPage.js- Funcionalidades de recuperação de senha
NotesListPage.js- Lista, filtros e paginação de notasNoteFormPage.js- Criação e edição de notasUsersListPage.js- Gerenciamento de usuáriosUserFormPage.js- Formulários de usuário
FileUploadPage.js- Upload de arquivos e validaçõesMediaGalleryPage.js- Visualização e gerenciamento de mídia
- ✅ Reutilização de código entre testes
- ✅ Manutenção centralizada de seletores
- ✅ Legibilidade melhorada dos testes
- ✅ Separação clara entre lógica de teste e interação com UI
- ✅ Escalabilidade para projetos grandes
npm run lint- Executa verificação de lint nos arquivosnpm run lint:fix- Corrige automaticamente problemas de lintnpm run test:open- Abre Cypress em modo interativonpm run test:run- Executa testes em modo headlessnpm run test:chrome- Executa testes especificamente no Chromenpm run test:firefox- Executa testes especificamente no Firefoxnpm run allure:generate- Gera relatórios Allurenpm run allure:open- Abre relatórios Allure no navegadornpm run test:smoke- Executa apenas testes de smokenpm run test:regression- Executa suite completa de regressão
Este projeto demonstra conceitos avançados de automação:
- Integração com serviços de email para testes automatizados
- Geração de dados dinâmicos com Faker.js
- Interceptação de requisições HTTP com Cypress
- Uso de variáveis de ambiente para configurações sensíveis
- Operações CRUD completas com validações robustas
- Upload de arquivos com diferentes formatos e tamanhos
- Manipulação de iFrames e contextos embedados
- Extração de dados de emails com regex
- Page Object Model para organização de código
- APIs de terceiros para validação automatizada
- Relatórios visuais com Allure Framework
- Análise inteligente com APIs de IA
- CI/CD pipelines para execução automatizada
- Organização modular de testes por funcionalidade
- Reutilização de código através de comandos customizados
- Tratamento de erros e cenários edge cases
- Performance testing e otimização de execução
Este é um projeto de estudo, mas contribuições são bem-vindas! Sinta-se à vontade para:
- Reportar bugs
- Sugerir melhorias
- Adicionar novos cenários de teste
- Melhorar a documentação
Este projeto está licenciado sob a licença ISC.