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:
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.44msQuando um terminal não oferece suporte a cores, a saída evita caracteres não-ascii:
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.
bun test --dots
bun test --reporter=dotsReporter 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:
bun test --reporter=junit --reporter-outfile=./junit.xmlIsso 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:
[test.reporter]
junit = "path/to/junit.xml" # Caminho de saída para relatório XML JUnitVariá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 Ambiente | Nome da Propriedade | Descrição |
|---|---|---|
GITHUB_RUN_ID, GITHUB_SERVER_URL, GITHUB_REPOSITORY, CI_JOB_URL | ci | Informações de build CI |
GITHUB_SHA, CI_COMMIT_SHA, GIT_SHA | commit | Identificadores de commit Git |
| Hostname do sistema | hostname | Hostname 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
stdoutestderrde 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:
- TestReporter: Reporta descoberta de teste, início de execução e eventos de conclusão
- 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 é descobertoTestReporter.start: Emitido quando um teste começa a ser executadoTestReporter.end: Emitido quando um teste é concluídoConsole.messageAdded: Emitido quando ocorre saída de console durante um testeLifecycleReporter.error: Emitido quando ocorre um erro ou exceção