npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2025 – Pkg Stats / Ryan Hefner

@wdio/cucumber-framework

v9.21.0

Published

A WebdriverIO plugin. Adapter for Cucumber.js testing framework.

Readme

WDIO Cucumber Framework Adapter

A WebdriverIO plugin. Adapter for CucumberJS v5 testing framework.

Installation

The easiest way is to keep @wdio/cucumber-framework as a devDependency in your package.json, via:

npm install @wdio/cucumber-framework --save-dev

Instructions on how to install WebdriverIO can be found here.

Configuration

Following code shows the default wdio test runner configuration...

// wdio.conf.js
module.exports = {
  // ...
  framework: 'cucumber',
  cucumberOpts: {
    timeout: 10000
  }
  // ...
};

cucumberOpts Options

backtrace

Show full backtrace for errors.

Type: Boolean Default: false

requireModule

Require modules prior to requiring any support files.

Type: String[] Default: [] Example: ['@babel/register'] or [['@babel/register', { rootMode: 'upward', ignore: ['node_modules'] }]]

failFast

Abort the run on first failure.

Type: Boolean Default: false

name

Only execute the scenarios with name matching the expression (repeatable).

Type: REGEXP[] Default: []

require

Require files containing your step definitions before executing features. You can also specify a glob to your step definitions.

Type: String[] Default: [] Example: [path.join(__dirname, 'step-definitions', 'my-steps.js')]

import

Paths to where your support code is, for ESM.

Type: String[] Default: [] Example: [path.join(__dirname, 'step-definitions', 'my-steps.js')]

strict

Fail if there are any undefined or pending steps

Type: Boolean Default: false

tags

Only execute the features or scenarios with tags matching the expression. Note that untagged features will still spawn a Selenium session (see issue webdriverio/webdriverio#1247). Please see the Cucumber documentation for more details. If passing as a command-line argument, compound expressions may need to be enclosed in three sets of double quotes if WebdriverIO is invoked using npx on Windows.

E.g.: npx wdio wdio.config.js --cucumberOpts.tags """@Smoke and not @Pending"""

Type: String Default: ``

timeout

Timeout in milliseconds for step definitions.

Type: Number Default: 30000

retry

Specify the number of times to retry failing test cases.

Type: Number Default: 0

retryTagFilter

Only retries the features or scenarios with tags matching the expression (repeatable). This option requires '--retry' to be specified.

Type: RegExp

language

Default language for your feature files

Type: String Default: en

order

Run tests in defined / random order

Type: String Default: defined

format

Name and output file path of formatter to use. WebdriverIO primarily supports only the Formatters that writes output to a file.

Type: string[]

formatOptions

Options to be provided to formatters

Type: object

tagsInTitle

Add cucumber tags to feature or scenario name

Type: Boolean Default: false

Please note that this is a @wdio/cucumber-framework specific option and not recognized by cucumber-js itself

ignoreUndefinedDefinitions

Treat undefined definitions as warnings.

Type: Boolean Default: false

Please note that this is a @wdio/cucumber-framework specific option and not recognized by cucumber-js itself

failAmbiguousDefinitions

Treat ambiguous definitions as errors.

Type: Boolean Default: false

Please note that this is a @wdio/cucumber-framework specific option and not recognized by cucumber-js itself

tagExpression

Only execute the features or scenarios with tags matching the expression. Note that untagged features will still spawn a Selenium session (see issue webdriverio/webdriverio#1247). Please see the Cucumber documentation for more details. If passing as a command-line argument, compound expressions may need to be enclosed in three sets of double quotes if WebdriverIO is invoked using npx on Windows.

E.g.: npx wdio wdio.config.js --cucumberOpts.tagExpression """@Smoke and not @Pending"""

Type: String Default: ``

Please note that this option would be deprecated in future. Use tags config property instead

profile

Specify the profile to use.

Type: string[] Default: []

Kindly take note that only specific values (worldParameters, name, retryTagFilter) are supported within profiles, as cucumberOpts takes precedence. Additionally, when using a profile, make sure that the mentioned values are not declared within cucumberOpts.

Publishing Report

Cucumber provides a feature to publish your test run reports to https://reports.cucumber.io/, which can be controlled either by setting the publish flag in cucumberOpts or by configuring the CUCUMBER_PUBLISH_TOKEN environment variable. However, when you use WebdriverIO for test execution, there's a limitation with this approach. It updates the reports separately for each feature file, making it difficult to view a consolidated report.

To overcome this limitation, we've introduced a promise-based method called publishCucumberReport within @wdio/cucumber-framework. This method should be called in the onComplete hook, which is the optimal place to invoke it. publishCucumberReport requires the input of the report directory where cucumber message reports are stored.

You can generate cucumber message reports by configuring the format option in your cucumberOpts. It's highly recommended to provide a dynamic file name within the cucumber message format option to prevent overwriting reports and ensure that each test run is accurately recorded.

Before using this function, make sure to set the following environment variables:

  • CUCUMBER_PUBLISH_REPORT_URL: The URL where you want to publish the Cucumber report. If not provided, the default URL 'https://messages.cucumber.io/api/reports' will be used.
  • CUCUMBER_PUBLISH_REPORT_TOKEN: The authorization token required to publish the report. If this token is not set, the function will exit without publishing the report.

Here's an example of the necessary configurations and code samples for implementation:

import { v4 as uuidv4 } from 'uuid'
import { publishCucumberReport } from '@wdio/cucumber-framework';

export const config = {
    // ... Other Configuration Options
    cucumberOpts: {
        // ... Cucumber Options Configuration
        format: [
            ['message', `./reports/${uuidv4()}.ndjson`],
            ['json', './reports/test-report.json']
        ]
    },
    async onComplete() {
        await publishCucumberReport('./reports');
    }
}

Please note that ./reports/ is the directory where cucumber message reports will be stored.


For more information on WebdriverIO see the homepage.