|
require 'capybara/rspec' |
|
|
|
Dir[Rails.root.join('spec', 'support', '**', '*.rb')].each { |f| require f } |
|
|
|
RSpec.configure do |config| |
|
config.use_transactional_fixtures = false |
|
config.include FactoryBot::Syntax::Methods |
|
|
|
config.before(:suite) do |
|
if config.use_transactional_fixtures? |
|
raise(<<-MSG) |
|
Delete line `config.use_transactional_fixtures = true` from rails_helper.rb |
|
(or set it to false) to prevent uncommitted transactions being used in |
|
JavaScript-dependent specs. |
|
|
|
During testing, the app-under-test that the browser driver connects to |
|
uses a different database connection to the database connection used by |
|
the spec. The app's database connection would not be able to access |
|
uncommitted transaction data setup over the spec's database connection. |
|
MSG |
|
end |
|
DatabaseCleaner.clean_with(:truncation, pre_count: true, cache_tables: true) |
|
FactoryBot.lint |
|
end |
|
|
|
config.before(:each) do |
|
DatabaseCleaner.strategy = :transaction |
|
end |
|
|
|
config.before(:each, type: :feature) do |
|
driver_shares_db_connection_with_specs = Capybara.current_driver == :rack_test |
|
|
|
unless driver_shares_db_connection_with_specs |
|
DatabaseCleaner.strategy = :truncation |
|
end |
|
end |
|
|
|
config.before(:each) do |
|
DatabaseCleaner.start |
|
end |
|
|
|
config.append_after(:each) do |
|
DatabaseCleaner.clean |
|
end |
|
|
|
config.include Devise::Test::ControllerHelpers, type: :controller |
|
config.include ControllerHelpers, :type => :controller |
|
config.include OmniauthHelpers |
|
OmniAuth.config.test_mode = true |
|
|
|
config.before(:each, type: :system) do |
|
driven_by :rack_test |
|
end |
|
|
|
config.before(:each, type: :system, js: true) do |
|
driven_by :selenium_chrome_headless |
|
end |
|
end |
|
|
|
Capybara.register_driver :selenium_chrome_headless do |app| |
|
options = Selenium::WebDriver::Chrome::Options.new( |
|
args: %w[headless disable-gpu --window-size=1400x1400] |
|
) |
|
Capybara::Selenium::Driver.new(app, browser: :chrome, options: options) |
|
end |
|
|
|
Capybara.default_driver = :selenium_chrome_headless |
|
|
|
Shoulda::Matchers.configure do |config| |
|
config.integrate do |with| |
|
with.test_framework :rspec |
|
with.library :rails |
|
end |
|
end |
|
|