量角器E2E测试在11秒超时后停止工作

时间:2014-12-16 09:35:16

标签: angularjs protractor angularjs-e2e

我正在使用量角器1.4对E2E测试我们的Angular网站。我有一套测试正在运行并完美传递,直到一周前突然大部分测试在11秒超时时开始失败("超时等待Protractor在11001ms&#34之后与页面同步;)

因为我想回溯并发现是否有一段代码可以解决这个问题,我恢复了一个可以提交的提交,并且我标记为所有测试都在通过和nada - 仍然是同样的问题。 / p>

此时我不知道原因是什么以及如何继续。似乎环境中的某些东西已经发生了变化(回复并没有改变),但我不确定它是什么。 我认为这可能与Chrome版本有关,所以我尝试使用firefox - 结果相同。

我非常感谢给予的任何帮助。

测试失败的示例:

 it('should succeed for new user and fail for registered one', function () {
    //check create account link
    var createAccountLink = element(by.id('createNewAccountLink'));
    expect(createAccountLink.getText()).toEqual("or Create account");
    createAccountLink.click();

    //check create account title
    expect(element(by.css('#createAccountTitle > span')).getText()).toEqual("Create account");

    //insert new phone
    element(by.model('phone.number')).sendKeys(e2eHelperMethods.testedPhoneNumber);
    element(by.id('sendPinCodeBtn')).click();

    //check the pin code message
    expect(element(by.css('#pincodeSentMsg > span')).getText()).toContain(e2eHelperMethods.testedPhoneNumber);
    element(by.buttonText('OK')).click();

    //check pin code input screen
    element(by.model('model.pinCode')).sendKeys(e2eHelperMethods.defaultPin);
    element(by.id('validatePinCodeBtn')).click();

    //enter new password for the user
    element(by.model('model.password')).sendKeys(e2eHelperMethods.defaultPassword);
    element(by.model('model.repeatPassword')).sendKeys(e2eHelperMethods.defaultPassword);
    element(by.id('updateNewPasswordBtn')).click();

    //verify we got to the home screen
    expect(browser.getCurrentUrl()).toEqual(e2eHelperMethods.defaultWebsiteUri + 'home');

    //now log out and try to create same user again and verify we are failing
    browser.get(""); <-------------Here it hangs and gives me the 

    createAccountLink.click();
    element(by.model('phone.number')).sendKeys(e2eHelperMethods.testedPhoneNumber);
    element(by.id('sendPinCodeBtn')).click();
    expect(element(by.css('#numberAlreadyRegisteredMsg > span')).getText()).toContain("Your number is already registered. Please enter the password to login.");
});

也许值得一提的是,在失败的时候,网站开始了一个Into.JS之旅 - 也许这就是问题?

1 个答案:

答案 0 :(得分:0)

事实证明,我们在启动Web应用程序时使用了$ timeout来监视用户的不活动状态。 为测试环境禁用此功能解决了主要问题。 仍然对于Intro.JS框架,似乎我们必须导致使用browser.driver实例,因为由于某种原因,它会挂起并最终抛出11秒的异常。