5

我有一堆 rspec 测试,其中大约 30 个是通过 capybara/poltergeist 进行的无头测试。每次我在本地运行测试时,所有 100% 的测试都通过了。

我最近搭建了一个teamcity持续集成服务器,测试结果非常不一致。

我运行了 10 次测试,在测试之间没有做任何更改。只有 1 轮通过了 100%。其他的有 1-2 次失败(大部分都不相同),都与无头浏览器测试有关。以下是其中一种故障的示例:

ActionView::Template::Error: Couldn't find Spree::Address with id=1072978592

Stack trace:
./app/models/spree/order_decorator.rb:50:in `initialize_default_address'
./app/models/spree/order_decorator.rb:42:in `initialize_shipment'
./app/views/layouts/core.html.erb:23:in `_8cb98e121af585621c1d08e3ec1f6022'
./app/views/layouts/default.html.erb:14:in `_588b3208edc213a939dffd2ad73f4f26'

这个失败很奇怪,因为我对查找带有 ID 的地址并返回 factorygirl 模型的函数进行了存根。我在本地没有这个问题。

这是其中一个测试运行的另一个错误:

Capybara::ExpectationNotMet: expected to find link "10" but there were no matches

Stack trace:
./spec/features/simply_ship_spec.rb:102:in `block (2 levels) in <top (required)>'

同样,当我在本地运行它时,不会发生此错误,当我切换到 selenium 并观看测试时,链接显然在那里。

这两个错误(不是全部,而是几个示例)在不同的运行中单独发生,没有对项目进行任何更新。有人知道为什么会这样吗?

rspec-rails 2.14.0 capybara 2.1 poltergeist 1.3.0 rails 3.2.14 ruby​​ 1.9.3 p448

4

3 回答 3

3

您可以尝试capybara-screenshot gem以在失败期间澄清页面状态。

于 2013-09-01T00:46:44.397 回答
2

没有看到你的代码很难说,但听起来你的代码中可能有竞争条件。如果您的脚本运行速度比应用程序代码快,那么您会偶尔遇到这样的故障。

您可以查看这些故障发生在哪里,并确保在继续之前赶上应用程序。

于 2013-09-01T00:56:03.990 回答
2

原来在 poltergeist 中有一个错误导致不可靠的点击。您可以在此处关注错误讨论:

https://github.com/teampoltergeist/poltergeist/issues/530

于 2016-02-15T23:11:27.333 回答