Angularjs 量角器-x27;未调用异步回调';本地传递时Jenkins上的错误

Angularjs 量角器-x27;未调用异步回调';本地传递时Jenkins上的错误,angularjs,jenkins,selenium-webdriver,jasmine,protractor,Angularjs,Jenkins,Selenium Webdriver,Jasmine,Protractor,在Jenkins上运行量角器端到端UI测试时,我总是遇到以下错误。(盒子上的操作系统是CentOS 6.7)。使用Firefox浏览器。Xvfb服务器在生成之前启动 错误:超时-jasmine未在超时内调用异步回调。默认\u超时\u间隔 在装有Firefox38的Windows10机器上,同样的测试始终在本地通过。我特意选择了10-15个已经稳定的测试来解决这个问题,但没有运气。从日志来看,测试似乎成功地完成了每个断言,然后挂起。 我在每个测试中使用'done'参数,并在断言后调用它来完成测试。

在Jenkins上运行量角器端到端UI测试时,我总是遇到以下错误。(盒子上的操作系统是CentOS 6.7)。使用Firefox浏览器。Xvfb服务器在生成之前启动

错误:超时-jasmine未在超时内调用异步回调。默认\u超时\u间隔

在装有Firefox38的Windows10机器上,同样的测试始终在本地通过。我特意选择了10-15个已经稳定的测试来解决这个问题,但没有运气。从日志来看,测试似乎成功地完成了每个断言,然后挂起。 我在每个测试中使用'done'参数,并在断言后调用它来完成测试。以下是我的两个规格之一的单个测试示例:

page.getWaitForRows(function () {
    expect(browser.getCurrentUrl()).toContain(HISOTRY_PATH);
    commons.verifyElementDisplayed(commonPage.getNewNumberMenuItem());
    commonPage.clickNumberMenuItem().then(function () {
        commonPage.clickOnOrderMenuLabel();
        commons.waitForUrlToChangeTo(new RegExp(ORDER_MENU)).then(function () {
            done();
        });
    });
});
大多数人的跑步时间为100秒

以下是我的大部分配置文件(使用ignoreSynchronization=true,因为Angular应用程序的同步失败,因为它使用$timeout):

请注意,在稍后的登录测试中,同步已启用一段时间,但在此之后,它再次设置为false。以下是我测试之前的方法:

 beforeAll(function (done) {
   commons.loginAndChooseAccount().then(function () {
   browser.ignoreSynchronization = true;
   done();
   });
 });
我尝试的是:

  • 使用directConnect直接连接到Firefox:true
  • 将量角器版本更新为3.1.1
  • 具体设置 browser.Ignore在每个“it”测试或中同步为“true” “每个人之前”
  • 还有很多其他的东西


    什么都没用。我运行的两个规范中的每个“it”都会因此错误而失败。对于相同的测试,本地故障始终为0。我尝试切换到Chrome,但它不正式支持CentOS 6.7,所以我一直使用Firefox,并且已经与这个问题斗争了一个多星期。非常感谢您的帮助

    centos box上使用的firefox版本是什么?那里使用的是firefox-38.6.0-2.el6.centos.x86_64.rpm。Firefox 38.0在本地计算机上使用。好的,什么nodejs版本在本地和服务器上使用?节点v0.12.2在服务器上使用。我在本地使用了相同的版本,最近更新为较新的版本,但我认为这与此无关,因为测试也通过了较旧的版本。量角器最初的版本是2.5.1,现在我更新到3.1.1。您能否展示您提供的示例测试中使用的
    commons
    commonPage
    方法?还有,你知道它具体挂在哪条线上吗?如果删除
    done()
    调用怎么办?
     beforeAll(function (done) {
       commons.loginAndChooseAccount().then(function () {
       browser.ignoreSynchronization = true;
       done();
       });
     });