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

cucumber-steps-parser

v3.0.0

Published

A utility to parse the cucumber steps defined in the corresponding step definition files

Readme

cucumber-steps-parser

So you are using cucumber.js to test your Typescript project in a BDD fashion. That's a great choice! :tada: You might, however, struggle to remember all your step definitions when writing new feature tests. Here is where cucumber-steps-parser might come handy for you!

This simple utility parses a file or folder and finds all the existing step definitions. You can then use IDE extensions (i.e. alexkrechik.cucumberautocomplete) to get autocomplete suggestions when writing feature tests.

Usage

cucumber-steps-parser is available via both node.js Api and command line interface:

CLI

npm install --global cucumber-steps-parser
cucumber-steps-parser path/to/your/project

node.js

const { getFolderCucumberSteps } = require('cucumber-steps-parser');
const cucumberSteps = getFolderCucumberSteps('path/to/your/project');

In both cases, the result will be a list of cucumber steps with the following properties:

| Name | Type | Description | | --------- | ---------- | ---------------------------------------------------------------------------------------------- | | arguments | string[] | List of arguments declared in the cucumber step implementation | | jsDocTags | string[] | List of tags used in the jsDoc annotation of the cucumber step | | rawText | string | The cucumber step sentence as stated in the definition file (i.e. including regexp characters) | | text | string | The cucumber step sentence as it will be used in feature tests |

Options

You can change how cucumber-steps-parser finds the step definition files in your application through the following configuration parameters:

  • filenameRegExp: Only the filenames matching this regular expression will be parsed. Defaults to typescript files only (i.e. /^.*\.ts$/)
  • recursive: Whether the folders found in the given path are recursively crawled. Defaults to true
cucumber-steps-parser path/to/your/project --recursive false --filenameRegExp "^.*\.step\.ts$"
const { getFolderCucumberSteps } = require('cucumber-steps-parser');
const cucumberSteps = getFolderCucumberSteps('path/to/your/project', {
    filenameRegExp: /^.*\.step\.ts$/,
    recursive: false
});

Example

Given the following sample definition file (i.e. my-logic.step.ts)

import { Given } from 'cucumber';

Given(/^my parametrized cucumber step {string}$/, (myString: string) => {
    return 'pending';
});

When(/^yet another parametrized step "([0-9]*)"$/, (myNumber: number) => {
    return 'pending';
});

/**
 * @deprecated
 */
Then('once upon a time... in Hollywood', () => {
    return 'pending';
});

the following cucumber steps will be returned when parsing it (i.e. cucumber-steps-parser ./my-logic.step.ts):

[
    {
        "arguments": ["myString"],
        "jsDocTags": [],
        "rawText": "/^my parametrized cucumber step {string}$/",
        "text": "my parametrized cucumber step {string}"
    },
    {
        "arguments": ["myNumber"],
        "jsDocTags": [],
        "rawText": "/^yet another parametrized step \"([0-9]*)\"$/",
        "text": "yet another parametrized step \"([0-9]*)\""
    },
    {
        "arguments": ["myNumber"],
        "jsDocTags": ["deprecated"],
        "rawText": "once upon a time... in Hollywood",
        "text": "once upon a time... in Hollywood"
    }
]