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