使用Protractor&amp ;;定义的API时Jasmine (the default/supported runner for Protractor),测试将始终适用于个人开发者笔记本电脑。出于某种原因,当测试在Jenkins CI服务器上运行时,它们将失败(尽管在两台主机上都位于相同的docker容器中,这非常令人沮丧。)
getPageTimeout
& allScriptsTimeout
到30秒对此没有任何影响。jasmine.DEFAULT_TIMEOUT_INTERVAL
更改为此套件中所有测试的60秒,一旦出现第一个错误,则每次测试都会等待整整60秒并超时。我已阅读并重新阅读Protractor's page on timeouts,但这似乎与这种情况无关。
甚至更奇怪的是,它似乎是某种缓冲问题 - 起初测试总是会在特定规范上失败,并且该规范的任何内容都看起来都不对。调试时我将selenium docker容器从2.53.1-beryllium
升级到3.4.0-einsteinium
,测试仍然失败,但是他们失败了几个规格 - 这表明可能在更新中有一些优化,所以它能够获得在它发出之前做得更多。
我确认通过重新排列规格的顺序 - 以前一直失败的规格现在正在通过,之前通过的测试开始失败(但在测试期间大致与重新排序之前的其他失败相同) 。)
环境:
5.1.2
3.4.0-einsteinium
1.12.5
答案 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.
在应用修复程序后,我有几个测试套件失败,但所有测试套件已经运行并且在最后一天通过,所以我认为这实际上是问题并且此解决方案有效。希望这有帮助!