Dbz*_*Dbz 12 ruby rspec ruby-on-rails capybara travis-ci
我编写了一些功能规范来测试通过我的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)>'
Run Code Online (Sandbox Code Playgroud)
我读到了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'
...
Run Code Online (Sandbox Code Playgroud)
编辑:
我也试图把Capybara.default_wait_time = 15在rails_helper.rb,spec_helper.rb,spec/support/capybara.rb.
.travis.yml由于这个问题,我还添加了以下内容.
script:
- xvfb-run bundle exec rspec spec/features/*.rb
Run Code Online (Sandbox Code Playgroud)
但是,这也不起作用.
有谁知道问题可能是什么或如何解决它?
编辑:
这是我的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
Run Code Online (Sandbox Code Playgroud)
travis CI 失败的原因require_tree是application.js. 如果引用的目录require_tree为空,则一切都会中断。我找到了三种解决方案。
1)将.keep文件添加到适当的目录
2)删除该require_tree语句以及使用它的任何内容
3) 删除所有使用该require_tree语句的内容。
就我而言,是涡轮链接引起了这个问题。我计划实现一个前端框架,因此我删除了对 Turbo-links 的引用application.html.slim
Travis CI 仅在我从 slim 切换到 erb 时以及puts page.html在我的一项测试中才吐出此错误,因此很难追踪。
| 归档时间: |
|
| 查看次数: |
2259 次 |
| 最近记录: |