How can I run one particular CucumberJS feature using GruntJS?

cucumberjs, gruntjs, node.js

Solution

I finally figured out a solution that seems to work well enough, based on tags.

So for each of my feature files, I've added a tag.

For example, for Favourite.feature:

@favourite
Feature: Favourite
    As a user of the system
    I would like to favourite items

Then I've used a GruntJS option to specify the tags I want to run via a command-line argument.

I do this through a `grunt.option()` call in my gruntfile:

cucumberjs: {
    src: 'features',
    options: {
        steps: 'features/step_definitions',
        format: 'pretty',
        tags: grunt.option('cucumbertags')
    }
}

So now I can run GruntJS from the command-line like this:

grunt cucumberjs --cucumbertags=@favourite

And it will only run the feature with the @favourite tag. Yay!

Problem

I'm using CucumberJS to run tests on my NodeJS web app. At the moment, I can run all of my grunt tasks by executing `grunt`, or only the CucumberJS tasks, using `grunt cucumberjs`. But now I want to only execute particular features. For example, say I have the following feature files: - Signin.feature - Favourite.feature I want to only run the Favourite feature tests, using a command such as: `grunt cucumberjs Favourite` Is this possible? BTW, here's my `gruntfile.js`: ``` 'use strict'; module.exports = function(grunt) { grunt.initConfig({ pkg: grunt.file.readJSON('package.json'), ... cucumberjs: { src: 'features', options: { steps: 'features/step_definitions', format: 'pretty' } } }); ... grunt.loadNpmTasks('grunt-cucumber'); grunt.registerTask('default', [... 'cucumberjs']); }; ```

Original source