# This file is copied to spec/ when you run 'rails generate rspec:install' ENV["RAILS_ENV"] ||= "test" require File.expand_path("../../config/environment", __FILE__) require "rspec/rails" require "capybara/rspec" # For code coverage require "simplecov" SimpleCov.start # Use Firefox headless Capybara.register_driver :firefox_headless do |app| options = ::Selenium::WebDriver::Firefox::Options.new options.args << "--headless" Capybara::Selenium::Driver.new(app, browser: :firefox, options: options) end Capybara.javascript_driver = :firefox_headless # Requires supporting ruby files with custom matchers and macros, etc, # in spec/support/ and its subdirectories. Dir[Rails.root.join("spec/support/**/*.rb")].each { |f| require f } RSpec.configure do |config| # ## Mock Framework # # If you prefer to use mocha, flexmock or RR, uncomment the appropriate line: # # config.mock_with :mocha # config.mock_with :flexmock # config.mock_with :rr # Include FactoryBot methods config.include FactoryBot::Syntax::Methods config.include Ajax, type: :feature # Remove this line if you're not using ActiveRecord or ActiveRecord fixtures config.fixture_path = "#{::Rails.root}/spec/fixtures" # If you're not using ActiveRecord, or you'd prefer not to run each of your # examples within a transaction, remove the following line or assign false # instead of true. config.use_transactional_fixtures = false # If true, the base class of anonymous controllers will be inferred # automatically. This will be the default behavior in future versions of # rspec-rails. config.infer_base_class_for_anonymous_controllers = false # Run specs in random order to surface order dependencies. If you find an # order dependency and want to debug it, you can fix the order by providing # the seed, which is printed after each run. # --seed 1234 config.order = "random" config.before(:suite) do DatabaseCleaner.clean_with(:truncation) end config.before(:each) do Capybara.default_max_wait_time = 2 DatabaseCleaner.strategy = :transaction end config.before(:each, js: true) do Capybara.default_max_wait_time = 10 DatabaseCleaner.strategy = :deletion end config.before(:each) do DatabaseCleaner.start end config.after(:each) do DatabaseCleaner.clean end end Shoulda::Matchers.configure do |config| config.integrate do |with| with.test_framework :rspec with.library :rails end end