Capybara headless chrome in docker returns DevToolsActivePort file doesn't exist Capybara headless chrome in docker returns DevToolsActivePort file doesn't exist selenium selenium

Capybara headless chrome in docker returns DevToolsActivePort file doesn't exist


It seems like the default selenium_chrome_headless settings of capybara aren't sufficient for running in a docker container. I have solved it by changing my spec/support/capybara.rb settings to the following:

# spec/support/capybara.rb# Setup chrome headless driverCapybara.server = :puma, { Silent: true }Capybara.register_driver :chrome_headless do |app|  options = ::Selenium::WebDriver::Chrome::Options.new  options.add_argument('--headless')  options.add_argument('--no-sandbox')  options.add_argument('--disable-dev-shm-usage')  options.add_argument('--window-size=1400,1400')  Capybara::Selenium::Driver.new(app, browser: :chrome, options: options)endCapybara.javascript_driver = :chrome_headless# Setup rspecRSpec.configure do |config|  config.before(:each, type: :system) do    driven_by :rack_test  end  config.before(:each, type: :system, js: true) do    driven_by :chrome_headless  endend

Especially "--disable-dev-shm-usage" should not be forgotten, as it solves limited resource problems in docker, as noted in: https://github.com/GoogleChrome/puppeteer/issues/1834

Edit:I haven't made any changes to the above Dockerfile