【发布时间】:2015-06-21 03:07:04
【问题描述】:
我编写了一些功能规范来测试通过我的 rails 应用程序登录,并且这些规范都在本地通过,但是当 Travis CI 运行它们时它们失败了。这是一个例子:
1) User Registration User signs up with valid credentials
Failure/Error: fill_in 'Username', with: 'dannnnneh'
Capybara::ElementNotFound:
Unable to find field "Username"
# ./spec/features/registrations_controller_spec.rb:8:in `block (2 levels) in <top (required)>'
我阅读了common build problems for Travis CI 以使用Capybara.default_wait_time = 15;但是,我要么把它放在错误的地方,要么它不起作用。
示例规范:
scenario 'User signs up with valid credentials' do
Capybara.default_wait_time = 15
visit '/users/sign_up'
fill_in 'Username', with: 'dannnnneh'
...
编辑:
我也尝试将Capybara.default_wait_time = 15 放入rails_helper.rb、spec_helper.rb、spec/support/capybara.rb。
由于this SO 问题,我还将以下内容添加到.travis.yml。
script:
- xvfb-run bundle exec rspec spec/features/*.rb
但是,这也不起作用。
有谁知道问题可能是什么或如何解决?
编辑:
这是我的spec_helper.rb:
require 'simplecov'
SimpleCov.start
require 'capybara'
require 'capybara/poltergeist'
Capybara.javascript_driver = :poltergeist
Capybara.register_driver :poltergeist do |app|
Capybara::Poltergeist::Driver.new(app, timeout: 15)
end
RSpec.configure do |config|
config.expect_with :rspec do |expectations|
expectations.include_chain_clauses_in_custom_matcher_descriptions = true
end
config.mock_with :rspec do |mocks|
mocks.verify_partial_doubles = true
end
end
【问题讨论】:
-
您使用的是什么驱动程序?该页面上是否运行了任何可能使登录框出现的 javascript?
-
@DickieBoy 我没有使用驱动程序,我需要一个吗?
-
我相信我已经将它设置为使用 Poltergeist,但仍然没有运气。
-
您是否在 travis 上的测试脚本中使用
bundle install? -
所有包都会在 travis 运行时自动安装。
标签: ruby-on-rails ruby rspec capybara travis-ci