Cucumber-js: O que aconteceu com o parâmetro "cucumberOpts"? Isso não é mais compatível?

Criado em 6 jun. 2017  ·  5Comentários  ·  Fonte: cucumber/cucumber-js

Este problema é uma continuação deste https://github.com/angular/protractor/issues/4311 . Onde estou discutindo as mudanças na sintaxe sobre como usar o transferidor para executar scripts de Cucumberjs.

Conforme solicitado por @wswebcreation https://github.com/wswebcreation , fechei esse outro problema e abri um novo aqui.

Então, meu último comentário foi este ....

O último registro que tenho de uma execução bem-sucedida foi em 12 de maio de 2017, 14h03. Precisamente a data em seu documento.

Seu exemplo sobre tags é muito simplista ... como então devo chamar para 3 tags, duas que devem ser executadas e uma que é ignorada. Antes de 12 de maio, isso costumava funcionar bem, mas agora não funciona:

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

Seu documento diz que agora deveria estar assim, mas não funciona, retorna a mesma mensagem de erro que enviei com o "tíquete".

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>'

Erro: Erro: mais de um arquivo de configuração especificado
em C: \ Users \ echavez \ AppData \ Roaming \ npm \ node_modules \ protractor \ built \ cli.js: 155: 15
em C: \ Users \ echavez \ AppData \ Roaming \ npm \ node_modules \ protractor \ node_modules \ optimist \ index.js: 307: 21
em Array.forEach (nativo)
em parseArgs (C: \ Users \ echavez \ AppData \ Roaming \ npm \ node_modules \ protractor \ node_modules \ optimist \ index.js: 305: 16)
em Object.Argv.self.parse (C: \ Users \ echavez \ AppData \ Roaming \ npm \ node_modules \ protractor \ node_modules \ optimist \ index.js: 140: 16)
em Object. (C: \ Users \ echavez \ AppData \ Roaming \ npm \ node_modules \ protractor \ built \ cli.js: 158: 21)
em Module._compile (module.js: 571: 32)
em Object.Module._extensions..js (module.js: 580: 10)
em Module.load (module.js: 488: 32)
em tryModuleLoad (module.js: 447: 12)

Posso ver no documento Cucumber que também a sintaxe de codificação para a definição da etapa mudou. Por que complicar tudo agora? Porque com a nova sintaxe, devo agrupar etapas por cenários. Mas existem algumas etapas que se repetem em vários cenários, repetindo assim o código em cada cenário? Vou acabar com redundâncias no meu código. Por quê?

Aqui está um snippet do que tenho AGORA em meu arquivo 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);
    });
});

Aqui está um trecho do que é proposto como uma "atualização" ... para mim é um 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);
    });
});

Se o cenário tiver vários Dado, Quando, Então ... esses devem ser enumerados aqui, como este ?:
defineSupportCode (function ({given, And, And, When, And, And, Then, And, And, And}) {

Se isso for verdade ... Então agora, se eu quiser usar novamente a etapa "Quando há registros no widget de rejeições de EDI" em outro cenário em meu recurso, preciso codificar todas as funções novamente?

Tudo que preciso são respostas com argumentos. Não leve para o lado pessoal.

Todos 5 comentários

Se o cenário tiver vários Dado, Quando, Então ... esses devem ser enumerados aqui, como este ?:
defineSupportCode (function ({given, And, And, When, And, And, Then, And, And, And}) {

Não. Given , When e Then são funções que você pode chamar várias vezes (semelhante a this.Given , etc. a partir de 1.x). And não é uma função. Você pode ver todas as funções passadas por defineSupportCode na referência da README.md

Posso ver no documento Cucumber que também a sintaxe de codificação para a definição da etapa mudou.

Veja https://github.com/cucumber/cucumber-js/issues/679

Por que complicar tudo agora? Porque com a nova sintaxe, devo agrupar etapas por cenários.

Isso não é verdade

Obrigado, vou verificar isso!

@charlierudolph Tnx por explicar!

Este tópico foi bloqueado automaticamente, pois não houve nenhuma atividade recente depois que ele foi fechado. Abra um novo problema para bugs relacionados.

Esta página foi útil?
0 / 5 - 0 avaliações