Triagem de Falhas — Cypress Core

Protocolo de como uma falha de teste é investigada e resolvida neste projeto. A captura do fato bruto é automática (ver Passo 0) — a investigação continua manual/com o Claude, é o "modo manual" da automação com IA descrito na conversa de 20/08/2026: processo formal em vez de correção no chute, mas sem gatilho automático pra investigar sozinho.

Passo 0 — Onde achar falha pra investigar

Duas formas de uma falha chegar até aqui:

De vez em quando (ou sempre que for mexer no projeto), vale abrir docs/falhas-pendentes.md e ver se tem algo acumulado esperando triagem.

Ponto cego confirmado (31/08/2026): a captura automática só cobre falha de teste (it()) — falha de hook (before/beforeEach de nível de suíte, ex.: cy.login() travando dentro do before() raiz) não passa pelo afterEach global, então nunca vira entrada em falhas-pendentes.md. Esse tipo de falha só aparece se alguém trouxer o print/log na hora, ou olhando o relatório/terminal direto — vale lembrar disso antes de concluir "não tem nada pendente" só porque o arquivo está vazio.

Passo 1 — Investigar de verdade antes de corrigir

Nunca alterar um seletor, endpoint ou payload só por suposição. Confirmar a causa real:

Precedente: metade dos bugs consertados neste projeto não eram o que pareciam à primeira vista — o botão "Detalhes" nunca foi um <button> (era um MUI Chip), o scroll que "não funcionava" na verdade estava sendo desfeito pelo próprio Cypress, o guid da resposta de "Gerar Boleto" era provisório. Nenhum desses foi resolvido no chute — só inspecionando de verdade.

Passo 2 — Classificar a falha

Categoria O que é Sinal reconhecível (bate na hora, sem reinvestigar) Ação
Seletor/DOM desatualizado A tela mudou (elemento, classe, estrutura) e o Page Object ficou pra trás Corrigir o Page Object, comentando o motivo real da mudança
Regra de negócio nova ou mudada O comportamento do produto é diferente do que o teste (ou a documentação) esperava Corrigir o teste e atualizar docs/regras-de-negocio.md
Instabilidade passageira Timing, rede, ambiente lento — não é determinístico "Conta digital [...] não está ativa" = VS ainda não aprovou a conta nova (não é lentidão, só volta com reinício manual em HML); timeout de sessão logo após login = cold-boot variável do Electron headless Não mexer no código só por isso; se virar padrão recorrente, reconsiderar como categoria acima
Ambiente fora do ar / degradado Falha não relacionada ao teste nem à regra — o ambiente de homolog está com problema cy.visit() falhando com 503 na própria home (não numa tela específica), muitos specs de categorias diferentes falhando na mesma janela de poucos minutos = ambiente inteiro em manutenção/fora Não mexer no código; reportar e esperar o ambiente normalizar

Cuidado ao rodar filtrado (--env grep/grepTags, it.only)

before() roda sempre, mesmo quando nenhum it() de dentro bate com o filtro — achado real em 26/08/2026 (ver docs/historico-de-falhas.md). O @cypress/grep só marca os it()s que não batem como pendentes; não pula o before() do describe. Um spec com efeito colateral real no before() (cria Administradora/Condomínio) ainda cria dado de verdade mesmo rodando só por tag, mesmo que o describe inteiro esteja fora do filtro pedido — isso já aconteceu de verdade rodando grepTags=@boleto+@regressao sem --spec, que tocou before() de specs fora desse filtro. Mitigação: sempre combinar grepTags/grep com --spec restringindo os arquivos, ou usar grepFilterSpecs=true (pré-filtra o arquivo inteiro antes de carregar) — ver README, seção "Rodar por tag".

Passo 3 — Corrigir e documentar

Fora de escopo do modo manual

A captura do fato bruto já é automática (ver Passo 0). O que continua manual é a investigação — decidir a causa real exige alguém (ou uma sessão do Claude) olhando de verdade; não tem como isso rodar sozinho. "Modo agendado" (rodar a suíte e processar falhas-pendentes.md sozinho, num horário fixo, sem ninguém pedir) é o próximo passo possível, ainda não implementado.