Este projeto demonstra como implementar logs estruturados e rastreamento distribuído (distributed tracing) usando Cypress.
- Logs categorizados por tipo (Navegação, Formulário, Ação, Validação, etc.)
- Timestamps em cada execução de teste
- Screenshots automáticos após cada teste
- Relatórios detalhados usando Mochawesome
- Logs organizados e filtráveis
- Rastreamento distribuído para visualizar o fluxo completo de requisições
- Captura de spans e eventos para depuração avançada de microsserviços
- Clone o repositório
- Instale as dependências:
npm install- Para suporte ao rastreamento distribuído, instale pacotes adicionais:
npm install @opentelemetry/api @opentelemetry/sdk-trace-node @opentelemetry/exporter-jaeger @opentelemetry/instrumentation @opentelemetry/instrumentation-http @opentelemetry/resources @opentelemetry/semantic-conventionsPara abrir o Cypress em modo interativo:
npm run cy:openPara executar os testes em modo headless e gerar relatórios:
npm run cy:runOs logs são organizados nas seguintes categorias:
- [Navegação]: Ações de navegação entre páginas
- [Formulário]: Interações com formulários
- [Ação]: Cliques e interações do usuário
- [Dados]: Dados inseridos nos campos
- [Validação]: Verificações e asserções
- [Resultado]: Resultados das validações
Os relatórios são gerados na pasta cypress/reports e incluem:
- Screenshots de cada teste
- Logs estruturados
- Métricas de execução
- Gráficos de sucesso/falha
O projeto agora inclui suporte avançado para rastreamento distribuído (distributed tracing), permitindo visualizar o fluxo completo de requisições através de múltiplos serviços.
- Trace: Representa a jornada completa de uma requisição através de todo o sistema distribuído.
- Span: Representa uma unidade de trabalho dentro de um trace (ex: uma chamada HTTP, operação de banco de dados).
- Contexto: Informações propagadas entre serviços para correlacionar spans corretamente.
O projeto fornece comandos personalizados para rastreamento:
cy.startTrace(traceName): Inicia um novo tracecy.addEvent(eventName, attributes): Adiciona um evento ao span atualcy.addSpan(spanName, callback): Cria um novo span para uma operação específicacy.addAttribute(key, value): Adiciona um atributo ao span atualcy.markSpanError(message, error): Marca um span como contendo errocy.endTrace(): Finaliza o trace atual
Os traces podem ser visualizados em ferramentas como:
- Jaeger UI (http://localhost:16686)
- Zipkin
- Datadog APM
- New Relic
- Dynatrace
Para visualizar os traces, execute um coletor como o Jaeger:
docker run -d --name jaeger \
-e COLLECTOR_ZIPKIN_HOST_PORT=:9411 \
-p 5775:5775/udp \
-p 6831:6831/udp \
-p 6832:6832/udp \
-p 5778:5778 \
-p 16686:16686 \
-p 14268:14268 \
-p 14250:14250 \
-p 9411:9411 \
jaegertracing/all-in-one:latest- Visualização do caminho completo da requisição
- Identificação de gargalos de performance
- Isolamento rápido da causa raiz de falhas
- Compreensão das dependências entre serviços
- Depuração avançada de microsserviços