Как запустить один сценарий Cucumber (с транспортиром) для нескольких файлов?

У меня есть такая функция Cucumber:

@MainSuite
Scenario: Verify that user can login
  Given I can see the login form
  Then I set a username
  And I set a password
  And I click in Login button
  Then I see the "wrong-password" message

Мне нужно проверить, может ли пользователь войти на 5 разных страницах. Мне нужно запустить эту функцию в 5 разных местах. Это похоже на то, что мне нужно запустить эту функцию в /login.html, /old_login.html, /after_restore_password.html и других (это просто пример).

Ты знаешь как это делать?

В настоящее время у меня жестко закодирован только один файл. Очевидно, мне нужно это изменить.

this.Given(/^I can see the login form$/, function(done) {
    this.goTo('login.html');
    browser.wait(EC.visibilityOf(this.loginFormContainer));
    done();
});

person Broda Noel    schedule 12.02.2017    source источник


Ответы (1)


Создайте объект, содержащий различные страницы входа в систему, к которым вы можете перейти.

Включите оператор if в свой шаг def, если есть дополнительный код, который необходимо выполнить.

this.Given(/^I can see the "(.*)" login form$/, function(loginPage, done) {
    var logins = {
         login : "login.html",
         afterpasswordreset: "after-password-reset.html"
    }
    loginPage = loginPage.toLowerCase().replace(" ", "");
    this.goTo(logins[loginPage]);
    browser.wait(EC.visibilityOf(this.loginFormContainer));
    done();
});

Создайте отдельные сценарии или файл функций для каждого варианта входа в систему или просто создайте для них схему сценария.

ИЗМЕНИТЬ

Вот как я бы реализовал схему сценария:

@MainSuite
Scenario Outline: Verify that user can login
  Given I can see the "<loginType>" login form
  And I set a username
  And I set a password
  When I click in Login button
  Then I see the "wrong-password" message

 Examples:
    | loginType              |
    | Login                  |
    | After Password Reset   |
person KyleFairns    schedule 12.02.2017
comment
Нет. У вас будет 2 выполнения данного правила, но только по одному для каждой следующей строки (когда и тогда) - person Broda Noel; 12.02.2017
comment
Что ты имеешь в виду? Учитывая, когда, то не всегда должно быть в наборах по три. Это само по себе заблуждение. Он должен быть достаточно информативным, чтобы следовать ему, поэтому существуют правила синтаксиса And и But. - person KyleFairns; 12.02.2017
comment
Проверьте сценарий, который я написал в основном вопросе. Как вы напишете сценарий огурца со своим предложением? (отредактируйте свой ответ примером. Вы увидите, что возникла проблема.) - person Broda Noel; 12.02.2017
comment
Думаю, я понял, что вы имели в виду под двумя выполнениями данного шага, но только по одному для каждой из следующих строк. Для схемы сценария вы можете написать тот же сценарий, но с небольшими изменениями, используя таблицу примеров (как показано в ответе). Это фактически запустит сценарий столько раз, сколько есть строк без заголовка, перемещаясь вниз по таблице, используя значения строк в сценарии, который он запускает. Это отлично работает для входа на сайт, если шаги одинаковы. - person KyleFairns; 12.02.2017
comment
Ты мужчина. Я не осознавал существования схемы сценария. Большое спасибо! - person Broda Noel; 12.02.2017