我使用带有恶作剧驱动程序的Capybara进行一些功能测试时遇到了奇怪的问题.测试应该在我的网上商店进行简单的结账.它们都在我当地的MacBook以及Ubuntu流浪盒上都很好.但是对于像Codeship,Wercker或Semaphore这样的CI服务,它们会出现同样的错误.
我的规格:
require 'rails_helper'
describe 'Checkout' do
let!(:product) { FactoryGirl.create(:product) }
it 'checks out via CreditCard', js: true do
visit products_path
expect(page.body).to have_link('Test Product 1')
click_link('Test Product 1')
#rest of spec ommitted
end
end
Run Code Online (Sandbox Code Playgroud)
我在CI上遇到的错误是:
2) Checkout checks out via CreditCard
Failure/Error: click_link('Test Product 1')
Capybara::ElementNotFound:
Unable to find link "Test Product 1"
Run Code Online (Sandbox Code Playgroud)
对我来说,这是非常奇怪的,因为第一个期望' 期望(page.body).to has_link('测试产品1')似乎通过但是它在下一步失败,它应该实际上点击它确保的链接出现在页面上?
然后我按如下方式重新配置了poltergeist驱动程序以收集更多调试信息.
rails_helper.rb的片段:
Capybara.register_driver :poltergeist do |app|
Capybara::Poltergeist::Driver.new(app, {js_errors: false,
#inspector: true,
phantomjs_logger: Rails.logger,
logger: nil,
phantomjs_options: ['--debug=no', '--load-images=no', '--ignore-ssl-errors=yes', '--ssl-protocol=TLSv1'],
debug: true
}) …Run Code Online (Sandbox Code Playgroud)