📂 Projeto
🔧 Configuração e Execução
📋 Pré-requisitos
⚠️ Importante: Certifique-se de que as dependências foram instaladas no projeto raiz "qa-solar" e que o comando
yarn devfoi executado antes de iniciar os testes.
🚀 Comandos Disponíveis
Configuração Inicial
# Copiar variáveis de ambiente
cp .env.example .env
Execução de Testes
Modo Interativo (Cypress Test Runner)
# Abrir interface gráfica do Cypress
yarn cy:open
Modo Headless (CI/CD)
# Executar todos os testes
yarn test
# Executar apenas testes E2E
yarn cy:e2e:run
# Executar apenas testes de componentes
yarn cy:component:run
Utilitários
# Limpar arquivos de cobertura e relatórios
yarn cy:clean
# Gerar relatório de cobertura
yarn cy:coverage
# Executar linting
yarn lint
📂 Estrutura do Projeto
tests/cypress/
├── tests/
│ ├── e2e/ # Testes end-to-end
│ │ ├── specs/ # Especificações de testes E2E
│ │ │ ├── login.cy.ts # Testes de autenticação
│ │ │ ├── registerUser.cy.ts # Testes de cadastro
│ │ │ ├── profile.cy.ts # Testes de perfil
│ │ │ ├── listUsers.cy.ts # Testes de listagem
│ │ │ └── recoveryPassword.cy.ts # Testes de recuperação
│ │ ├── fixtures/ # Dados de teste estáticos
│ │ ├── shared/ # Utilitários compartilhados
│ │ │ ├── fillUserForm.ts # Helper para preenchimento
│ │ │ └── generateValidCPF.ts # Gerador de CPF válido
│ │ └── support/ # Configurações e comandos
│ │ ├── commands/ # Comandos customizados
│ │ ├── mocks/ # Mocks e interceptors
│ │ └── e2e.ts # Configuração E2E
│ └── component/ # Testes de componentes
│ ├── specs/ # Especificações de componentes
│ │ ├── AppHeader.cy.ts # Testes do cabeçalho
│ │ ├── AppFooter.cy.ts # Testes do rodapé
│ │ ├── Login.cy.ts # Testes do componente login
│ │ ├── RegisterUser.cy.ts # Testes do componente cadastro
│ │ ├── UserProfile.cy.ts # Testes do componente perfil
│ │ ├── ListUsers.cy.ts # Testes do componente listagem
│ │ ├── LoadingErrorState.cy.ts # Testes de estados
│ │ └── recoverPassword.cy.ts # Testes de recuperação
│ ├── support/ # Configurações de componentes
│ │ ├── commands/ # Comandos customizados
│ │ ├── component.ts # Configuração de componentes
│ │ └── component-index.html # Template HTML
│ └── fixtures/ # Dados de teste para componentes
├── coverage/ # Relatórios de cobertura
├── .env # Variáveis de ambiente
├── cypress.config.ts # Configuração principal
├── package.json # Dependências e scripts
├── tsconfig.json # Configuração TypeScript
└── eslint.config.mjs # Configuração ESLint
⚙️ Configurações Avançadas
🔧 Configuração do Cypress
O projeto utiliza configurações otimizadas para performance e confiabilidade:
// Principais configurações
export default defineConfig({
projectId: 'en7s34', // Cypress Cloud integration
video: false, // Desabilita gravação de vídeo
chromeWebSecurity: false, // Desabilita CORS para testes
defaultCommandTimeout: 4000, // Timeout padrão para comandos
pageLoadTimeout: 120000, // Timeout para carregamento de página
experimentalMemoryManagement: true, // Otimização de memória
retries: {
experimentalStrategy: 'detect-flake-and-pass-on-threshold',
maxRetries: 1,
passesRequired: 1
}
});
🌐 Variáveis de Ambiente
# URLs de configuração
CYPRESS_BASE_URL=http://localhost:8181 # URL da aplicação frontend
CYPRESS_API_URL=http://localhost:3001 # URL da API backend
📊 Integração com Cypress Cloud
O projeto está configurado para integração com Cypress Cloud:
- Project ID:
en7s34 - Monitoramento: Execuções e resultados centralizados
- Relatórios: Dashboard com métricas de qualidade
📚 Comandos Customizados
E2E Commands
// Login automatizado
cy.login('email@example.com', 'password')
// Navegação com espera de rede
cy.visitAndwait('/path')
// Verificação de DOM carregado
cy.checkDomLoaded('[data-testid="element"]')
// Espera por animações
cy.waitForAnimation(1000)
Component Commands
// Montagem de componentes com plugins
cy.mount(Component, { props: { title: 'Test' } })
// Interação com componentes
cy.interactWithComponent('[data-testid="button"]', 'click')
// Verificação de propriedades
cy.checkComponentProps('[data-testid="component"]', { title: 'Expected' })
🛠️ Dependências Principais
Produção
- Cypress:
14.0.3- Framework de testes - @faker-js/faker:
9.8.0- Geração de dados fictícios - cypress-network-idle:
1.15.0- Controle de requisições de rede - dotenv:
16.4.5- Gerenciamento de variáveis de ambiente
Desenvolvimento
- @cypress/code-coverage:
3.14.4- Relatórios de cobertura - @bahmutov/cypress-esbuild-preprocessor:
2.2.5- Preprocessamento - eslint-plugin-cypress:
4.1.0- Linting específico para Cypress - TypeScript:
5.8.3- Tipagem estática