UNPKG

@cucumber/cucumber

Version:

The official JavaScript implementation of Cucumber.

158 lines (157 loc) 5.05 kB
import { JsonObject } from 'type-fest'; import { IPickleOrder } from '../filter'; /** * User-defined configuration * * @public */ export interface IConfiguration { /** * Paths to where your feature files are * @default [] * @see {@link https://github.com/cucumber/cucumber-js/blob/main/docs/configuration.md#finding-your-features} */ paths: string[]; /** * Show the full backtrace for errors * @default false */ backtrace: boolean; /** * Perform a dry run, where a test run is prepared but nothing is executed * @default false * @see {@link https://github.com/cucumber/cucumber-js/blob/main/docs/dry_run.md} */ dryRun: boolean; /** * Explicitly call `process.exit()` after the test run * @default false * @see {@link https://github.com/cucumber/cucumber-js/blob/main/docs/cli.md#exiting} * @remarks * This option is only used by the CLI. */ forceExit: boolean; /** * Stop running tests when a test fails * @default false * @see {@link https://github.com/cucumber/cucumber-js/blob/main/docs/fail_fast.md} */ failFast: boolean; /** * Name/path and (optionally) output file path of each formatter to use * * @example * [ * "\@cucumber/pretty-formatter", * ["html", "./reports/cucumber.html"], * ["./custom-formatter.js", "./reports/custom.txt"] * ] * @default [] * @see {@link https://github.com/cucumber/cucumber-js/blob/main/docs/formatters.md} * @remarks * Each item has one or two values. The first (required) identifies the * formatter to be used. The second (optional) specifies where the output * should be written. */ format: Array<string | [string, string?]>; /** * Options to be provided to formatters * @default \{\} * @see {@link https://github.com/cucumber/cucumber-js/blob/main/docs/formatters.md#options} * @remarks * The value must be a JSON-serializable object. */ formatOptions: JsonObject; /** * Paths to where your support code is * @default [] * @see {@link https://github.com/cucumber/cucumber-js/blob/main/docs/configuration.md#finding-your-code} */ import: string[]; /** * Default language for your feature files * @default "en" */ language: string; /** * Module specifier(s) for loaders to be registered ahead of loading support code * @default [] */ loader: string[]; /** * Regular expressions of which scenario names should match one of to be run * @default [] * @see {@link https://github.com/cucumber/cucumber-js/blob/main/docs/filtering.md#names} */ name: string[]; /** * Run in the order defined, or in a random order * @default "defined" * @see {@link https://github.com/cucumber/cucumber-js/blob/main/docs/filtering.md#order} */ order: IPickleOrder; /** * Run tests in parallel with the given number of worker processes * @default 0 * @see {@link https://github.com/cucumber/cucumber-js/blob/main/docs/parallel.md} */ parallel: number; /** * Shard tests and execute only the selected shard, format `<index>/<total>` * @default "" */ shard: string; /** * Publish a report of your test run to https://reports.cucumber.io/ * @default false */ publish: boolean; /** * Paths to where your support code is, for CommonJS * @default [] * @see {@link https://github.com/cucumber/cucumber-js/blob/main/docs/configuration.md#finding-your-code} */ require: string[]; /** * Names of transpilation modules to load, via `require()` * @default [] * @see {@link https://github.com/cucumber/cucumber-js/blob/main/docs/transpiling.md} */ requireModule: string[]; /** * Retry failing tests up to the given number of times * @default 0 * @see {@link https://github.com/cucumber/cucumber-js/blob/main/docs/retry.md} */ retry: number; /** * Tag expression to filter which scenarios can be retried * @default "" * @see {@link https://github.com/cucumber/cucumber-js/blob/main/docs/retry.md} */ retryTagFilter: string; /** * Fail the test run if there are pending steps * @default true */ strict: boolean; /** * Tag expression to filter which scenarios should be run * @default "" * @see {@link https://github.com/cucumber/cucumber-js/blob/main/docs/filtering.md#tags} */ tags: string; /** * Parameters to be passed to your World * @default \{\} * @see {@link https://github.com/cucumber/cucumber-js/blob/main/docs/support_files/world.md} * @remarks * The value must be a JSON-serializable object. */ worldParameters: JsonObject; } /** * Collection of named configuration profiles * @public */ export type IProfiles = Record<string, Partial<IConfiguration>>;