0

我有一个应用程序,我想在其上实现多个 E2E 测试场景,每个场景都特定于应用程序的一部分。问题是我的应用程序需要登录。我创建了一个登录场景,一切正常。为了描述不同的场景,我需要能够重用登录代码。我怎样才能做到这一点?

describe('login page flow', function () {
    it('should open the login page', function () {
        browser().navigateTo('/#/login');
        sleep(1);
        expect(browser().window().hash()).toBe('/login');
    });

    it('should have login elements', function () {
        expect(element('#username').count()).toBe(1);
        expect(element('#password').count()).toBe(1);
    });           

    it('should be able to login successfully', function () {
        input('ui.username').enter('user');
        input('ui.password').enter('pass');

        element('#signin').click();
        sleep(1);
        expect(browser().window().hash()).toBe('/welcome/');
    });
});

我唯一能想到的就是在 beforeEach 中写这个,但我认为这不是一个非常干净的解决方案。有任何想法吗?

4

1 回答 1

0

我认为这beforeEach()是一个完美的地方。

此外,您可以创建自己的页面片段,例如

function homePage()
{
    return {
        loginForm: {
            email: input("credentials.email"),
            password: input("credentials.password"),
            login: element("#login-form button[type=submit]")
        }
    };
}

并像这样重用它:

      describe("and user logs in", function ()
            {
                describe("successfully", function ()
                {
                    beforeEach(function ()
                    {                        
                        homePage().loginForm.email.enter("username");
                        homePage().loginForm.password.enter("password");
                        homePage().loginForm.login().click();
                    });
      ...

在这里,您可以阅读有关页面片段的想法。

于 2014-02-06T18:23:09.747 回答