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 Oficiais

  • Coverage (@pokujs/c8, @pokujs/monocart, @pokujs/istanbul, @pokujs/one-double-zero): Colete cobertura de codigo com --coverage, escolhendo o reporter que melhor se encaixa no seu projeto. Veja a documentacao.
  • @pokujs/react: Renderize e teste componentes React dentro dos testes do Poku, com um ambiente DOM real e zero configuracao. Veja a documentacao.
  • @pokujs/vue: Renderize e teste componentes Vue dentro dos testes do Poku, com um ambiente DOM real e suporte automatico a Single File Components. Veja a documentacao.
  • @pokujs/docker: Monte e desmonte conteineres ao redor dos seus testes, com uma API minima para Docker Compose e Dockerfiles. Veja a documentacao.
  • @pokujs/multi-suite: Execute multiplas suites de teste independentes, cada uma com sua propria configuracao, como uma unica execucao unificada. Veja a documentacao.
  • @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.