Files
openfoodnetwork/spec/system/support/cuprite_setup.rb
2025-10-08 14:15:56 +11:00

62 lines
2.1 KiB
Ruby

# frozen_string_literal: true
require "capybara/cuprite"
headless = ActiveModel::Type::Boolean.new.cast(ENV.fetch("HEADLESS", true))
browser_options = {
"ignore-certificate-errors" => nil,
}
browser_options["no-sandbox"] = nil if ENV['CI'] || ENV['DOCKER']
Capybara.register_driver(:cuprite_ofn) do |app|
Capybara::Cuprite::Driver.new(
app,
window_size: [1280, 800],
browser_options:,
process_timeout: 60,
timeout: 60,
# Don't load scripts from external sources, like google maps or stripe
url_whitelist: [
%r{^http://localhost}, %r{^http://0.0.0.0}, %r{http://127.0.0.1},
# Testing the DFC Permissions component by Startin'Blox:
%r{^https://cdn.jsdelivr.net/npm/@startinblox/},
%r{^https://cdn.startinblox.com/},
%r{^https://data-server.cqcm.startinblox.com/scopes$},
%r{^https://api.proxy-dev.cqcm.startinblox.com/profile$},
# Just for testing external connections: spec/system/billy_spec.rb
%r{^https?://deb.debian.org},
],
inspector: true,
headless:,
js_errors: true,
# Puffing Billy seems to make our rspec processes hang at the end.
# Deactivating for now.
#
# proxy: { host: Billy.proxy.host, port: Billy.proxy.port },
)
end
# Configure Capybara to use :cuprite_ofn driver by default
Capybara.default_driver = Capybara.javascript_driver = :cuprite_ofn
RSpec.configure do |config|
config.include CupriteHelpers, type: :system
config.include Devise::Test::IntegrationHelpers, type: :system
config.prepend_before(:each, type: :system) { driven_by :cuprite_ofn }
# Make sure url helpers in mailers use the Capybara server host.
config.around(:each, type: :system) do |example|
original_host = Rails.application.default_url_options[:host]
Rails.application.default_url_options[:host] =
"#{Capybara.current_session.server.host}:#{Capybara.current_session.server.port}"
DfcProvider::Engine.routes.default_url_options = Rails.application.default_url_options
example.run
Rails.application.default_url_options[:host] = original_host
remove_downloaded_files
end
end