在多种情况下重用E2E测试场景

时间:2013-10-22 14:32:19

标签: angularjs karma-runner angularjs-e2e angular-scenario

我有一个应用程序,我想在其上实现多个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中写这个,但我不认为这是一个非常干净的解决方案。有什么想法吗?

1 个答案:

答案 0 :(得分: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();
                    });
      ...

Here您可以阅读有关页面片段的想法。