量angular器testing在Jenkins的Docker中随机超时,在本地Docker中正常工作

当使用由Protractor&Jasmine (默认/支持的量angular器运行程序)定义的API时,testing在个别开发人员笔记本电脑上始终可以正常工作。 由于某些原因,在Jenkins CI服务器上运行testing时,它们将会失败(尽pipe在两台主机上都有相同的docker容器,而且非常令人沮丧)。

  1. 发生此错误: Jasmine规范超时。 重置WebDriver控制stream程。
  2. 出现此错误: 错误:超时 – 在由jasmine.DEFAULT_TIMEOUT_INTERVAL指定的超时时间内未调用asynchronouscallback。
    • getPageTimeoutallScriptsTimeout设置为30秒对此没有影响。
    • 我尝试将jasmine.DEFAULT_TIMEOUT_INTERVAL更改为60秒,以便在此套件中的所有testing中,一旦出现第一个错误,那么每个testing都将等待完整的60秒并超时。

我已经阅读并重读了量angular器的页面,但是没有一个与这种情况有关。

甚至更奇怪的是,这似乎是某种缓冲区问题 – 起初testing将总是在特定的规格上失败,没有任何关于该规范的看法是错误的。 在debugging过程中,我将seleniumdocker容器从2.53.1-beryllium升级到了3.4.0-einsteinium ,并且testing仍然失败,但是它们没能成功解决一些问题 – 这意味着在更新中可能会有一些优化,所以能够得到在发出之前做了更多的事情。

我确认,通过重新排列规格的顺序 – 以前一直失败的规格现在已经过去,并且之前通过的testing开始失败(但与重新sorting之前的其他失败大致相同)。

环境:

  • 量angular器 – 5.1.2
  • selenium/独立铬debugging – 3.4.0-einsteinium
  • docker工 – 1.12.5

这个解决scheme最终很简单 – 我首先在铬报告中发现了这个问题,事实certificate它也在docker-selenium repo的首页上列出来,但是文本并不清楚它是什么时候我第一次读它。 (它说selenium没有它就会崩溃,但是我从茉莉花那里得到的错误只是在谈论超时问题,这是相当具有误导性的。)

Chrome显然使用/dev/shm ,显然这在docker中是相当小的。 有从自己的README链接铬和Firefox的解决方法,解释如何解决这个问题。

我有几个testing套件在应用修复程序后失败,但所有的testing套件已经运行并在最后一天传递,所以我认为这实际上是问题,这个解决scheme的工作原理。 希望这可以帮助!