<h1 align="center"> <img alt="" width="75" src="https://github.com/cucumber.png"/> <br> pretty-formatter </h1> <p align="center"> <b>Rich formatting of Cucumber progress and results for the terminal</b> </p>
npm install @cucumber/pretty-formatter
Rich formatting of Cucumber progress and results for the terminal
!Example output of the pretty formatting, showing the different colors used
This package is used internally in @cucumber/cucumber to provide the summary, progress and pretty formatters; you don't need to install or manage it yourself.
For usage, see https://github.com/cucumber/cucumber-js/blob/main/docs/formatters.md.
You can use these low-level classes to provide formatting for a different implementation of Cucumber.
Prints a summary of test results including non-passing scenarios, statistics, and snippets.
``typescript
import { SummaryPrinter } from '@cucumber/pretty-formatter'
const printer = new SummaryPrinter()
// each time a message is emitted
printer.update(envelope)
`
Can also be used to summarise a test run that already happened, with a pre-populated Query object:
`typescript
import { Query } from '@cucumber/query'
import { SummaryPrinter } from '@cucumber/pretty-formatter'
const query = new Query()
// each time a message is emitted
query.update(envelope)
// later
SummaryPrinter.summarise(query)
`
Prints test progress as single-character status indicators.
`typescript
import { ProgressPrinter } from '@cucumber/pretty-formatter'
const printer = new ProgressPrinter()
// each time a message is emitted
printer.update(envelope)
`
Prints test progress in a prettified Gherkin-style format.
`typescript
import { PrettyPrinter } from '@cucumber/pretty-formatter'
const printer = new PrettyPrinter()
// each time a message is emitted
printer.update(envelope)
`
Here's the schema for a theme:
`ts
interface Theme {
attachment?: Style
dataTable?: {
all?: Style
border?: Style
content?: Style
}
docString?: {
all?: Style
content?: Style
delimiter?: Style
mediaType?: Style
}
feature?: {
all?: Style
keyword?: Style
name?: Style
}
location?: Style
rule?: {
all?: Style
keyword?: Style
name?: Style
}
scenario?: {
all?: Style
keyword?: Style
name?: Style
}
status?: {
all?: Partial
icon?: Partial
progress?: Partial
}
step?: {
argument?: Style
keyword?: Style
text?: Style
}
tag?: Style
symbol?: {
bullet?: string
}
}
enum TestStepResultStatus {
UNKNOWN = "UNKNOWN",
PASSED = "PASSED",
SKIPPED = "SKIPPED",
PENDING = "PENDING",
UNDEFINED = "UNDEFINED",
AMBIGUOUS = "AMBIGUOUS",
FAILED = "FAILED"
}
`
Style is any Node.js supported modifier or an array of them.
See the default theme for a good example. It's exported as CUCUMBER_THEME`, so you can clone and extend it if you'd like.