diff --git a/rb/lib/selenium/webdriver/bidi/browsing_context.rb b/rb/lib/selenium/webdriver/bidi/browsing_context.rb index 55c08e2f1e7e3..dbd1c42d6f6c5 100644 --- a/rb/lib/selenium/webdriver/bidi/browsing_context.rb +++ b/rb/lib/selenium/webdriver/bidi/browsing_context.rb @@ -100,6 +100,11 @@ 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 activate(context_id: nil) + context_id ||= @bridge.window_handle + @bidi.send_cmd('browsingContext.activate', context: context_id) + 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..9f5368dafadd2 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 activate: (String? context_id) -> Hash[nil, nil] + 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..e4a9c0d7fb0e9 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,17 @@ class BiDi expect(driver.execute_script('return window.devicePixelRatio')).to eq(2.0) end end + + it 'activates a browser context' do + reset_driver!(web_socket_url: true) do |driver| + browsing_context = described_class.new(driver) + browsing_context.create + + expect(driver.execute_script('return document.hasFocus();')).to be_falsey + browsing_context.activate + expect(driver.execute_script('return document.hasFocus();')).to be_truthy + end + end end end # BiDi end # WebDriver