规范在本地传递,但Travis CI失败

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 = 15rails_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)

Dbz*_*Dbz 0

travis CI 失败的原因require_treeapplication.js. 如果引用的目录require_tree为空,则一切都会中断。我找到了三种解决方案。

1)将.keep文件添加到适当的目录

2)删除该require_tree语句以及使用它的任何内容

3) 删除所有使用该require_tree语句的内容。

就我而言,是涡轮链接引起了这个问题。我计划实现一个前端框架,因此我删除了对 Turbo-links 的引用application.html.slim

Travis CI 仅在我从 slim 切换到 erb 时以及puts page.html在我的一项测试中才吐出此错误,因此很难追踪。