Otimizar Testes
Objetivo: acelerações reais na execução de testes/runtime do OpenClaw com cobertura intacta. Não adicione shards, pule asserções, enfraqueça gates ou ajuste flags do runner como correção principal.
Manual
- Leia
docs/help/testing.md,docs/ci.mde os arquivosAGENTS.mdespecíficos para qualquer subárvore que você editar. - Estabeleça evidências antes das edições:
- Ranking completo:
pnpm test:perf:groups --full-suite --allow-failures --output .artifacts/test-perf/<nome>.json - Arquivo específico:
timeout 240 /usr/bin/time -l pnpm test <arquivo> --maxWorkers=1 --reporter=verbose - Suspeita de import: adicione
OPENCLAW_VITEST_IMPORT_DURATIONS=1 OPENCLAW_VITEST_PRINT_IMPORT_BREAKDOWN=1
- Ranking completo:
- Ataque primeiro os hotspots de maior retorno:
- barrels amplos ou
importActual()em testes lentos vi.resetModules()por teste junto com imports novos- configuração cara de gateway/servidor/cliente onde reset/reuso prova o mesmo comportamento
- testes principais que afirmam comportamento de extensão
- construção duplicada de fixtures ou asserções de contrato
- barrels amplos ou
- Prefira correções de qualidade de produção:
- seams estreitos de runtime em vez de mocks amplos
- helpers puros para parsing/metadados estáticos
- deps injetadas em vez de resets de módulo
- testes de propriedade da extensão para comportamento de plugin/provider/channel empacotado
- Após cada alteração, reexecute o mesmo benchmark e a lane de teste de prova. Registre tempo de parede antes/depois, duração do Vitest e RSS máximo quando disponível.
- Execute
pnpm check:changed; execute gates mais amplos (pnpm check,pnpm test,pnpm build) quando as superfícies tocadas exigirem. - Faça commits scoped com
scripts/committer "<mensagem convencional>" <caminhos...>. Faça push quando solicitado. Se o CI estiver vermelho, inspecione comgh run list/view, corrija, faça push, repita até que o CI atual esteja verde ou um bloqueador seja comprovadamente não relacionado.
Saída
Termine com o(s) commit(s) pushados, timings antes/depois, gates executados, estado atual do CI, e quaisquer lanes restantes que precisem de otimização separada.