量角器测试在Jenkins上的Docker中随机出现,在Docker本地工作正常

时间:2017-07-13 17:09:45

标签: selenium docker jenkins protractor

使用Protractor&amp ;;定义的API时Jasmine (the default/supported runner for Protractor),测试将始终适用于个人开发者笔记本电脑。出于某种原因,当测试在Jenkins CI服务器上运行时,它们将失败(尽管在两台主机上都位于相同的docker容器中,这非常令人沮丧。)

  1. 发生此错误: Jasmine规范超时。重置WebDriver控制流程。
  2. 此错误也会出现:错误:超时 - 在jasmine.DEFAULT_TIMEOUT_INTERVAL指定的超时时间内未调用异步回调。
    • 设置getPageTimeout& allScriptsTimeout到30秒对此没有任何影响。
    • 我尝试将此jasmine.DEFAULT_TIMEOUT_INTERVAL更改为此套件中所有测试的60秒,一旦出现第一个错误,则每次测试都会等待整整60秒并超时。
  3. 我已阅读并重新阅读Protractor's page on timeouts,但这似乎与这种情况无关。

    甚至更奇怪的是,它似乎是某种缓冲问题 - 起初测试总是会在特定规范上失败,并且该规范的任何内容都看起来都不对。调试时我将selenium docker容器从2.53.1-beryllium升级到3.4.0-einsteinium,测试仍然失败,但是他们失败了几个规格 - 这表明可能在更新中有一些优化,所以它能够获得在它发出之前做得更多。

    我确认通过重新排列规格的顺序 - 以前一直失败的规格现在正在通过,之前通过的测试开始失败(但在测试期间大致与重新排序之前的其他失败相同) 。)

    环境:

    • 量角器 - 5.1.2
    • selenium / standalone-chrome-debug - 3.4.0-einsteinium
    • docker - 1.12.5

1 个答案:

答案 0 :(得分:1)

解决方案最终变得简单了 - 我首先在a chrome bug report上找到了它,结果它也被列在docker-selenium repo的首页上,但文字并非如此当我第一次读它时,清楚它是什么。 (它说硒会在没有它的情况下崩溃,但是我从Jasmine那里得到的错误只是在谈论超时,这是非常误导的。)

Chrome显然使用了/dev/shm,显然在码头工具中相当小。 There are workarounds for chrome and firefox linked from their README that explain how to resolve the issue.

在应用修复程序后,我有几个测试套件失败,但所有测试套件已经运行并且在最后一天通过,所以我认为这实际上是问题并且此解决方案有效。希望这有帮助!