36 lines
855 B
Ruby
36 lines
855 B
Ruby
require "capybara/cuprite"
|
|
|
|
REMOTE_CHROME_URL = ENV.fetch("CHROME_URL", nil)
|
|
REMOTE_CHROME_HOST, REMOTE_CHROME_PORT =
|
|
if REMOTE_CHROME_URL
|
|
URI.parse(REMOTE_CHROME_URL).then do |uri|
|
|
[uri.host, uri.port]
|
|
end
|
|
end
|
|
|
|
remote_chrome =
|
|
begin
|
|
if REMOTE_CHROME_URL.nil?
|
|
false
|
|
else
|
|
Socket.tcp(REMOTE_CHROME_HOST, REMOTE_CHROME_PORT, connect_timeout: 1).close
|
|
true
|
|
end
|
|
rescue Errno::ECONNREFUSED, Errno::EHOSTUNREACH, SocketError
|
|
false
|
|
end
|
|
|
|
remote_options = remote_chrome ? { url: REMOTE_CHROME_URL } : {}
|
|
|
|
Capybara.register_driver(:better_cuprite) do |app|
|
|
Capybara::Cuprite::Driver.new(
|
|
app,
|
|
**{
|
|
window_size: [1200, 800],
|
|
browser_options: {},
|
|
process_timeout: 10,
|
|
inspector: true,
|
|
headless: !ENV["HEADLESS"].in?(%w[n 0 no false])
|
|
}.merge(remote_options),
|
|
)
|
|
end
|