🥷🏻 Usando Plugins
History
| Version | Changes |
|---|---|
| v3.0.3-canary.68e71482 |
Estenda o comportamento do Poku com plugins: conecte no ciclo de vida dos testes, customize como os arquivos de teste sao executados em processos e habilite comunicacao entre processos.
O Que Plugins Podem Fazer?
- Executar logica de setup antes da suite iniciar.
- Interceptar ou customizar a descoberta de arquivos.
- Executar teardown depois que a suite terminar.
- Modificar o comando usado para executar cada arquivo de teste.
- Habilitar canais IPC entre o Poku e os processos de teste.
- Reagir a cada processo de teste criado.
- Customizar a saida com reporters customizados.
Inicio Rapido
Adicione plugins ao arquivo de configuracao do Poku usando a opcao plugins:
// poku.config.ts
import { defineConfig } from 'poku';
import { myPlugin } from './my-plugin';
export default defineConfig({
plugins: [myPlugin],
});
Ciclo de Vida dos Plugins
Os plugins sao executados na seguinte ordem:
setup()e chamado para cada plugin, sequencialmente na ordem do array.discoverFiles()do primeiro plugin que definir esse hook determina os arquivos de teste (se nenhum plugin definir, o Poku faz o scan dos diretorios configurados).- Para cada arquivo de teste:
runner()modifica o comando de execucao (apenas o primeiro plugin com hookrunnere usado).- O processo e criado, com canal IPC se algum plugin definir
ipc: true. onTestProcess()e chamado para todo plugin que definir esse hook.
- Depois que todos os testes terminam,
teardown()e chamado para cada plugin, sequencialmente na ordem do array.
Plugins Existentes
- @pokujs/shared-resources — Compartilhe estado, servidores, conexoes de banco e mais entre arquivos de teste paralelos. Veja a documentacao.
Ciclo de Vida Avancado: Hooks de Escopo por Teste
O Poku suporta um contrato opcional de escopo por teste para autores de plugin que precisam de isolamento estrito de estado em execucoes concorrentes de it.
- Leia o guia completo: Test Scope Hooks
- Use isso quando o plugin tiver estado mutavel interno (
Set,Map, registries, handles) que nunca pode vazar entre callbacks de teste.
dica
Use definePlugin para tipagem segura ao criar plugins e createReporter para formatacao de saida customizada.