mirror of
https://github.com/fsolla/teqo.git
synced 2026-11-15 02:23:07 +00:00
7 KiB
7 KiB
Skills e docs: codificar a pirâmide de testes (unit primeiro, int depois, E2E só com benefício real por fluxo)
Status: rascunho Atualizado em: 2026-08-24 Issue: #838 Priority: P2 Impeccable: A — N/A (sem UI) Rascunho UI: N/A — sem UI Appetite: ~0,5–1 dia eng; um outcome verificável Responsável: —
Intenção
Revisar as skills de desenvolvimento do repo e os docs de teste para codificar, nos donos certos, a pirâmide de testes na ordem unit → int → e2e-com-benefício: preferir testes unitários para lógica pura, integração para fronteiras Payload/DB, e E2E somente quando o fluxo tiver benefício real (fluxo crítico de usuário, navegação/UX ou contrato de URL que as camadas inferiores não cobrem). É um meta-chore de guia de agente: não muda código de produto, não muda UI, não muda schema, e mantém a política OPS72 intacta.
Persona e fluxo
- Persona / contexto: agentes que executam entregas (
work-issue/agent-work-issue) e quem revisa (code-review-and-quality), apoiados portest-driven-developmenteengineering-audit. - Job principal: escolher o nível de teste certo para cada mudança, com a ordem explícita unit→int→e2e-com-benefício, sem inventar métrica de gate.
- Fluxo desejado: ao planejar/executar uma entrega, consultar a skill que já orienta a escolha de nível → decidir o nível pela natureza da mudança (lógica pura→unit; cruza boundary API/DB→int; fluxo crítico/contrato de URL/UX real→e2e) → seguir a política OPS72 para rodar/gatear (local discricionário, CI
selected, full só no verify do deploy) → na revisão, validar que o nível escolhido é o certo. - Anti-goals de produto: NÃO virar um rewrite massivo de skills nem uma "cartilha de boas práticas" genérica; NÃO introduzir regra dura de % de cobertura nem proibição de e2e; NÃO mudar gate nem CI.
Objetivo e aceite
- Ao planejar qualquer entrega, a decisão de nível de teste é orientada pela ordem unit→int→e2e-com-benefício, e a política OPS72 continua a valer intacta.
- O dono natural da pirâmide (
test-driven-development) fica ancorado ao contexto Teqo (camadas detests/, política OPS72), sem recriar a definição do zero. - As skills de execução (
work-issue) e de revisão (code-review-and-quality) enunciam a preferência de nível, ao lado das políticas de e2e já existentes. docs/TESTING.mde a linha das 3 camadas do mapa de codebase explicitam a ordem de preferência unit→int→e2e-com-benefício.- Guardrails: política OPS72 intacta (gate local, CI blast radius
selected, full só no verify do deploy); nenhuma regra de % de cobertura; nenhuma proibição de e2e.
Dados (intenção)
- Vou apresentar dados? Não — meta-chore de guias; sem métrica de produto.
- Decisões desbloqueadas: N/A
Direção no codebase (hipótese)
- Áreas prováveis:
.agents/skills/test-driven-development/SKILL.md— reforçar a pirâmide existente (§144–186) e ancorar ao contexto Teqo; é o dono natural da ideia..agents/skills/work-issue/SKILL.md+execution-pipeline.md— adicionar a preferência de nível à política e2e OPS72 já documentada..agents/skills/agent-work-issue/SKILL.md— delegado ao pipeline; sem preferência própria (ação mínima ou nenhuma)..agents/skills/browser-testing-with-devtools/SKILL.md— reconhecer verificação em browser como caso legítimo de "e2e com benefício real" (unit não testa CSS/layout/rendering real)..agents/skills/improve-code-quality/SKILL.mde.agents/skills/code-review-and-quality/SKILL.md— checklist de nível de teste..agents/skills/ci-cd-and-automation/SKILL.md— diagrama genérico unit→integration→e2e; confirmar que não precisa de mudança (é exemplo, não regra do repo)..agents/skills/engineering-audit/SKILL.md— avaliação por classes; sem preferência de nível (ação mínima ou nenhuma)..agents/rules/codebase-map.mdc(L26) edocs/TESTING.md— explicitar a ordem de preferência na definição das 3 camadas.AGENTS.md/AGENTS-infra.md— só gates e política OPS72; sem pirâmide explícita (ação mínima ou nenhuma).
- Precedente a olhar: OPS87 (#833) e OPS88 (#834) são engineering-e2e/CI — NÃO sobrepostos;
docs/TESTING.mdjá materializa a preferência na prática ("maioria do comportamento de campanha pinada na camada int"; CI nunca full e2e) — o trabalho é codificar/fortalecer, não criar política nova. - Risco de acoplamento: manter política OPS72 intacta (gate local, CI
selected, full no verify); não criar guard que vigie conteúdo de skill neste item (os guardstests/unit/opencodeCommands.unit.spec.tseagentPoolPrompt.unit.spec.tsacoplam comando↔skill por nome;codebaseConventions.unit.spec.tsnão varre.agents/skills— decisão de engenharia, não deste plano).
Dependências
- Nenhuma
Fora de escopo
- OPS87/OPS88 (engineering de e2e/CI) — itens separados e não sobrepostos.
- Guards que vigiem conteúdo de skill (não criar neste item).
- Rewrite massivo de skills ou "cartilha de boas práticas" genérica.
Rabbit holes de produto
- Risco: virar "documentação de boas práticas" sem dente → corte: mudança mínima, só nos donos listados, sem novo documento canônico.
- Risco: tocar na política OPS72 ao reescrever trechos de
work-issue/execution-pipeline.md→ corte: edição cirúrgica, preservando gate local/CIselected/full no verify. - Risco: gastar tempo "harmonizando" skills que já estão consistentes (ex.:
agent-work-issueé só delegação) → corte: ação mínima ou nenhuma onde não há lacuna real.
Questões em aberto (produto)
- Onde fixar a âncora canônica da pirâmide? Opções:
test-driven-developmentcomo dono da definição (A) |docs/TESTING.mdcomo única fonte (B) | ambos. Recomendação: A —test-driven-developmenté o dono da definição, comdocs/TESTING.mdcomo referência operacional, evitando duplicação entre skills. browser-testing-with-devtoolsganha rótulo explícito de "e2e com benefício real"? Recomendação: sim, uma linha de justificativa no fluxo desejado, sem mudar a skill.AGENTS.md/AGENTS-infra.mdrecebem a pirâmide? Recomendação: ação mínima — só se houver uma linha curta já dedicada a testes que a receba naturalmente; sem bloco novo.
Referências
.agents/skills/test-driven-development/SKILL.md(§144–186: pirâmide + Decision Guide).agents/skills/work-issue/SKILL.mdeexecution-pipeline.md(política e2e OPS72).agents/skills/agent-work-issue/SKILL.md,browser-testing-with-devtools/SKILL.md,improve-code-quality/SKILL.md,code-review-and-quality/SKILL.md,ci-cd-and-automation/SKILL.md,engineering-audit/SKILL.mddocs/TESTING.md,.agents/rules/codebase-map.mdc,AGENTS.md,AGENTS-infra.mdtests/unit/opencodeCommands.unit.spec.ts,tests/unit/agentPoolPrompt.unit.spec.ts,tests/unit/codebaseConventions.unit.spec.ts(contexto de guards, sem ação neste item)