如何 运行 一个 Cucumber (With Protractor) 场景覆盖多个文件?

How to run one Cucumber (With Protractor) scenario over multiples files?

我有像这样的 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();
});

创建一个包含您可以访问的不同登录页面的对象。

如果有任何额外的代码需要执行,请在您的步骤定义中包含一个 if 语句。

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   |