Skip to content

bun test oferece suporte a diferentes formatos de saída através de reporters. Este documento cobre tanto reporters integrados quanto como implementar seus próprios reporters personalizados.


Reporters Integrados

Reporter de Console Padrão

Por padrão, bun test produz resultados para o console em um formato legível por humanos:

sh
test/package-json-lint.test.ts:
 test/package.json [0.88ms]
 test/js/third_party/grpc-js/package.json [0.18ms]
 test/js/third_party/svelte/package.json [0.21ms]
 test/js/third_party/express/package.json [1.05ms]

 4 aprovações
 0 falhas
 4 chamadas expect()
Executados 4 testes em 1.44ms

Quando um terminal não oferece suporte a cores, a saída evita caracteres não-ascii:

sh
test/package-json-lint.test.ts:
(pass) test/package.json [0.48ms]
(pass) test/js/third_party/grpc-js/package.json [0.10ms]
(pass) test/js/third_party/svelte/package.json [0.04ms]
(pass) test/js/third_party/express/package.json [0.04ms]

 4 aprovações
 0 falhas
 4 chamadas expect()
Executados 4 testes em 1 arquivos. [0.66ms]

Reporter de Pontos

O reporter de pontos mostra . para testes aprovados e F para falhas — útil para grandes suítes de teste.

sh
bun test --dots
bun test --reporter=dots

Reporter XML JUnit

Para ambientes CI/CD, o Bun oferece suporte à geração de relatórios XML JUnit. XML JUnit é um formato amplamente adotado para resultados de teste que pode ser analisado por muitos sistemas CI/CD, incluindo GitLab, Jenkins e outros.

Usando o Reporter JUnit

Para gerar um relatório XML JUnit, use a flag --reporter=junit junto com --reporter-outfile para especificar o arquivo de saída:

sh
bun test --reporter=junit --reporter-outfile=./junit.xml

Isso continua a produzir saída para o console como de costume, enquanto também escreve o relatório XML JUnit para o caminho especificado no final da execução do teste.

Configurando via bunfig.toml

Você também pode configurar o reporter JUnit no seu arquivo bunfig.toml:

bunfig.toml
toml
[test.reporter]
junit = "path/to/junit.xml"  # Caminho de saída para relatório XML JUnit

Variáveis de Ambiente em Relatórios JUnit

O reporter JUnit inclui automaticamente informações de ambiente como <properties> na saída XML. Isso pode ser útil para rastrear execuções de teste em ambientes CI.

Especificamente, inclui as seguintes variáveis de ambiente quando disponíveis:

Variável de AmbienteNome da PropriedadeDescrição
GITHUB_RUN_ID, GITHUB_SERVER_URL, GITHUB_REPOSITORY, CI_JOB_URLciInformações de build CI
GITHUB_SHA, CI_COMMIT_SHA, GIT_SHAcommitIdentificadores de commit Git
Hostname do sistemahostnameHostname da máquina

Isso facilita rastrear para qual ambiente e commit uma execução de teste específica foi.

Limitações Atuais

O reporter JUnit atualmente tem algumas limitações que serão abordadas em atualizações futuras:

  • Saídas stdout e stderr de testes individuais não estão incluídas no relatório
  • Campos de timestamp precisos por caso de teste não estão incluídos

Reporter do GitHub Actions

O teste do Bun detecta automaticamente quando está sendo executado dentro do GitHub Actions e emite anotações do GitHub Actions diretamente para o console. Nenhuma configuração especial é necessária além de instalar o Bun e executar bun test.

Para um exemplo de configuração de workflow do GitHub Actions, veja a seção de integração CI/CD da documentação da CLI.


Reporters Personalizados

O Bun permite que desenvolvedores implementem reporters de teste personalizados estendendo o Protocolo Inspector do WebKit com domínios específicos de teste adicionais.

Protocolo Inspector para Testes

Para oferecer suporte a relatórios de teste, o Bun estende o Protocolo Inspector padrão do WebKit com dois domínios personalizados:

  1. TestReporter: Reporta descoberta de teste, início de execução e eventos de conclusão
  2. LifecycleReporter: Reporta erros e exceções durante a execução do teste

Estas extensões permitem que você construa ferramentas de relatório personalizadas que podem receber informações detalhadas sobre execução de teste em tempo real.

Eventos Principais

Reporters personalizados podem ouvir estes eventos principais:

  • TestReporter.found: Emitido quando um teste é descoberto
  • TestReporter.start: Emitido quando um teste começa a ser executado
  • TestReporter.end: Emitido quando um teste é concluído
  • Console.messageAdded: Emitido quando ocorre saída de console durante um teste
  • LifecycleReporter.error: Emitido quando ocorre um erro ou exceção

Bun by www.bunjs.com.cn edit