How to configure Protractor to use Cucumber

后端 未结 4 1550
别那么骄傲
别那么骄傲 2021-02-20 03:30

As of 0.20.1 Cucumber is now fully supported in Protractor but I\'m battling to find any documentation on how to configure it properly. Any idea how you would setup world.js?

相关标签:
4条回答
  • 2021-02-20 04:08

    I have created a sample project to show how to configure Protractor with Cucumber and make use of the World.

    The World is a place to share commonalities between different scenarios so that you can keep you code organised.

    Actually, all you need is to create your world.js file in a folder called /support under /features. You would place there your hooks as well. Every property or function there will be available in your step definitions.

    world.js:

    module.exports = function() {
    
      this.World = function World(callback) {
        this.prop = "Hello from the World!";
    
        this.greetings = function(name, callback) {
          console.log("\n----Hello " + name);
          callback();
        };
    
        callback();
    }
    

    And then in your steps:

    var sampleSteps = function() {
    
        this.Given(/^this is the first sample$/, function (callback) {
          console.log("\n----" + this.prop);
          callback();
        });
    
        this.Given(/^this is the second sample$/, function (callback) {
          this.greetings("everybody", callback);
        });
    
    };
    
    module.exports = sampleSteps;
    

    Your protractor.js configuration file would look something like this:

    exports.config = {
    
      specs: [
        'e2e/features/*.feature'
      ],
    
      capabilities: {
        'browserName': 'chrome'
      },
    
      baseUrl: 'http://localhost:8081/',
    
      framework: 'cucumber',
    
    };
    

    This the GitHub repository.

    https://github.com/plopcas/st-protractor-cucumber

    Hope this helps.

    0 讨论(0)
  • 2021-02-20 04:18

    Take a look at protractor-cucumbe -- it comes with selenium-webdriver, supports Promises, and is well documented.

    It seems to require minimal configuration, and what is required is clearly documented.

    0 讨论(0)
  • 2021-02-20 04:25

    I've gotten good milage from this setup

      class ChtWorld
        chai = require('chai');
        chaiAsPromised = require('chai-as-promised');
    
        constructor:  ->
          @browser = @protractor = require('protractor').getInstance()
          @By = @protractor.By
          chai.use(chaiAsPromised)
          @expect= chai.expect
    
    
      module.exports= ->
        this.World= (callback) ->
          w = new ChtWorld()
          callback(w)
    

    Since protractor is already setup, just getting a reference to it is sufficient (note that for Cucumber to correctly load up the new world, the modules.exports has to be just right).

    As a side note, this is located in features/support/world.coffee, and not explicitly added to the 'requires' list (trying to do that got me into Gherkin Lexing error problems).

    0 讨论(0)
  • 2021-02-20 04:27

    Add it as a framework in the configuration file:

    exports.config = {
      // set to "custom" instead of cucumber.
      framework: 'custom',
    
      // path relative to the current config file
      frameworkPath: 'protractor-cucumber-framework'
    
      // relevant cucumber command line options
      cucumberOpts: {
        format: "summary"
      }
    };
    

    More information here: Protractor Frameworks

    0 讨论(0)
提交回复
热议问题