title: protractor config file is not picking up the cucumber step definitions
body: <p>i am new to protractor and cucumber framework. i followed the steps from protractor site and here <a href="https://semaphoreci.com/community/tutorials/getting-started-with-protractor-and-cucumber" rel="nofollow noreferrer">https://semaphoreci.com/community/tutorials/getting-started-with-protractor-and-cucumber</a>. i have a config file configured with cucumber framework options, feature file and step definition file. But when i run my cucumber-config file it does not recognize my step definitions and always throw an error. any help on this? below are my setup files.</p>
  
  <p><a href="https://i.stack.imgur.com/dsgdQ.png" rel="nofollow noreferrer"><img src="https://i.stack.imgur.com/dsgdQ.png" alt="Protractor folder structure"></a></p>
  
  <p>//cucumber-config.js</p>
  
  <pre><code>exports.config = {
    seleniumAddress: 'http://localhost:4444/wd/hub',
    capabilities: {
        browserName:'chrome'
    },
    framework: 'custom',
    frameworkPath: require.resolve('protractor-cucumber-framework'),
    specs: [
      './features/*.feature'
    ],
    cucumberOpts: {
      require: ['./features/step_definitions/*.steps.js'],
      tags: [],
      strict: true,
      format: ["pretty"],
      dryRun: false,
      compiler: []
    },
    onPrepare: function () {
      browser.manage().window().maximize();
    }
  };
  </code></pre>
  
  <p>//testone.feature</p>
  
  <pre><code>#features/test.feature
  Feature: Running Cucumber with Protractor
  
      Scenario: Protractor and Cucumber Test
          Given I go to "https://angularjs.org/"
          When I add "Be Awesome" in the task field
          And I click the add button
          Then I should see my new task in the list
  </code></pre>
  
  <p>//testone_steps.js</p>
  
  <pre><code>var chai = require('chai');
  var chaiAsPromised = require('chai-as-promised');
  
  chai.use(chaiAsPromised);
  var expect = chai.expect;
  
  module.exports = function() {
    this.Given(/^I go to "([^"]*)"$/, function(site) {
      browser.get(site);
    });
  
    this.When(/^I add "([^"]*)" in the task field$/, function(task) {
      element(by.model('todoList.todoText')).sendKeys(task);
    });
  
    this.When(/^I click the add button$/, function() {
      var el = element(by.css('[value="add"]'));
      el.click();
    });
  
    this.Then(/^I should see my new task in the list$/, function(callback) {
      var todoList = element.all(by.repeater('todo in todoList.todos'));
      expect(todoList.count()).to.eventually.equal(3);
      expect(todoList.get(2).getText()).to.eventually.equal('Do not Be Awesome')
        .and.notify(callback);
    });
  };
  </code></pre>
  
  <p>when in run <code>protractor cucumber-conf.js</code>, i get the below error...</p>
  
  <pre><code>/opt/protractor_tests
  ➔ protractor cucumber.config.js
  (node:3963) DeprecationWarning: os.tmpDir() is deprecated. Use os.tmpdir() instead.
  [21:19:17] I/launcher - Running 1 instances of WebDriver
  [21:19:17] I/hosted - Using the selenium server at http://localhost:4444/wd/hub
  Feature: Running Cucumber with Protractor
  
    Scenario: Protractor and Cucumber Test
    ? Given I go to "https://angularjs.org/"
    ? When I add "Be Awesome" in the task field
    ? And I click the add button
    ? Then I should see my new task in the list
  
  Warnings:
  
  1) Scenario: Protractor and Cucumber Test - features/testone.feature:4
     Step: Given I go to "https://angularjs.org/" - features/testone.feature:5
     Message:
       Undefined. Implement with the following snippet:
  
         Given('I go to {stringInDoubleQuotes}', function (stringInDoubleQuotes, callback) {
           // Write code here that turns the phrase above into concrete actions
           callback(null, 'pending');
         });
  
  2) Scenario: Protractor and Cucumber Test - features/testone.feature:4
     Step: When I add "Be Awesome" in the task field - features/testone.feature:6
     Message:
       Undefined. Implement with the following snippet:
  
         When('I add {stringInDoubleQuotes} in the task field', function (stringInDoubleQuotes, callback) {
           // Write code here that turns the phrase above into concrete actions
           callback(null, 'pending');
         });
  
  3) Scenario: Protractor and Cucumber Test - features/testone.feature:4
     Step: And I click the add button - features/testone.feature:7
     Message:
       Undefined. Implement with the following snippet:
  
         When('I click the add button', function (callback) {
           // Write code here that turns the phrase above into concrete actions
           callback(null, 'pending');
         });
  
  4) Scenario: Protractor and Cucumber Test - features/testone.feature:4
     Step: Then I should see my new task in the list - features/testone.feature:8
     Message:
       Undefined. Implement with the following snippet:
  
         Then('I should see my new task in the list', function (callback) {
           // Write code here that turns the phrase above into concrete actions
           callback(null, 'pending');
         });
  
  1 scenario (1 undefined)
  4 steps (4 undefined)
  0m00.000s
  [21:19:22] I/launcher - 0 instance(s) of WebDriver still running
  [21:19:22] I/launcher - chrome #01 failed 1 test(s)
  [21:19:22] I/launcher - overall: 1 failed spec(s)
  [21:19:22] E/launcher - Process exited with error code 1
  
  /opt/protractor_tests
  ➔ 
  </code></pre>
  
  <p><strong>Updated With Execution error</strong></p>
  
  <pre><code>[15:22:59] I/launcher - Running 1 instances of WebDriver
  [15:22:59] I/hosted - Using the selenium server at http://localhost:4444/wd/hub
  Feature: Running Cucumber with Protractor
  
    Scenario: Protractor and Cucumber Test
    √ Given I go to "https://angularjs.org/"
    √ When I add "Be Awesome" in the task field
    √ And I click the add button
    × Then I should see my new task in the list
  
  Failures:
  
  1) Scenario: Protractor and Cucumber Test - features\testone.feature:4
     Step: Then I should see my new task in the list - features\testone.feature:8
     Step Definition: features\step_definitions\testone.steps.js:22
     Message:
       Error: function timed out after 5000 milliseconds
           at Timeout.&lt;anonymous&gt; (&lt;local&gt;\ProtractorTests\node_modules\cucumber\lib\user_code_runner.js:91:22)
           at ontimeout (timers.js:365:14)
           at tryOnTimeout (timers.js:237:5)
           at Timer.listOnTimeout (timers.js:207:5)
  
  1 scenario (1 failed)
  4 steps (1 failed, 3 passed)
  0m05.049s
  [15:23:19] I/launcher - 0 instance(s) of WebDriver still running
  [15:23:19] I/launcher - chrome #01 failed 1 test(s)
  [15:23:19] I/launcher - overall: 1 failed spec(s)
  [15:23:19] E/launcher - Process exited with error code 1
  error Command failed with exit code 1.
  </code></pre>