bun test supporta diversi formati di output attraverso i reporter. Questo documento copre sia i reporter integrati che come implementare i tuoi reporter personalizzati.
Reporter Integrati
Reporter Console Predefinito
Di default, bun test emette i risultati sulla console in un formato leggibile dall'umano:
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 pass
0 fail
4 expect() calls
Ran 4 tests in 1.44msQuando un terminale non supporta i colori, l'output evita i caratteri non-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 pass
0 fail
4 expect() calls
Ran 4 tests across 1 files. [0.66ms]Reporter Dots
Il reporter dots mostra . per i test che passano e F per i fallimenti, utile per grandi suite di test.
bun test --dots
bun test --reporter=dotsReporter XML JUnit
Per gli ambienti CI/CD, Bun supporta la generazione di report JUnit XML. JUnit XML e un formato ampiamente adottato per i risultati dei test che puo essere parsato da molti sistemi CI/CD, inclusi GitLab, Jenkins e altri.
Usare il Reporter JUnit
Per generare un report XML JUnit, usa il flag --reporter=junit insieme a --reporter-outfile per specificare il file di output:
bun test --reporter=junit --reporter-outfile=./junit.xmlQuesto continuera a emettere output sulla console come al solito mentre scrive anche il report XML JUnit nel percorso specificato alla fine dell'esecuzione dei test.
Configurazione tramite bunfig.toml
Puoi anche configurare il reporter JUnit nel tuo file bunfig.toml:
[test.reporter]
junit = "path/to/junit.xml" # Percorso di output per il report XML JUnitVariabili di Ambiente nei Report JUnit
Il reporter JUnit include automaticamente le informazioni sull'ambiente come <properties> nell'output XML. Questo puo essere utile per tracciare le esecuzioni dei test negli ambienti CI.
In particolare, include le seguenti variabili di ambiente quando disponibili:
| Variabile di Ambiente | Nome Proprieta | Descrizione |
|---|---|---|
GITHUB_RUN_ID, GITHUB_SERVER_URL, GITHUB_REPOSITORY, CI_JOB_URL | ci | Informazioni build CI |
GITHUB_SHA, CI_COMMIT_SHA, GIT_SHA | commit | Identificatori commit Git |
| Hostname del sistema | hostname | Hostname della macchina |
Questo rende piu facile tracciare quale ambiente e commit una particolare esecuzione di test riguardava.
Limitazioni Attuali
Il reporter JUnit ha attualmente alcune limitazioni che saranno affrontate in futuri aggiornamenti:
- Gli output
stdoutestderrdei singoli test non sono inclusi nel report - Campi timestamp precisi per ogni caso di test non sono inclusi
Reporter GitHub Actions
Bun test rileva automaticamente quando sta funzionando all'interno di GitHub Actions e emette annotazioni GitHub Actions direttamente sulla console. Non e necessaria alcuna configurazione speciale oltre a installare Bun ed eseguire bun test.
Per un esempio di configurazione del workflow GitHub Actions, vedi la sezione Integrazione CI/CD della documentazione CLI.
Reporter Personalizzati
Bun permette agli sviluppatori di implementare reporter di test personalizzati estendendo il WebKit Inspector Protocol con domini aggiuntivi specifici per i test.
Inspector Protocol per i Test
Per supportare il reporting dei test, Bun estende lo standard WebKit Inspector Protocol con due domini personalizzati:
- TestReporter: Riporta la scoperta, l'inizio e il completamento dei test
- LifecycleReporter: Riporta errori e eccezioni durante l'esecuzione dei test
Queste estensioni ti permettono di costruire strumenti di reporting personalizzati che possono ricevere informazioni dettagliate sull'esecuzione dei test in tempo reale.
Eventi Chiave
I reporter personalizzati possono ascoltare questi eventi chiave:
TestReporter.found: Emesso quando un test viene scopertoTestReporter.start: Emesso quando un test inizia a essere eseguitoTestReporter.end: Emesso quando un test terminaConsole.messageAdded: Emesso quando c'e output console durante un testLifecycleReporter.error: Emesso quando si verifica un errore o un'eccezione