You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
test(e2e): 15 → 28 das 32 specs no CI, provadas rodando (#63)
Os números da issue e dos 5 docs tinham envelhecido DE NOVO: o épico IA 360
trouxe 12 specs e nenhuma entrou no gate. Eram 32 specs com 15 rodando, não
"10 das 20".
Não adicionei nada no escuro. Montei o ambiente do CI localmente (Supabase
local + baseline.sql aplicado + next build + next start) e rodei as candidatas:
**41 testes verdes em 13 specs**. Só entra o que passou.
DOIS DEFEITOS DE VERDADE, achados por rodar:
1. `followup-builder`, `followup-queue` e `followup-journey` liam
`.e2e-creds.json` no CARREGAMENTO DO MÓDULO e só depois o `beforeAll` rodava
o seed, que escreve no arquivo — o objeto em memória nunca via o bloco novo.
O diagnóstico anterior ("o seed não grava followup_agent_fixtures") descrevia
o sintoma; o seed sempre gravou certo. Varri as 32 specs atrás das irmãs: 3
tinham o defeito, 3 já reliam (`queue-assign` é o controle positivo — ela
passa no CI justamente por reler). Corrigidas as 3.
2. `escalacao-ciclo` e `central-de-avisos-capacidades` não semeiam sozinhas — o
cabeçalho delas manda rodar o seed à mão, e o workflow não rodava. Agora roda.
`--env-file=.env.local` só no de capacidades, e a assimetria tem motivo: ele
importa `lib/env.ts`, que lê `process.env`; o de escalação parseia o
`.env.local` sozinho. Sem a flag ele morre na validação Zod.
`capacidades-do-agente` fica de fora porque REPROVA, e o vermelho está certo:
ligar o pacote "Atender" enche o teto de 20 capacidades e a UI DESABILITA o
checkbox da capacidade crítica que o próprio desenho manda o humano marcar à mão
("o pacote não liga por você"). O seed liga 3, o pacote traz >=17 automáticas —
determinístico, não dado sujo. É o catálogo ter crescido depois que a spec foi
escrita, e ninguém soube porque ela nunca rodou no gate: a tese desta issue,
demonstrada. Fica declarado no summary do job, não escondido.
NÃO promovi o `e2e` a check obrigatório, embora a issue peça: eu ACABEI de mudar
o conjunto de specs, então as execuções verdes anteriores eram de outro conjunto
— usá-las como prova de estabilidade deste seria medir uma coisa e concluir
sobre outra, que é o erro que o dono do repo já pegou em si mesmo neste mesmo
item.
Ressalva medida: o ensaio local rodou num banco com dados acumulados de sessões
anteriores (schema idêntico — baseline re-aplicado —, dados não). Um banco fresco
do CI pode expor dependência de estado que aqui passou despercebida. Como o job
não é obrigatório, o pior caso é vermelho visível, não merge bloqueado.
gov:verify verde: 256 arquivos, 2372 testes.
Refs #63
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01HstH7nNmrTvCtZsasppeHj
Copy file name to clipboardExpand all lines: CLAUDE.md
+1-1Lines changed: 1 addition & 1 deletion
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -188,7 +188,7 @@ Checks **obrigatórios** na branch protection da `main` (verificado na configura
188
188
189
189
Check **não-obrigatório** (roda, mas não segura merge):
190
190
191
-
-**`e2e`** (`e2e.yml`) — sobe Supabase local, aplica o `baseline.sql` e roda **10 das 20 specs** Playwright (`smoke`, `auth`, `error-pages`, `password-recovery`, `signup-journey`, `rbac-roles`, `inbox-scope`, `reset-password-mfa`, `degradacao-silenciosa`, `vps-webhook-outbound-ssrf`). As outras 10 dependem de serviço externo (WAHA, Redis, Resend, Nuvemshop) e seguem sem gate (issue #63) — inclusive a `vps-fresh-onboarding`, que é P0.
191
+
-**`e2e`** (`e2e.yml`) — sobe Supabase local, aplica o `baseline.sql` e roda **28 das 32 specs** Playwright. As 4 de fora: `followup-journey` e `webhooks` (precisam de WAHA), `vps-fresh-onboarding` (WAHA + Redis + Resend + Nuvemshop — é a P0 da doutrina de QA Visual) e `capacidades-do-agente`, que está fora porque **reprova de verdade**: ligar o pacote "Atender" enche o teto de 20 capacidades e a UI desabilita o checkbox da capacidade crítica que o próprio desenho manda marcar à mão. O `e2e`**ainda não é obrigatório** — o conjunto de specs mudou em 2026-08-05, então as execuções verdes anteriores eram de outro conjunto e não servem de prova de estabilidade deste (issue #63).
192
192
193
193
Ao mexer em schema, RLS, RBAC, atribuição, escopo, roteamento, follow-up, webhooks ou automações: rode `pnpm test:db`**localmente** antes de abrir PR. É o único caminho que exercita o `baseline.sql` que o self-hoster realmente aplica.
| H3 — Verificável | ✅ |`lint` + `typecheck` + `test:unit` + `build`; CI roda os 3 primeiros em PR |
30
30
| H4 — Preparado para agentes | ✅ |`CLAUDE.md` doutrinal forte; `AGENTS.md`**criado nesta auditoria**; documentação técnica extensa; **e o CI roda o gate de isolamento RLS** (job `invariants` → `pnpm test:db`) |
31
-
| H5 — Automação avançada | ⚠️ **parcial**| CI confiável e ambiente isolado ✅ (Postgres efêmero pg17, worktrees, gov-loop com maker≠checker e hash-check). Faltam: **10 das 20 specs E2E fora do CI** (10 rodam via `e2e.yml`, ainda não-obrigatório), `format:check` fora do CI, e o comando único local (`gov:verify`) não cobre `test:db`/`test:e2e`|
31
+
| H5 — Automação avançada | ⚠️ **parcial**| CI confiável e ambiente isolado ✅ (Postgres efêmero pg17, worktrees, gov-loop com maker≠checker e hash-check). Faltam: **4 das 32 specs E2E fora do CI** (28 rodam via `e2e.yml`, ainda não-obrigatório — e enquanto for opcional um PR que o quebre entra na `main`), `format:check` fora do CI, e o comando único local (`gov:verify`) não cobre `test:db`/`test:e2e`|
32
32
33
33
**Por que H4 e não H5:** a instrução da auditoria é explícita — não atribuir nível só
34
34
porque os arquivos existem, avaliar se o processo está implementado. Aqui está: o gate de
0 commit comments