À 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
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.
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é.
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
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).