@antislop/japa-junit-reporter
v0.1.0
Published
Custom JUnit XML reporter for AdonisJS Japa tests
Downloads
564
Readme
@antislop/japa-junit-reporter
Custom JUnit XML reporter for AdonisJS Japa tests.
Installation
npm i -D @antislop/japa-junit-reporterIt requires @japa/runner as a peer dependency.
Usage
Register the reporter in your Japa test runner config (for example, bin/test.ts):
import { configure } from '@japa/runner'
import { junitReporter } from '@antislop/japa-junit-reporter'
configure({
reporters: {
activated: ['junit'],
list: [junitReporter()],
},
})After the test run completes, a JUnit XML report is written to disk.
Configuration
| Variable | Default | Description |
| ------------------------ | ------------------------ | ------------------------------------ |
| JAPA_JUNIT_REPORT_PATH | test-results/junit.xml | Output path for the JUnit XML report |
How it works
The reporter extends Japa's BaseReporter and listens for test lifecycle events. As tests run, it builds an in-memory map of JUnit test suites keyed by Japa suite name.
Japa lifecycle events
│
▼
+-----------------+
│ JUnitReporter │
+-----------------+
│
├─ Suite start ─────► ensure suite exists
│
├─ Test end ────────► record test case
│ ├─ pass → empty <testcase/>
│ ├─ fail → <failure/> testcase
│ ├─ error → <error/> testcase
│ └─ skip → <skipped/> testcase
│
├─ Group/Suite end ─► record hook errors as synthetic <error/> testcases
│
▼
+-----------+
│ Run End │
+-----------+
│
├─ aggregate counts and timing
├─ serialize to JUnit XML
└─ write to JAPA_JUNIT_REPORT_PATHNotes:
Unexpected pass: If a test marked with
.fails()passes unexpectedly, it is reported as a<failure>testcase.Hook failures: JUnit XML has no concept of hooks.
- Per-test hook errors attach to that test's
<testcase>as<error>. - Group/suite hook errors have no test to attach to, so they become synthetic
<error>testcases.
- Per-test hook errors attach to that test's
