尝试在Jenkins版本上进行无头UI烟雾测试。看起来Poltergeist将是可行的方式,但我无法让驱动程序接收任何内容。
目前的策略是编译所有资产,就像生产部署将要发生一样。
第一步:进行“本地主机生产部署”
bundle install --deployment --retry=3
npm install
cd client # where all React.js code lives
node_modules/.bin/webpack -b --config webpack.production.config
cd ..
bundle exec rake assets:precompile RAILS_ENV=production
mkdir -p public/images;
cp -R app/assets/images/* public/images/
第二步:在生产模式下运行localhost:3000
RAILS_ENV=production bundle exec rails s
=> Rails 4.2.6 application starting in production on http://localhost:3000
第三步:运行指向localhost:3000
的冒烟测试bundle exec rspec spec/features
这里是我对水豚/恶作剧的极其琐碎的测试例子:
require "rails_helper"
Capybara.javascript_driver = :poltergeist
Capybara.run_server = false
Capybara.app_host = "http://localhost:3000"
RSpec.describe "FooBar copyright", js: true do
context "when on the homepage" do
it "displays 'All rights reserved'" do
Rails.env = "production"
page.visit "/"
expect(page).to have_content "All rights reserved"
end
end
end
你会认为这会起作用......但事实并非如此。测试失败,因为他们没有拿起任何内容。我做了一些调试,Rails.env是正确的,current_url
也正确设置为localhost:3000
。
在浏览器中手动转到localhost:3000
也可以正常工作。资产正在正确编译。
由于某些原因,水豚/恶作剧者根本没有拿起内容。收到此错误:
Failure/Error: expect(page).to have_content "All rights reserved"
expected to find text "All rights reserved" in ""
感谢任何帮助!