diff --git a/lib/puppeteer/launcher/chrome.rb b/lib/puppeteer/launcher/chrome.rb index 102fe0fd..905940cd 100644 --- a/lib/puppeteer/launcher/chrome.rb +++ b/lib/puppeteer/launcher/chrome.rb @@ -34,7 +34,7 @@ def launch(options = {}) if @launch_options.pipe? chrome_arguments << '--remote-debugging-pipe' else - chrome_arguments << '--remote-debugging-port=0' + chrome_arguments << "--remote-debugging-port=#{@chrome_arg_options.debugging_port}" end end diff --git a/lib/puppeteer/launcher/chrome_arg_options.rb b/lib/puppeteer/launcher/chrome_arg_options.rb index 093e8436..907b64be 100644 --- a/lib/puppeteer/launcher/chrome_arg_options.rb +++ b/lib/puppeteer/launcher/chrome_arg_options.rb @@ -34,9 +34,10 @@ def initialize(options) if @headless.nil? @headless = !@devtools end + @debugging_port = options[:debugging_port] || 0 end - attr_reader :args, :user_data_dir + attr_reader :args, :user_data_dir, :debugging_port def headless? @headless diff --git a/lib/puppeteer/launcher/firefox.rb b/lib/puppeteer/launcher/firefox.rb index 13a11a84..be45268c 100644 --- a/lib/puppeteer/launcher/firefox.rb +++ b/lib/puppeteer/launcher/firefox.rb @@ -28,7 +28,7 @@ def launch(options = {}) end if firefox_arguments.none? { |arg| arg.start_with?('--remote-debugging-') } - firefox_arguments << '--remote-debugging-port=0' + firefox_arguments << "--remote-debugging-port=#{@chrome_arg_options.debugging_port}" end temporary_user_data_dir = nil diff --git a/lib/puppeteer/puppeteer.rb b/lib/puppeteer/puppeteer.rb index 9a2c1e80..67a0d766 100644 --- a/lib/puppeteer/puppeteer.rb +++ b/lib/puppeteer/puppeteer.rb @@ -44,6 +44,7 @@ def launch( args: nil, user_data_dir: nil, devtools: nil, + debugging_port: nil, headless: nil, ignore_https_errors: nil, default_viewport: NoViewport.new, @@ -63,6 +64,7 @@ def launch( args: args, user_data_dir: user_data_dir, devtools: devtools, + debugging_port: debugging_port, headless: headless, ignore_https_errors: ignore_https_errors, default_viewport: default_viewport, diff --git a/spec/integration/launcher_spec.rb b/spec/integration/launcher_spec.rb index 377dd8f9..d134aaa4 100644 --- a/spec/integration/launcher_spec.rb +++ b/spec/integration/launcher_spec.rb @@ -260,6 +260,16 @@ expect(screenshot.size).to be > 50000 end end + + it 'should set the debugging port' do + options = default_launch_options.merge( + debugging_port: 9999, + ) + + Puppeteer.launch(**options) do |browser| + expect(URI(browser.ws_endpoint).port).to eq(9999) + end + end end describe 'Puppeteer#default_args', puppeteer: :browser do