From 2101441680a9d53a0f729b5a8219ad3486f5fc99 Mon Sep 17 00:00:00 2001 From: aguspe Date: Mon, 3 Mar 2025 16:15:14 +0100 Subject: [PATCH] Add activate method to browser context --- rb/lib/selenium/webdriver/bidi/browsing_context.rb | 5 +++++ .../selenium/webdriver/bidi/browsing_context.rbs | 2 ++ .../webdriver/bidi/browsing_context_spec.rb | 14 ++++++++++++-- 3 files changed, 19 insertions(+), 2 deletions(-) diff --git a/rb/lib/selenium/webdriver/bidi/browsing_context.rb b/rb/lib/selenium/webdriver/bidi/browsing_context.rb index b8f33227ce8a6..028bb94947fe7 100644 --- a/rb/lib/selenium/webdriver/bidi/browsing_context.rb +++ b/rb/lib/selenium/webdriver/bidi/browsing_context.rb @@ -94,6 +94,11 @@ def create(type: nil, context_id: nil) result = @bidi.send_cmd('browsingContext.create', type: type.to_s, referenceContext: context_id) result['context'] 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 1577c22073561..b55369531b98f 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 traverse_history: (Integer delta, String? context_id) -> void 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 353847a4c0bd7..2748cc09cfddd 100644 --- a/rb/spec/integration/selenium/webdriver/bidi/browsing_context_spec.rb +++ b/rb/spec/integration/selenium/webdriver/bidi/browsing_context_spec.rb @@ -22,8 +22,7 @@ module Selenium module WebDriver class BiDi - describe BrowsingContext, exclusive: {bidi: true, reason: 'only executed when bidi is enabled'}, - only: {browser: %i[chrome edge firefox]} do + describe BrowsingContext do after { |example| reset_driver!(example: example) } let(:bridge) { driver.instance_variable_get(:@bridge) } @@ -73,6 +72,17 @@ class BiDi expect(handles).to include(window1) expect(handles).not_to include(window2) 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