Cucumber-js: Como usar tag no meu cenário de função Cucumber.js?

Criado em 8 dez. 2015  ·  5Comentários  ·  Fonte: cucumber/cucumber-js

Oi,

Como saber o cenário que chama minha função? Como usar as tags no meu cenário de função?

Na verdade eu tenho um cenário:

Feature: create module feature
  As a admin
  I want to use create module

  <strong i="8">@createModule</strong>
  Given I am logged as 'ADMIN'
    And I am on "/admin/create"
   Then The "book_id" field should be empty

Eu gostaria de usar minha tag @createModule na minha função Then:

this.Then(/^The "?([^"]*)"? field should be empty$/, function (el) {

    if (myModule === @createModule) {
        ...
    } else if {
        ...
    }

    return main_po.checkIsEmptyElement(this, el);
});

Gostaria de obter minha tag @createModule , para especificar o cenário chamado, ou outra alternativa, gostaria de saber quais cenários chamam minha função.

Comentários muito úteis

Resolvido:

Eu adicionei :

this.Before(function (scenario, callback) {
    var tags = scenario.getTags();

    this.current_module = tags[0].getName();

    callback();
});

e minha função:

this.Then(/^The "?([^"]*)"? field should be empty$/, function (el) {

    if (this.current_module === @createModule) {
        ...
    } else if {
        ...
    }

    return main_po.checkIsEmptyElement(this, el);
});

Todos 5 comentários

As tags são usadas para escolher quais cenários executar ao executar o pepino-js (consulte o README). Atualmente as etapas não têm nenhuma maneira de dizer em qual cenário elas estão sendo executadas no momento. Todas as etapas em um cenário compartilharão uma instância mundial (acessada por meio de this na definição da etapa).

Resolvido:

Eu adicionei :

this.Before(function (scenario, callback) {
    var tags = scenario.getTags();

    this.current_module = tags[0].getName();

    callback();
});

e minha função:

this.Then(/^The "?([^"]*)"? field should be empty$/, function (el) {

    if (this.current_module === @createModule) {
        ...
    } else if {
        ...
    }

    return main_po.checkIsEmptyElement(this, el);
});

@jechazelle obrigado por postar sua solução, preciso da mesma funcionalidade para um caso de uso diferente :)

Em pepino-js 3.2.1 I para usar

Before({timeout: 20000}, async function(testCase) {
  this.tags = testCase.pickle.tags.map((tag) => tag.name);`
  ...
}

O motivo pelo qual estou usando é porque uma implementação de etapa específica está falhando em um subconjunto de cenários conhecido, então criei um ticket de defeito não crítico em nosso sistema de rastreamento, marquei os cenários com falha com o ticket# e adicionei lógica na implementação da etapa para retornar 'pendente' se this.tags contiver o número do ticket.

Isso permite que nossa construção volte ao verde, enquanto os poderes decidem se querem corrigir o defeito ou não.

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

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