Testando apps gerados por chat: o que testar primeiro e pular
Plano priorizado para testar apps gerados por chat em React, APIs Go e Flutter: checagens mínimas unitárias, de integração e e2e que pegam a maior parte das regressões.

Por que apps gerados por chat quebram de formas previsíveis
Codebases montados por chat tendem a falhar nos mesmos pontos porque o código muitas vezes é composto por pedaços que parecem corretos, mas nunca foram forçados a concordar entre si. A maioria das funcionalidades funciona no caminho feliz, mas falha quando usuários reais clicam mais rápido, enviam entradas estranhas ou usam uma versão mais antiga do cliente.
Muito do risco está no código "cola": os pequenos trechos que conectam telas a chamadas de API, mapeiam respostas da API para o estado da UI e transformam a entrada do usuário em gravações no banco. Essas partes são entediantes, recebem menos atenção, mas controlam o fluxo do app todo.
Regressões também se concentram em fronteiras onde dois componentes devem compartilhar um contrato. A UI espera um formato, a API retorna outro. A API pressupõe que o banco aceitará um valor, e então uma restrição o rejeita. Ou uma camada muda nomes, tipos ou defaults e as outras não acompanham.
Os mesmos pontos de falha aparecem repetidamente:
- Borda do estado da UI (loading vs vazio vs erro, cliques duplos, botão voltar, caches obsoletos)
- Lacunas de validação da API (campos faltando, tipos errados, enums inesperados, checagens de auth/role)
- Escritas no banco (tratamento de nulls, restrições de unicidade, transações, atualizações parciais)
- Questões de tempo e ordenação (retries, condições de corrida, fluxos “criar então buscar”)
- Erros de serialização (datas, IDs, campos opcionais, nomes de campo entre camadas)
Velocidade torna isso mais agudo. Plataformas como Koder.ai incentivam iteração rápida: você prompta, regenera, refatora e segue em frente. Isso é uma força. Também significa que pequenas mudanças acontecem com frequência, e a chance de quebrar uma fronteira aumenta. Quando você entrega rápido, precisa de testes que rodem rápido e falhem alto.
O objetivo é confiança, não perfeição. Você não está tentando provar que cada linha está correta. Está tentando pegar as mudanças que te envergonhariam em produção: o formulário que não salva mais, a API que começou a rejeitar requisições válidas, ou a atualização do banco que para de gravar um campo sem avisar.
Uma expectativa simples ajuda: proteja contratos e os caminhos principais do usuário primeiro. Todo o resto pode esperar até provar que prejudica.
Um modo 80/20 para escolher o que testar primeiro
Com código gerado por chat, o maior risco geralmente não é compilação. É que pequenas mudanças quebram comportamentos que você assumiu óbvios.
Comece nomeando seus maiores riscos em linguagem simples. Se um bug atingir algum destes, fica caro rápido:
- Dinheiro (preços, pagamentos, créditos, metrificação)
- Permissões (quem pode ver ou mudar o quê)
- Perda de dados (deletes, sobrescritas, migrações, rollbacks)
- Disponibilidade (login, páginas centrais, endpoints-chave, timeouts)
Depois, escolha o menor conjunto de testes que cubra fluxos reais de usuário e os contratos de API abaixo deles. Uma boa regra: um caminho feliz mais um caso de “entrada ruim” para cada fluxo central. Por exemplo, “criar item” deve testar sucesso e uma falha de validação (campo obrigatório faltando), porque ambos frequentemente quebram quando os prompts mudam.
Então decida o que precisa ser detectado antes do merge vs antes do release. Antes do merge deve ser rápido e confiável. Antes do release pode ser mais lento e mais amplo.
Uma escala simples de prioridade mantém debates curtos:
- P0 (deve testar): bloqueia merge se falhar
- P1 (deveria testar): roda no CI, mas pode ser consertado em um dia
- P2 (bom ter): roda agendado ou durante refactors
Exemplo concreto: uma feature “Mudar senha” em um app React com API em Go e cliente Flutter.
P0: API rejeita senhas fracas, API atualiza o hash armazenado, e ambos os clientes mostram uma mensagem de erro em caso de falha.
P1: rate limiting e expiração de sessão.
P2: estados de UI pixel-perfect.
Se você está testando apps gerados por chat (incluindo projetos criados em ferramentas como Koder.ai), essa lente 80/20 ajuda a evitar dezenas de testes frágeis que ainda perdem as falhas que os usuários realmente sentem.
Testes unitários React que pegam a maioria das regressões
Regressões em React geralmente vêm de dois lugares: pequenos erros de lógica (formatação de dados, validação) e estado de UI que não corresponde à realidade (loading, erros, botões desabilitados). Comece onde as falhas prejudicam os usuários.
Comece com lógica pura (barato, alto sinal)
Se uma função tem entradas e saídas claras, teste-a antes de qualquer UI. Esses testes são rápidos, raramente flaky, e te protegem de pequenas mudanças de uma linha que quebram muito.
Bons alvos iniciais: formatadores de data e moeda, validadores de campo, mapear uma resposta de API para view models, e reducers ou máquinas de estado que dirigem telas.
Depois escreva alguns testes de componente para as telas que as pessoas usam para completar trabalho. Em vez de muitos snapshots rasos, use poucos testes que atuem como um usuário: digitar em um formulário, clicar um botão e afirmar o que o usuário vê.
Foque em estados de UI que comumente quebram: validação e comportamento de submit, estados desabilitados (incluindo prevenção de double-submit), loading e retry, renderização de erro, e estado vazio vs resultados.
Para qualquer coisa que fale com a rede, faça mock na fronteira. Trate seu cliente de API como a seam: afirme a forma da requisição (método, path, query params chave e payload), depois devolva uma resposta realística para o componente. Isso pega drift de contrato cedo, especialmente quando o backend está sendo gerado ou editado rapidamente.
Uma regra que continua valendo: toda vez que você consertar um bug, adicione um teste que falharia se o bug voltasse. Por exemplo, se uma página gerada por Koder.ai já enviou userId em vez de id, adicione um teste que verifica as chaves do payload de saída antes de seguir em frente.
Testes unitários Go que pagam rápido
Handlers em Go podem parecer corretos enquanto escondem pequenas falhas de lógica que viram bugs reais. Os ganhos mais rápidos vêm de testes que fixam entradas, permissões e regras que mutam dados.
O que travar primeiro
Comece com validação de requisição. Código gerado por chat pode aceitar strings vazias, ignorar tamanhos máximos ou aplicar defaults errados. Escreva testes que chamem o handler (ou a função de validação que ele usa) com payloads ruins e afirme uma resposta 400 clara com um erro útil.
Em seguida, trave auth e permissões na borda. Uma regressão comum é “auth existe, mas o papel errado ainda consegue atualizar”. Teste o caminho feliz e alguns casos forbidden construindo uma requisição com contexto de usuário e chamando o handler ou middleware.
Depois foque em regras de negócio que mutam dados. Endpoints de create, update, delete e qualquer endpoint idempotente (como “create se não existir”) merecem testes rigorosos. São pontos onde um refactor pequeno pode permitir duplicatas, pular uma transição de estado necessária ou sobrescrever campos imutáveis.
Faça o mapeamento de erros explícito. Sua API deve traduzir consistentemente falhas comuns nos códigos de status certos: input inválido (400), não encontrado (404), conflito (409) e erros inesperados (500). Testes unitários devem afirmar tanto o status quanto uma forma de erro estável para que os clientes não quebrem.
Checagens de alto ROI para cobrir cedo: campos obrigatórios e defaults, checagens de permissão por papel, idempotência e mapeamento limpo entre falhas comuns e códigos de status.
Testes table-driven mantêm casos de borda legíveis:
tests := []struct{
name string
body string
wantStatus int
}{
{"missing name", `{"name":""}`, 400},
{"too long", `{"name":"aaaaaaaaaaaaaaaa"}`, 400},
}
Testes unitários Flutter que evitam surpresas no cliente
Bugs em Flutter em apps gerados por chat frequentemente vêm de pequenas suposições do lado cliente: um campo que às vezes é nulo, uma data que chega em formato diferente, ou uma tela que trava em loading depois de um retry. Um punhado de testes focados pode pegar a maioria desses problemas antes que virem chamados de suporte.
Comece com o mapeamento de dados. O maior risco é a fronteira entre JSON e seus modelos Dart. Escreva testes que alimentem payloads realistas no fromJson e confirme que você lida com campos faltantes, chaves renomeadas e valores estranhos. Enums e datas são culpados usuais: um novo valor de enum não deve travar o app, e o parsing deve falhar de forma segura (com erro claro) em vez de produzir valores silenciosamente errados.
Em seguida, teste transições de estado. Seja usando BLoC, Provider, Riverpod ou setState, trave o que os usuários batem todo dia: primeiro carregamento, refresh, erro e retry. Esses testes são baratos e pegam o problema do “spinning forever” rápido.
Um conjunto curto que costuma compensar:
- Parsing de modelo para 2–3 objetos núcleo (incluindo enums desconhecidos, nulos e parsing de datas/números)
- Transições de view-model ou bloc (loading → success, loading → error, error → retry → success)
- Regras de input em formulários chave (campos obrigatórios, formatação básica, limites de comprimento e numéricos)
- Comportamento do cliente de API com camada HTTP mockada (timeouts, retries, “sem internet”)
- Um teste que confirma que você mostra uma mensagem amigável quando o servidor retorna erro de validação
Exemplo concreto: uma tela “Criar Projeto” construída com Koder.ai pode aceitar nome do projeto e região. Teste unitário que nome vazio é bloqueado, espaços em branco são truncados e um valor de região desconhecido vindo da API não quebra o dropdown.
Golden UI tests podem ajudar, mas mantenha-os raros. Use-os apenas para algumas telas estáveis onde regressões de layout realmente atrapalham, como tela de login, um dashboard principal, ou um fluxo crítico de checkout/criação.
Testes de integração de alto valor entre React, Go e Postgres
Quando você constrói rápido com ferramentas de chat, os bugs mais dolorosos aparecem entre camadas: a página React chama uma API, o handler em Go escreve no Postgres, então a UI assume uma forma de resposta que mudou. Testes de integração são a forma mais rápida de pegar essas quebras entre camadas sem tentar testar tudo.
Uma boa regra: para cada recurso central (usuários, projetos, pedidos, etc.), teste um caminho real com Postgres ponta a ponta pela API Go. Não todo caso de borda. Só um caminho feliz que prove que a fiação funciona.
O conjunto mínimo de integração que pega a maioria das regressões
Comece com um pequeno conjunto de checagens de alto sinal:
- Caminho API + DB por recurso central: criar ou atualizar via HTTP e então verificar que existe (lendo de volta via API ou checando campos armazenados)
- Estabilidade de contrato: trave formatos de request e response para endpoints que os clientes mais usam
- Integração de auth: verifique parsing de token, checagens de papel e a diferença entre 401 e 403
- React → API submit principal: um teste para o caminho de submit do formulário principal (sucesso + um erro comum)
- Flutter → API leitura/gravação principal: uma listagem/detalhe e uma ação de escrita usando endpoints de produção
Mantenha-os estáveis: um cenário, dados reais, superfície pequena
Use uma instância real de Postgres para esses testes (geralmente um DB descartável). Faça seed apenas do que precisa, limpe depois de cada teste e mantenha as asserções focadas no que os usuários notam: dados salvos corretos, permissões aplicadas e clientes capazes de parsear respostas.
Exemplo: feature “Criar Projeto”. O teste de integração em Go acerta POST /projects, checa 201, depois busca o projeto e confirma nome e owner ID. O teste de integração React submete o form de criação e confirma que o estado de sucesso mostra o novo nome. O teste Flutter abre a lista de projetos, cria um projeto e confirma que aparece após refresh.
Se você gera apps no Koder.ai, esses testes também te protegem quando UI ou handlers regenerados mudam acidentalmente um formato de payload ou formato de erro.
Testes e2e mínimos que se mantêm estáveis
E2E são sua rede de segurança “o app funciona ponta a ponta?”. São mais valiosos quando permanecem pequenos e entediantes: smoke tests que provam a fiação entre React, API Go, Postgres e o cliente Flutter depois de mudanças.
Escolha apenas algumas jornadas que representam dinheiro real ou dor real se quebrarem: entrar/sair, criar um registro, editar e salvar, buscar/filtrar e abrir um resultado, e checkout/pagamento (se houver).
Rode em um navegador e um perfil de dispositivo primeiro (por exemplo, Chrome para web e um tamanho de celular típico para mobile). Expanda para mais navegadores/dispositivos só quando clientes reportarem problemas reais lá.
Estabilidade é um recurso. Faça testes determinísticos para que falhem apenas quando algo realmente quebrar:
- Use contas de teste fixas e dados seedados
- Congele o tempo (ou ajuste o relógio do app) para lógica de datas previsível
- Espere por sinais claros (um elemento específico, mudança de rota ou resposta de API), não sleeps aleatórios
- Resete o estado entre execuções (limpeza de DB ou tenant novo)
- Corrija testes flaky nesta semana ou delete-os
Use e2e para validar o caminho principal, não todo caso de borda. Casos de borda pertencem a unit e integration tests onde são mais baratos e menos frágeis.
O que pular (ou adiar) sem remorso
A maneira mais rápida de perder tempo é escrever testes que parecem completos mas raramente pegam bugs reais. Um conjunto pequeno e focado bate uma rede ampla que ninguém confia.
Snapshot tests são uma armadilha comum em React e Flutter. Grandes snapshots mudam por motivos inofensivos (texto, leve ajuste de layout, refactors), então times ou aceitam atualizações ruidosas ou param de olhar para falhas. Mantenha snapshots apenas para uma superfície pequena e estável, como a saída de um formatador, não telas inteiras.
Outro pulo fácil: testar bibliotecas de terceiros. Você não precisa provar que React Router, um date picker ou um HTTP client funcionam. Teste seu ponto de integração: onde você o configura, mapeia dados para ele ou trata seus erros.
Testes de estilo raramente valem a pena. Prefira checagens de comportamento (botão desabilitado quando formulário inválido, mensagem de erro mostrada no 401) a afirmações de pixel. Faça exceções quando estilo afeta comportamento ou conformidade: requisitos de contraste, outlines de foco para teclado ou um layout responsivo crítico que muda o que usuários podem fazer.
Evite duplicar a mesma checagem em cada camada. Se você já afirma em um teste de integração Go que requisições não autorizadas retornam 401, provavelmente não precisa da mesma asserção idêntica em unit tests e e2e.
Testes de performance valem a pena, só depois. Espere até seu fluxo estar estável (por exemplo, depois que uma feature gerada por Koder.ai parar de mudar diariamente), então defina um ou dois alvos mensuráveis e monitore consistentemente.
Exemplo: uma feature, o conjunto mínimo de testes para todas as camadas
Suponha que você entregue uma feature simples: um usuário autenticado edita seu perfil e muda o e-mail. É um bom canário porque toca estado da UI, regras da API e cache do cliente.
Aqui está o conjunto mínimo de testes que normalmente pega a maioria das regressões sem virar uma suíte completa.
Os testes 80/20 para essa feature
- React (unit): comportamento do formulário. Dado email inválido, submit permanece desabilitado e um erro inline aparece. Dado email válido, submit habilita. Adicione um teste que o banner de erro aparece quando a API retorna um erro conhecido (por exemplo, “email já em uso”).
- Go API (unit): regras de negócio. Valide formato de email e bloqueie valores vazios. Se sua regra for “email deve ser único”, teste a checagem de unicidade e o código/mensagem de erro exato que seus clientes dependem. Teste também que campos de auditoria atualizam (por exemplo,
updated_atmuda) quando o email muda. - Flutter (unit/widget): estado da tela e mensagens. No sucesso, a tela mostra o novo email e limpa erros antigos. Na falha, o usuário vê uma mensagem clara e o botão de submit volta a um estado utilizável.
- Integração (Go + Postgres): atualização e unicidade. Crie dois usuários, tente setar o email do usuário A para o email do usuário B, afirme a falha correta e confirme que o banco não foi parcialmente atualizado.
- E2E (um caminho feliz): mudar email ponta a ponta. Faça login, abra o perfil, mude o email, salve, atualize a página e confirme que persiste.
O que isso cobre (e por que é suficiente)
Esse conjunto mira os pontos de quebra comuns: validação e estados desabilitados na UI React, drift de regras em Go e UI confusa ou obsoleta no Flutter. Se você constrói com uma plataforma como Koder.ai, onde código pode mudar rápido entre camadas, esses testes te dão sinal rápido com manutenção mínima.
Passo a passo: montar um plano de testes priorizado em uma hora
Defina um timer para 60 minutos e foque em risco, não perfeição. Código gerado por chat pode parecer correto mas ainda perder pequenas regras, casos de borda ou fiação entre camadas. Seu objetivo é um conjunto curto de testes que falham alto quando o comportamento muda.
0–15 min: escolha os fluxos que pagam as contas
Anote as 5 ações de usuário que devem funcionar sempre. Mantenha concretas: “entrar”, “criar um pedido”, “pagar”, “ver histórico de pedidos”, “resetar senha”. Se estiver construindo no Koder.ai, escolha o que você pode demonstrar ponta a ponta hoje, não o que espera adicionar depois.
15–35 min: trave as regras com testes pequenos
Para cada fluxo, encontre a regra que causaria dano real se errada. Adicione um único teste unitário rápido por camada onde a regra vive:
- React: validação, formatação, estados condicionais de UI (loading, vazio, erro)
- Go API: regras de negócio, checagens de permissão, casos de input
- Flutter: mapeamento cliente, transições de estado, retry e offline
Exemplo: “Checkout não deve permitir quantidade negativa.” Teste uma vez na API e uma vez na UI/cliente se ambos aplicam a validação.
35–50 min: adicione uma checagem real de integração por fluxo
Adicione um teste de integração por fluxo que acione a API real e faça uma gravação real no Postgres. Mantenha estreito: criar, atualizar, buscar e verificar o resultado armazenado. Isso pega erros de fiação como nomes de campo errados, transações faltando ou migrações quebradas.
50–60 min: escolha e2e mínimos e defina ordem no CI
Escolha 3 a 6 fluxos e2e totais. Prefira caminhos com mais cruzamento de camadas (login → criar → ver). Defina dados de teste estáveis (usuário seedado, IDs conhecidos, relógio fixo) para que testes não dependam de aleatoriedade.
Rode testes nesta ordem no CI: unit tests em todo push, integration tests em todo push ou na branch main, e e2e apenas na main ou noturno quando possível.
Erros comuns, checklist rápido e próximos passos
A maneira mais rápida de perder tempo é testar a coisa errada no nível errado. A maioria das falhas é previsível: contratos obscuros, mocks irrealistas e uma suíte que ninguém confia.
Um erro comum é começar os testes antes de concordar no contrato da API. Se a API Go muda códigos de erro, nomes de campo ou regras de paginação, seus clientes React e Flutter vão falhar de maneiras que parecem aleatórias. Escreva o contrato primeiro (request, response, status codes, formatos de erro), depois trave-o com alguns testes de integração.
Outra armadilha é usar mocks demais. Mocks que não se comportam como Postgres, middleware de auth ou respostas de rede reais criam uma falsa sensação de segurança. Use unit tests para lógica pura, mas prefira testes de integração finos para qualquer coisa que cruze boundaries de processo.
Um terceiro erro é apoiar e2e para tudo. E2E é lento e frágil, então deve proteger apenas as jornadas de maior valor. Coloque a maior parte da cobertura em unit e integration tests, onde falhas são mais fáceis de diagnosticar.
Por fim, não ignore flakiness. Se testes falham às vezes, o time para de escutar. Trate testes flaky como bugs na pipeline e corrija-os rápido.
Checklist rápido antes de adicionar mais testes:
- Liste os fluxos principais do usuário e os modos de falha mais críticos (auth, pagamentos, salvar dados, busca, offline)
- Afirme contratos de API e códigos de erro com um pequeno conjunto de testes de integração
- Mantenha 3 a 6 fluxos e2e estáveis que correspondam a objetivos reais do usuário
- Remova ou reescreva testes flaky em até um dia, não “depois”
- Revise falhas por categoria (React, Go API, DB, Flutter) para que padrões apareçam
Próximos passos: implemente o plano, acompanhe regressões por camada e mantenha a suíte pequena de propósito. Se você constrói com Koder.ai, ajuda adicionar testes logo depois de confirmar o contrato da API gerada e antes de expandir features.
Se você está trabalhando em apps gerados pelo Koder.ai e quer um lugar único para iterar web, backend e mobile, a plataforma em koder.ai é desenhada para esse fluxo. Seja qual for a ferramenta, a abordagem de testes é a mesma: trave os contratos, cubra os caminhos principais e mantenha a suíte entediante o bastante para que vocês realmente a rodem.
Perguntas frequentes
Por que apps gerados por chat quebram nos mesmos pontos repetidamente?
Eles frequentemente falham nas bordas: UI ↔ API ↔ banco de dados. As peças geradas podem parecer corretas isoladamente, mas pequenas divergências de contrato (nomes de campo, tipos, defaults, códigos de status) aparecem quando usuários reais fazem coisas “bagunçadas” como clicar duas vezes, enviar entradas estranhas ou usar uma versão ligeiramente mais antiga do cliente.
O que devo testar primeiro se só tenho algumas horas?
Teste a cola primeiro: os fluxos principais do usuário e os contratos de API por baixo deles. Um conjunto pequeno que cobre “criar/atualizar + validar + salvar + ler de volta” costuma pegar mais bugs reais do que muitos snapshots de UI.
Como escolher prioridades de teste sem discutir demais?
Comece pelos riscos que ficam caros rapidamente:
- Fluxos de dinheiro (preços, créditos, cobrança, metrificação)
- Permissões (quem pode ver/alterar o quê)
- Perda de dados (deletes, sobrescritas, migrações)
- Disponibilidade (login e endpoints centrais)
Em seguida, escreva os menores testes que provem que esses itens não podem derivar silenciosamente.
Qual é um bom esquema P0/P1/P2 para código gerado por chat?
- P0: bloqueia merge se falhar (fluxos centrais, contratos, auth, gravações de dados)
- P1: roda no CI; corrigir em até um dia (rate limits, expiração de sessão, retries)
- P2: rodar agendado ou durante refactors (polimento de UI, casos raros)
Decida a categoria primeiro, depois escreva o teste.
Quais testes React pegam mais regressões com menos esforço?
Comece com testes de lógica pura (formatadores, validadores, mapear resposta da API para view models, reducers/ máquinas de estado). Depois adicione alguns testes de componente que atuem como usuário:
- submit com sucesso
- falha de validação
- loading → sucesso
- loading → erro → retry
Faça mock na fronteira do cliente e verifique as chaves do payload de saída para pegar drift de contrato cedo.
Quais testes unitários de Go trazem maior retorno?
Trave quatro coisas:
- Validação de requisição (payload inválido → 400 com erro claro)
- Checks de auth e papéis (comportamento unauthorized vs forbidden)
- Regras de negócio que mutam dados (create/update/delete, idempotência)
- Mapeamento de erro (400/404/409/500 com formato de erro estável)
Use testes table-driven para manter casos de borda legíveis.
Quais testes Flutter previnem mais surpresas no cliente?
Foque na fronteira JSON → modelos e nas transições de estado:
fromJsonlida com campos faltantes/nulos sem travar- valores desconhecidos de enum não devem quebrar (ou mapeiam para um caso “unknown”)
- parsing de datas/números previsível
- transições de view-model/BLoC: loading → sucesso, loading → erro, erro → retry → sucesso
Adicione também um teste que garante mostrar uma mensagem amigável quando o servidor retorna erro de validação.
Qual é o conjunto mínimo de testes de integração para React + Go + Postgres?
Eles pegam quebras entre camadas:
- Um caminho real com DB por recurso principal (escrever via HTTP e verificar campos armazenados)
- Integração de auth (parsing de token, checagens de papel, 401 vs 403)
- Estabilidade de contrato para endpoints mais usados (formato de request/response)
Mantenha cada teste com um cenário, dados mínimos seedados e verificações focadas no que o usuário nota.
Quantos testes end-to-end eu realmente preciso, e como mantê-los estáveis?
Mantenha-os monótonos e poucos:
- Login/Logout funciona
- Criar um registro, depois atualizar e ver após refresh
- Editar e salvar
- Buscar/filtrar e abrir um resultado
- Checkout/pagamento se houver
Deixe determinísticos com contas de teste fixas, dados seedados, esperas claras (sem sleeps aleatórios) e reset de estado entre execuções.
Quais testes posso postergar sem arrependimentos?
Adie testes que geram ruído ou duplicam garantias:
- Grandes snapshots de UI para telas inteiras (mudam por razões inocentes)
- Testar bibliotecas de terceiros diretamente (teste seu ponto de integração)
- Verificações pixel-perfect de estilo (prefira checagens de comportamento)
- Repetir a mesma asserção de auth/401 em todas as camadas
Adicione um teste quando consertar um bug real — assim a suíte cresce a partir da dor real.