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