Я пытаюсь запустить некоторые интеграционные тесты, используя RSpec & Capybara с Headless Chrome.
Однако кажется, что код Vue.js на странице не компилируется, поэтому интеграционный тест не запускаетсяправильно.
Я использую следующие драгоценные камни:
group :development, :test do
# Call 'byebug' anywhere in the code to stop execution and get a debugger console
gem 'byebug', platforms: [:mri, :mingw, :x64_mingw]
gem 'pry'
gem 'rspec-rails', '~> 3.8'
gem 'factory_bot_rails'
gem 'faker', git: 'https://github.com/stympy/faker.git', branch: 'master'
gem 'database_cleaner'
gem 'selenium-webdriver'
end
group :test do
# Adds support for Capybara system testing and selenium driver
gem 'capybara', '>= 2.15'
gem 'capybara-selenium'
gem 'webdrivers'
end
My rails_helper.rb
содержит строки:
require 'rspec/rails'
require 'capybara/rails'
require 'capybara/rspec'
require 'selenium/webdriver'
# ...
Capybara.register_driver :chrome do |app|
Capybara::Selenium::Driver.new(app, browser: :chrome)
end
Capybara.register_driver :headless_chrome do |app|
capabilities = Selenium::WebDriver::Remote::Capabilities.chrome(
chromeOptions: { args: %w[headless disable-gpu] }
)
Capybara::Selenium::Driver.new app,
browser: :chrome,
desired_capabilities: capabilities
end
# Capybara.default_driver = :headless_chrome
# Capybara.javascript_driver = :headless_chrome
Capybara.default_driver = :chrome
Capybara.javascript_driver = :chrome
Вывод информации webpacker:
bundle exec rails webpacker:info
Ruby: ruby 2.6.5p114 (2019-10-01 revision 67812) [x86_64-darwin19]
Rails: 6.0.1
Webpacker: 4.0.7
Node: v8.9.2
Yarn: 1.19.1
@rails/webpacker:
myapp@ /Users/me/Documents/apps/myapp
└── @rails/webpacker@4.0.7
Is bin/webpack present?: true
Is bin/webpack-dev-server present?: true
Is bin/yarn present?: true
Но когда я запускаю интеграцию, вместо кода Vue.js, выполняющегося должным образом, я вижу, что он выводится в виде текста на страницу, например:
Я также пытался запустить
RAILS_ENV=test rails assets:precompile
перед запуском спецификации, но это тоже не сработало.
Это файл спецификации:
RSpec.feature 'Users can create invocies' do
let(:user) { create(:user) }
let(:address) { create(:address, user: user) }
let(:client) { create(:client, user: user) }
let!(:client_address) { create(:address, user: user, client: client) }
before do
login_as user
visit new_invoice_path
end
context 'successfully' do
it 'displays a success message on creation' do
fill_in 'Invoice No.', with: rand(1..100)
select address.full_address, from: 'invoice_personal_address'
select client_address.full_address, from: 'invoice_client_address'
fill_in 'Service name', with: 'Amazing web development'
fill_in 'Service description', with: 'Web development for real pros.'
fill_in 'Quantity', with: rand(1..10)
fill_in 'Rate', with: rand(30.0..80.0)
fill_in 'Date issued', with: Date.today
fill_in 'Date due', with: 1.month.from_now
click_button 'Create Invoice'
expect(page).to have_content 'Invoice was successfully created.'
end
end
end
Есть идеи, что я делаю неправильно? Заранее спасибо