【问题标题】:protractor E2E tests stopped working on 11 second timeout量角器 E2E 测试在 11 秒超时后停止工作
【发布时间】:2014-12-16 09:35:16
【问题描述】:

我正在使用 protractor 1.4 对我们的 Angular 网站进行 E2E 测试。我有一套测试运行并完美通过,直到一周前突然大多数测试开始在 11 秒超时时失败(“超时等待量角器在 11001 毫秒后与页面同步”)

因为我想回溯并查找某处是否有一段代码对此负责,所以我恢复到一个正常的提交,并且我标记为所有测试都通过并且 nada - 仍然是同一个问题。

此时我不知道是什么原因以及如何继续。似乎环境中的某些东西发生了变化(恢复没有变回来),但我不确定它会是什么。 我认为这可能与 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 之旅 - 也许这就是问题所在?

【问题讨论】:

  • 您的页面是否包含任何可能需要很长时间的 http 请求?还是您在任何地方都使用 $timeout ?为了帮助您,拥有此页面的 jsfiddle 或代码摘录会很有用。
  • 你也可以尝试修改量角器的超时时间并给它更长的延迟,试试这个,让我知道如果放 60s 可以解决问题 getPageTimeout: 60000 (cetia 给出了链接)跨度>

标签: angularjs protractor angularjs-e2e


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多