Pular para o conteúdo
Testing

Testes Automatizados Complexos: Node.js +

Bastidores da suíte de testes mais desafiadora: 700 linhas testando Node-RED, Google Sheets API via TCP. Do BDD ao GitHub Actions.

Por que isso é importante

Testes Automatizados Complexos: Node.js +. Bastidores da suíte de testes mais desafiadora: 700 linhas testando Node-RED, Google Sheets API via TCP. Do BDD ao GitHub Actions.

Atenção

Testes automatizados podem ser mais complexos que a própria implementação. 700 linhas de código testando módulo Node.js + Node-RED + Google Sheets via TCP. Lições valiosas para qualquer projeto complexo.

Alguns projetos exigem estratégias de teste que vão muito além do convencional. Quando
você precisa testar aplicações low-code interagindo com APIs externas ,
a complexidade explode exponencialmente.

Este é o relato de como criar uma suíte robusta testando Node-RED, Google Sheets API,
usando Playwright, Docker, TCP e BDD em produção.

O Contexto: Módulo Node.js para Google Sheets

Problema a resolver: processar planilhas enormes do Google Sheets sem travar o Node.js.
Solução: módulo open-source que processa dados sob demanda, respeitando o ciclo de vida
do Node.

Funcionalidades Implementadas

Checklist

  • Processamento Inteligente • 100 linhas por batch • Progresso visual em tempo real • Centenas de milhares de itens processados • Sem travar instância Node.js
  • UX Melhorada • Autocompletar nomes de planilhas • Detectar linhas e colunas com dados • Seleção específica de colunas • Configuração sem digitação manual

Atenção

Como testar módulo que funciona dentro de Node-RED (plataforma visual/low-code)? Não é possível usar testes unitários tradicionais. Solução: simular interação humana completa.

Arquitetura de Testes: Docker + Playwright + TCP

Stack completa para ambiente de testes isolado e reproduzível. Cada teste simula usuário
real interagindo com Node-RED via browser.

Setup do Ambiente

Checklist

  • 1 Docker Compose sobe Node-RED na porta 1880
  • 2 Build e instalação do módulo via npm no container
  • 3 Playwright executa testes como usuário real
  • 4 TCP server/client captura dados processados

BDD e Gherkin Style: Testes Orientados a Comportamento

Nomenclatura seguindo padrão BDD (Behavior-Driven Development). Cada teste descreve
comportamento esperado em linguagem natural.

Estrutura Gherkin Aplicada

Vantagens do BDD para Testes Complexos

Checklist

  • Legibilidade • Testes em linguagem natural • Fácil entendimento por não-devs • Documentação viva do sistema • Especificação executável
  • Manutenção • Cenários reutilizáveis • Menos acoplamento ao código • Testes focados no negócio • Validação de comportamento

Hackeando a API do Node-RED

Node-RED não foi feito para automação. Precisou hackear as APIs internas para simular
drag-and-drop, criação de flows e deploy programático.

Engenharia Reversa da Interface

Atenção

Como saber onde usuário vai clicar para posicionar componente? Telas diferentes =
coordenadas diferentes.

Solução: Interceptar requests via Network tab, replicar payload com
coordenadas fixas pelo meio da tela.

APIs Descobertas via F12

Checklist

  • Deploy Flow • POST /flows • Payload com flows completos • Coordenadas X,Y dos elementos • Tab ID para organização
  • Gestão Flows • DELETE /flows/:id • PUT /flows (update) • GET /flows (list all) • POST /flows (create)
  • Configurações • PUT /settings • POST /auth/token • GET /nodes (modules) • DELETE /nodes/:id

TCP Client/Server: Capturando Dados em Tempo Real

Como validar que módulo está processando planilha corretamente? Solução: servidor TCP
interno para capturar dados que fluem pelo Node-RED.

Arquitetura de Captura

Timeout e Robustez

Atenção

Timeout configurado porque API externa (Google Sheets) pode falhar. Teste não pode ficar esperando indefinidamente. Máximo de X segundos para resposta, depois considera falha.

Playwright: Traces e Debug Visual

Playwright gera traces visuais de cada teste. Debug incrível: vê exatamente onde clicou,
que dados inseriu, estado da aplicação.

Recursos de Debug Utilizados

Checklist

  • Modo Visual • Browser aberto durante execução • Vê interações em tempo real • Debug step-by-step • Screenshots automáticos
  • Modo Headless • Execução em background • Performance máxima • GitHub Actions ready • Traces HTML gerados

Atenção

Traces permitem "navegar" pelos passos do teste. Clica em qualquer etapa e vê:
screenshot, DOM state, network requests, console logs. Debug level: incrível.

Cross-Platform: Mac vs Linux

Desenvolvendo no Mac, rodando no GitHub Actions (Linux). Diferenças nos modificadores de
teclado quebraram testes em produção.

Solução Multi-Plataforma

GitHub Actions: CI/CD Completo

Mesma suíte rodando localmente e na nuvem. GitHub Actions executa todos os testes em
máquina Linux limpa.

Pipeline de CI/CD

Checklist

  • 1 Setup Node.js + Docker no runner Linux
  • 2 Install dependencies + Playwright browsers
  • 3 Docker Compose up com Node-RED
  • 4 Build + install módulo no container
  • 5 Execução completa da suíte de testes
  • 6 Upload de traces em caso de falha

Lições Aprendidas: 700 Linhas de Sabedoria

Algumas vezes, testar uma aplicação pode ser mais difícil que implementá-la. Mas o
resultado vale cada linha de código escrita.

Pontos-Chave para Projetos Complexos

Checklist

  • O Que Funcionou • BDD para testes complexos • Playwright para aplicações web • TCP para captura de dados • Docker para ambiente isolado • Traces para debug visual
  • Armadilhas Evitadas • Coordenadas hardcoded • Dependência de APIs externas • Diferenças entre OS • Timeouts infinitos • Testes não isolados

Atenção

Raramente você precisará chegar neste nível de complexidade. Mas quando precisar, é possível testar qualquer coisa com as ferramentas certas e estratégia adequada.

Checklist

  • ✓ Ambiente isolado com Docker
  • ✓ BDD para testes de comportamento
  • ✓ Playwright para automação web
  • ✓ TCP/HTTP para captura de dados
  • ✓ Timeouts para APIs externas
  • ✓ Cross-platform compatibility
  • ✓ CI/CD com GitHub Actions
  • ✓ Traces para debug visual