Pular para o conteúdo principal
Versão: v4.x.x

🥷🏻 Usando Plugins

History
VersionChanges
v3.0.3-canary.68e71482
Introduz o sistema de Plugins.
2Stable

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:

  1. setup() e chamado para cada plugin, sequencialmente na ordem do array.
  2. 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).
  3. Para cada arquivo de teste:
    • runner() modifica o comando de execucao (apenas o primeiro plugin com hook runner e usado).
    • O processo e criado, com canal IPC se algum plugin definir ipc: true.
    • onTestProcess() e chamado para todo plugin que definir esse hook.
  4. Depois que todos os testes terminam, teardown() e chamado para cada plugin, sequencialmente na ordem do array.

Plugins Existentes

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.