]> git.openstreetmap.org Git - rails.git/commitdiff
Monkey patch Selenium to allocate unique bidi ports
authorTom Hughes <tom@compton.nu>
Wed, 12 Mar 2025 18:45:27 +0000 (18:45 +0000)
committerTom Hughes <tom@compton.nu>
Thu, 13 Mar 2025 18:41:17 +0000 (18:41 +0000)
https://github.com/mozilla/geckodriver/issues/2218

config/initializers/selenium.rb [new file with mode: 0644]

diff --git a/config/initializers/selenium.rb b/config/initializers/selenium.rb
new file mode 100644 (file)
index 0000000..5e683d8
--- /dev/null
@@ -0,0 +1,35 @@
+if Rails.env.test?
+  require "active_support/testing/parallelization"
+
+  module OpenStreetMap
+    module Selenium
+      module BidiPort
+        module ClassMethods
+          attr_accessor :websocket_port
+        end
+
+        def self.prepended(base)
+          class << base
+            prepend ClassMethods
+          end
+
+          base.websocket_port = 10000
+
+          ActiveSupport::Testing::Parallelization.after_fork_hook do |worker|
+            base.websocket_port = 10000 + worker
+          end
+        end
+
+        def initialize(config)
+          super
+
+          @extra_args = Array(@extra_args) << "--websocket-port=#{self.class.websocket_port}"
+
+          self.class.websocket_port += 256
+        end
+      end
+    end
+  end
+
+  Selenium::WebDriver::ServiceManager.prepend(OpenStreetMap::Selenium::BidiPort)
+end