diff --git a/rb/lib/selenium/webdriver/bidi/browsing_context.rb b/rb/lib/selenium/webdriver/bidi/browsing_context.rb index 55c08e2f1e7e3..6bdd0b3049ae6 100644 --- a/rb/lib/selenium/webdriver/bidi/browsing_context.rb +++ b/rb/lib/selenium/webdriver/bidi/browsing_context.rb @@ -100,6 +100,10 @@ def set_viewport(context_id: nil, width: nil, height: nil, device_pixel_ratio: n params = {context: context_id, viewport: {width:, height:}, device_pixel_ratio:} @bidi.send_cmd('browsingContext.setViewport', **params) end + + def handle_user_prompt(context_id, accept: true, text: nil) + @bidi.send_cmd('browsingContext.handleUserPrompt', context: context_id, accept: accept, text: text) + end end end # BiDi end # WebDriver diff --git a/rb/sig/lib/selenium/webdriver/bidi/browsing_context.rbs b/rb/sig/lib/selenium/webdriver/bidi/browsing_context.rbs index 03052b3f86a10..89d37bcab3745 100644 --- a/rb/sig/lib/selenium/webdriver/bidi/browsing_context.rbs +++ b/rb/sig/lib/selenium/webdriver/bidi/browsing_context.rbs @@ -8,6 +8,8 @@ module Selenium def initialize: (Remote::Bridge bridge) -> void + def handle_user_prompt: (String context, bool accept, String text) -> untyped + def navigate: (String url, String? context_id) -> void def set_viewport: (String context_id, Integer width, Integer height, Float device_pixel_ratio) -> Hash[nil, nil] diff --git a/rb/spec/integration/selenium/webdriver/bidi/browsing_context_spec.rb b/rb/spec/integration/selenium/webdriver/bidi/browsing_context_spec.rb index daa74fbc0ef75..bf27cec8278d5 100644 --- a/rb/spec/integration/selenium/webdriver/bidi/browsing_context_spec.rb +++ b/rb/spec/integration/selenium/webdriver/bidi/browsing_context_spec.rb @@ -82,6 +82,39 @@ class BiDi expect(driver.execute_script('return window.devicePixelRatio')).to eq(2.0) end end + + it 'accepts users prompts without text' do + reset_driver!(web_socket_url: true) do |driver| + browsing_context = described_class.new(driver) + window = browsing_context.create + + browsing_context.handle_user_prompt(window, accept: true) + + expect(driver.page_source).to include('hello') + end + end + + it 'accepts users prompts with text' do + reset_driver!(web_socket_url: true) do |driver| + browsing_context = described_class.new(driver) + window = browsing_context.create + + browsing_context.handle_user_prompt(window, accept: true, text: 'Hello, world!') + + expect(driver.page_source).to include('hello') + end + end + + it 'rejects users prompts' do + reset_driver!(web_socket_url: true) do |driver| + browsing_context = described_class.new(driver) + window = browsing_context.create + + browsing_context.handle_user_prompt(window, accept: false) + + expect(driver.page_source).to include('goodbye') + end + end end end # BiDi end # WebDriver