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