RSpec: код Vue.js не компилируется в тестах Capybara - PullRequest
1 голос
/ 11 ноября 2019

Я пытаюсь запустить некоторые интеграционные тесты, используя 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, выполняющегося должным образом, я вижу, что он выводится в виде текста на страницу, например:

Vue.js code being printed on the page instead of being executed

Я также пытался запустить

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

Есть идеи, что я делаю неправильно? Заранее спасибо

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...