DAVITEIXEIRADEV

Como criar relatórios no Nightwatch JS v1.7.12

TL; DR: Se você mantém um sistema legado rodando Node.js 12 e precisa gerar relatórios visuais em HTML usando a versão 1.7.12 do Nightwatch JS, este guia prático resolve o seu problema. Abaixo, você encontra o passo a passo para criar um relatório personalizado usando Handlebars, sem precisar quebrar dependências do seu projeto antigo.

O Desafio dos Sistemas Legados: Node 12 e Nightwatch v1.x

Quem trabalha com QA e desenvolvimento de software sabe que nem sempre temos o privilégio de iniciar um projeto do zero com Cypress ou Playwright. Recentemente, assumi o desafio de implementar testes automatizados em um sistema legado complexo engessado no Node.js 12. Por limitações de infraestrutura e dependências da empresa, atualizar o ecossistema estava fora de cogitação, o que me obrigou a adotar o Nightwatch JS v1.7.12.

Embora o Nightwatch exiba perfeitamente no terminal quais testes passaram ou falharam, ele não oferece suporte nativo para relatórios visuais nessa versão específica (recurso que só surgiu a partir da v2.2).

Para mim, como QA, os logs de terminal bastavam. Porém, a gestão e a diretoria precisavam de um relatório visual, claro e compartilhável em PDF para acompanhar o processo de homologação e a maturidade de qualidade a cada ciclo de entrega.

Por que ferramentas padrão como Allure ou Mochawesome não funcionam aqui?

Se você está passando por isso, sua primeira reação provavelmente foi tentar instalar bibliotecas conhecidas de mercado. No entanto, no ecossistema de sistemas legados, caímos no clássico “Monstro de Frankenstein”:

  • Allure Reporter: Incompatível com o Node.js 12 do ambiente.
  • Mochawesome: Gera quebras de dependências em versões antigas do framework.

A solução? Pensar fora da caixa e construir um gerador de relatórios sob medida tirando proveito do próprio ecossistema do Node. A seguir, mostro como estruturei essa automação gerando páginas web nativas que podem ser salvas em PDF e enviadas direto para a sua diretoria.

Arquitetura da Solução: Geração Dinâmica com Handlebars

Para contornar as travas do ambiente antigo, adotei uma estratégia simples e altamente eficaz: extrair os dados nativos de execução do Nightwatch e renderizá-los em um template HTML usando o Handlebars (um template engine robusto e leve).

O resultado final é a geração automatizada de um arquivo .html estático, leve e visual, contendo consolidados cruciais para apresentar à gerência:

  • Ambiente de execução e navegador utilizado;
  • Timestamp exato da bateria de testes;
  • Tempo total de processamento (real-time);
  • Volumetria de Assertions e Casos de Teste (Sucessos, Falhas e Erros).

Dependências Necessárias (Compatíveis com Node 12)

Para colocar a solução de pé, você só precisará instalar um pacote externo. Os outros dois já são nativos do ecossistema Node.js:

  • Handlebars: Injeta as variáveis dinâmicas dos testes (como quantidade de falhas e tempo) direto nas tags do layout HTML.
  • fs (File System): Módulo nativo do Node utilizado para ler o arquivo de template e gravar o relatório gerado no disco rígido.
  • path: Módulo nativo que garante a correta manipulação de diretórios, evitando quebras de caminho de arquivos entre servidores Linux (CI/CD) e máquinas locais Windows.

Passo a Passo: Implementando o HTML Reporter Customizado

Passo 1: O Template de Visualização (html-reporter.hbs)

Crie um arquivo chamado html-reporter.hbs na raiz do seu projeto legado. Este arquivo funciona como a casca visual do relatório. Ele contém marcadores como {{browser}} ou {{totalTime}} que o Handlebars preencherá automaticamente após os testes rodarem.

Passo 2: O Script de Lógica de Dados (html-reporter.js)

Agora, crie o arquivo html-reporter.js também na raiz do projeto. É este script que vai interceptar os resultados brutos que o Nightwatch joga no terminal, calcular o tempo real de execução e mandar o Handlebars cuspir o arquivo HTML final.

Passo 3: Como Rodar os Testes e Gerar o Relatório HTML

Com os dois arquivos salvos na raiz da aplicação, você não vai mais usar o comando padrão do Nightwatch. Chame o executor apontando diretamente para o seu novo script customizado através da flag –reporter:

Dica de Ouro de QA: O arquivo .html gerado será salvo na pasta padrão tests_output do seu projeto. Você pode abrir esse arquivo localmente em qualquer navegador (Chrome, Edge, Firefox), clicar com o botão direito, selecionar “Imprimir” e salvá-lo como PDF com uma formatação limpa e profissional para enviar imediatamente por e-mail ou Slack ao seu gestor.

Resultado

O relatório HTML gerado terá a seguinte aparência:

Exemplo de relatório personalizado gerado pelo Handlebars.

Caso você queira, é possível personalizar livremente a aparência do relatório, você pode fazer isso editando o arquivo html-reporter.hbs para alterar: layout visual; cores; ícones; organização dos dados; etc.

Conclusão e Próximos Passos para o seu Projeto Legado

Automatizar testes em ambientes legados exige muito mais do que apenas aplicar receitas prontas de frameworks modernos. Exige adaptabilidade e engenharia para resolver problemas reais de negócios, como esse que tive:  traduzir logs complexos de terminal em relatórios visuais que a diretoria consiga compreender e apoiar.

Esta solução com Nightwatch JS v1.7.12 e Handlebars provou que, mesmo com restrições severas de infraestrutura (como o Node.js 12), é possível entregar valor, organização e visibilidade para o time de QA e desenvolvimento.

Referências e Agradecimentos

Esta implementação é uma adaptação prática baseada na excelente solução originalmente proposta por Denis Denisov. O conceito inicial de intercepção de dados do Nightwatch foi extraído de seu Gist público, servindo como base técnica para a construção do nosso relatório personalizado em PDF.

Se você está estruturando a cultura de qualidade da sua empresa ou deseja evoluir na carreira técnica, recomendo acompanhar os outros guias práticos que publiquei aqui no blog:

Se você também está preso a um ambiente legado, saiba que ainda é possível inovar. Às vezes, as melhores soluções nascem justamente das limitações.

Compartilhe:

Gostou dessa abordagem? Já teve que contornar alguma limitação técnica em projetos legados? Comenta aqui embaixo, vou adorar trocar ideia com você sobre isso!

Post anterior
Próximo post
Davi Teixeira
Olá! Eu sou o Davi Teixeira, Analista de QA Especialista em Acessibilidade e Mestrando em Ciência da Computação na Universidade Federal do Ceará (UFC).
Todos os Posts

Deixe um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *

Posts Relacionados