Geb测试通过Chrome,与PhantomJS失败

wrs*_*der 5 functional-testing geb phantomjs

我注意到一些Geb功能测试通过了Chrome但是没有使用PhantomJS,保持所有其他变量不变.出现这种情况主要是与具有某种异步活动页面-一个呼叫$(selector).click()触发的事件处理程序更新DOM和DOM更新,需要在调用之前完成$(anotherSelector).click().

我可以通过积极使用再次使PhantomJS测试通过,waitFor但我不明白为什么PhantomJS GhostDriver而不是Chrome驱动程序需要这样做.

不幸的是,我还没有能够构建一个与我的应用程序隔离的最小测试用例.

erd*_*rdi 2

我唯一能得到的建议是始终确保测试中围绕异步活动的任何操作都受到waitFor语句的保护。您将避免出现这样的问题:在您的测试尝试访问页面中的新/修改元素之前,一个驱动程序足够快地完成异步活动,而其他驱动程序则不然。当您开始在 CI 上运行测试时,不使用waitFor异步活动也会让您感到困扰,它们通常会比较慢,并且您会在测试页面中看到更多与异步相关的失败。

我也不认为使用waitFor来保护测试中的每个异步活动是积极的。您必须记住,定期轮询条件并在满足条件后立即继续 - 因此,如果您的浏览器速度很快并且页面在第一次轮询waitFor之前更新,那么您根本不会受到速度方面的惩罚,但如果它是waitFor那么您就可以保证会重试以查看异步操作是否已完成并且条件是否已满足。我发现激进的是使用高得离谱的超时,比如 30 秒,而绝对不需要它们 - 这只是意味着如果你的测试失败,它将需要很长时间才能发生。