web-dev-qa-db-fra.com

Comment configurer Protractor pour utiliser Cucumber

À partir de 0.20.1 Cucumber est maintenant entièrement pris en charge par Protractor, mais je m'efforce de trouver de la documentation sur la manière de le configurer correctement. Une idée de comment vous installeriez world.js?

J'ai trouvé cet exemple à https://github.com/whyvez/angular-cucumber-example/blob/master/features/support/world.coffee mais je ne suis pas sûr qu'il soit encore nécessaire de spécifier tous les modules et la configuration requis comme le fichier de configuration du rapporteur (referenceConf.js) aurait déjà toutes ces informations.

assert = require 'assert'
path = require 'path'

protractor = require 'protractor'
webdriver = require 'Selenium-webdriver'

driver = new webdriver.Builder().
  usingServer('http://localhost:4444/wd/hub').
  withCapabilities(webdriver.Capabilities.chrome()).
  build()

driver.manage().timeouts().setScriptTimeout(100000)

ptor = protractor.wrapDriver driver

class World
  constructor: (callback) ->
    @browser = ptor
    @By = protractor.By
    @assert = assert
    callback()

module.exports.World = World
10
dex

J'ai créé un exemple de projet pour montrer comment configurer Protractor avec Cucumber et utiliser le monde.

The World est un lieu de partage des points communs entre différents scénarios afin que vous puissiez garder votre code organisé.

En fait, tout ce dont vous avez besoin est de créer votre fichier world.js dans un dossier appelé/support sous/features. Vous y placeriez également vos crochets. Chaque propriété ou fonction sera disponible dans vos définitions d’étape.

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();
}

Et ensuite dans vos pas:

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;

Votre fichier de configuration protractor.js ressemblerait à ceci:

exports.config = {

  specs: [
    'e2e/features/*.feature'
  ],

  capabilities: {
    'browserName': 'chrome'
  },

  baseUrl: 'http://localhost:8081/',

  framework: 'cucumber',

};

C'est le référentiel GitHub.

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

J'espère que cela t'aides.

13
Pedro Lopez

Jetez un coup d'oeil à rapporteur - cucumbe - il est fourni avec Sélénium - WebDriver, prend en charge les promesses et est bien documenté.

Cela semble nécessiter une configuration minimale et ce qui est requis est clairement documenté.

1
LeeGee

Ajoutez-le en tant que cadre dans le fichier de configuration:

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"
  }
};

Plus d'informations ici: Cadres de rapporteurs

0
Rassiel Rebustillo

J'ai eu du bon temps avec cette configuration

  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)

Puisque le rapporteur est déjà configuré, il suffit de s'y référer (notez que pour que Cucumber charge correctement le nouveau monde, le fichier modules.exports doit être parfait).

En remarque, il se trouve dans features/support/world.coffee et n'a pas été explicitement ajouté à la liste "Requiert" (essayer de le faire m'a plongé dans les problèmes liés à l'erreur Gherkin Lexing).

0
aabes