@japa/errors-printer
Print errors produced by the Japa tests runner
Installation
Install the package from the npm registry as follows:
npm i @japa/errors-printer
yarn add @japa/errors-printer
Usage
You can print errors produced by japa test runner as follows.
import { ErrorsPrinter } from '@japa/errors-printer'
const printer = new ErrorsPrinter()
const error = new Error('boom')
await printer.printError(error)
Most of the times, you will find yourself printing errors using the Japa test summary. Here is how you can go about doing it.
import { ErrorsPrinter } from '@japa/errors-printer'
const printer = new ErrorsPrinter()
const summary = runner.getSummary()
const errorsList = []
summary.failureTree.forEach((suite) => {
suite.errors.forEach((error) => {
errorsList.push({ title: suite.name, ...error })
})
suite.children.forEach((groupOrTest) => {
if (groupOrTest.type === 'test') {
groupOrTest.errors.forEach((error) => {
errorsList.push({ title: groupOrTest.title, ...error })
})
return
}
groupOrTest.errors.forEach((error) => {
errorsList.push({ title: groupOrTest.name, ...error })
})
groupOrTest.children.forEach((test) => {
test.errors.forEach((error) => {
errorsList.push({ title: test.title, ...error })
})
})
})
})
await printer.printErrors(errorsList)
API
Following are the available methods.
printError()
Accepts error as the only argument. If the error is an assertion error, then the diff will be displayed. Otherwise, the error stack is printed.
Assertion diff
import { Assert } from '@japa/assert'
import { ErrorsPrinter } from '@japa/errors-printer'
const printer = new ErrorsPrinter()
try {
new Assert().deepEqual({ id: 1 }, { id: 2 })
} catch (error) {
await printer.printError(error)
}
Jest error
import expect from 'expect'
import { ErrorsPrinter } from '@japa/errors-printer'
const printer = new ErrorsPrinter()
try {
expect({ bar: 'baz' }).toEqual(expect.not.objectContaining({ bar: 'baz' }))
} catch (error) {
await printer.printError(error)
}
Error stack
import { ErrorsPrinter } from '@japa/errors-printer'
const printer = new ErrorsPrinter()
await printer.printError(new Error('boom'))
printErrors
Print an array of errors produced by the Japa test runner summary. The method accepts an array of errors in the following format.
type Error = {
title: string,
phase: string,
error: Error
}
await printer.printErrors([
{
phase: 'test',
title: '2 + 2 = 4'
error: new Error('test failed')
},
{
phase: 'teardown',
title: '2 + 2 = 4'
error: new Error('teardown failed')
}
])