Ce problème est une continuation de ce https://github.com/angular/protractor/issues/4311 . Où je discute des changements de syntaxe sur la façon d'utiliser le rapporteur pour exécuter les scripts Cucumberjs.
Comme demandé par @wswebcreation https://github.com/wswebcreation , j'ai fermé cet autre problème et en ai ouvert un nouveau ici.
Le dernier record que j'ai d'une exécution réussie était le 12 mai 2017, 14:03. Précisément la date dans votre document.
Votre exemple sur les balises est très simpliste... comment puis-je appeler 3 balises, deux qui doivent être exécutées et une qui est ignorée. Avant le 12 mai, cela fonctionnait bien, mais maintenant, ce n'est plus le cas :
protractor ./FM_IntTest_UI_conf.js --disableChecks [email protected] --params.login.passw=mypassword --cucumberOpts.tags ~<strong i="13">@ignore</strong> --cucumberOpts.tags <strong i="14">@smoke</strong>,@sprint
Votre document dit maintenant que cela devrait être comme ça, mais ne fonctionne pas, renvoie le même message d'erreur que j'ai soumis avec le "ticket".
protractor ./FM_IntTest_UI_conf.js --disableChecks [email protected] --params.login.passw=mypassword --cucumberOpts.tags '<strong i="18">@smoke</strong> or <strong i="19">@rt</strong>' --cucumberOpts.tags 'not <strong i="20">@ignore</strong>'
Erreur : Erreur : plusieurs fichiers de configuration spécifiés
à C:\Users\echavez\AppData\Roaming\npm\node_modules\protractor\built\cli.js:155:15
à C:\Users\echavez\AppData\Roaming\npm\node_modules\protractor\node_modules\optimist\index.js:307:21
à Array.forEach (natif)
à parseArgs (C:\Users\echavez\AppData\Roaming\npm\node_modules\protractor\node_modules\optimist\index.js:305:16)
à Object.Argv.self.parse (C:\Users\echavez\AppData\Roaming\npm\node_modules\protractor\node_modules\optimist\index.js:140:16)
à l'objet. (C:\Users\echavez\AppData\Roaming\npm\node_modules\protractor\built\cli.js:158:21)
à Module._compile (module.js:571:32)
à Object.Module._extensions..js (module.js:580:10)
à Module.load (module.js:488:32)
à tryModuleLoad (module.js:447:12)
Je peux voir dans le document Cucumber que la syntaxe de codage pour la définition des étapes a également changé ? Pourquoi faire plus compliqué maintenant ? Car avec la nouvelle syntaxe, je dois regrouper les étapes par scénarios. Mais il y a certaines étapes qui se répètent dans plusieurs scénarios, répétant ainsi le code sur chaque scénario ? Je vais me retrouver avec des redondances dans mon code. Pourquoi?
Voici un extrait de ce que j'ai MAINTENANT dans mon fichier test.spec.js :
this.Given('I am testing my Widget Application', function (callback) {
edirp.edirejectwidgetlink.click().then(function(){
callback();
}).catch(function(reason) {
console.log('ERROR: Widget button not found');
callback(reason);
});
});
this.When('There are records in the Widget List', function() {
edirp.edigetrow.count().then(function(cnt){
if(cnt>0){
return recordsFound = cnt;
}else{
return recordsFound = 0;
}
});
});
this.Then('Header name of the Widget List is '(.+)'', function(header, callback) {
expect(po.headertext.getText()).to.eventually.equal(header).then(function(){
callback();
}).catch(function(reason) {
console.log('Warning: Incorrect Text.');
callback(reason);
});
});
Voici un extrait de ce qui est proposé comme "mise à jour"... pour moi, c'est un DOWNGRADE :
var seleniumWebdriver = require('selenium-webdriver');
var {defineSupportCode} = require('cucumber');
defineSupportCode(function({Given, When, Then}) {
Given('I am testing my Widget Application', function (callback) {
edirp.edirejectwidgetlink.click().then(function(){
callback();
}).catch(function(reason) {
console.log('ERROR: Widget button not found');
callback(reason);
});
When('There are records in the Widget List', function() {
edirp.edigetrow.count().then(function(cnt){
if(cnt>0){
return recordsFound = cnt;
}else{
return recordsFound = 0;
}
});
Then('Header name of the Widget List is '(.+)'', function(header, callback) {
expect(po.headertext.getText()).to.eventually.equal(header).then(function(){
callback();
}).catch(function(reason) {
console.log('Warning: Incorrect Text.');
callback(reason);
});
});
Si le scénario a plusieurs Donné, Quand, Alors... faut-il les énumérer ici, comme ceci ? :
defineSupportCode(function({Donné, Et, Et, Quand, Et, Et, Alors, Et, Et, Et}) {
Si c'est vrai... Alors maintenant, si je veux réutiliser l'étape « Quand il y a des enregistrements dans le widget EDI-Rejets » dans un autre scénario de ma fonctionnalité, dois-je à nouveau coder toute la fonction ?
Tout ce dont j'ai besoin, ce sont des réponses avec des arguments. Ne le prenez pas personnellement.
Si le scénario a plusieurs Donné, Quand, Alors... faut-il les énumérer ici, comme ceci ? :
defineSupportCode(function({Donné, Et, Et, Quand, Et, Et, Alors, Et, Et, Et}) {
Non. Given
, When
et Then
sont des fonctions que vous pouvez appeler plusieurs fois (similaire à this.Given
, etc. de 1.x). And
n'est pas une fonction. Vous pouvez voir toutes les fonctions passées par defineSupportCode
dans la référence API qui est liée à partir du README.md
Je peux voir dans le document Cucumber que la syntaxe de codage pour la définition des étapes a également changé ?
Voir https://github.com/cucumber/cucumber-js/issues/679
Pourquoi faire plus compliqué maintenant ? Car avec la nouvelle syntaxe, je dois regrouper les étapes par scénarios.
Ce n'est pas vrai
Merci je vais vérifier ça !
@charlierudolph Tnx pour l'explication !
Ce fil a été automatiquement verrouillé car il n'y a eu aucune activité récente après sa fermeture. Veuillez ouvrir un nouveau problème pour les bogues liés.