From f5ac05fd2b4a1de0d4151d2166863fffc815e2f2 Mon Sep 17 00:00:00 2001 From: aguspe Date: Sun, 16 Feb 2025 00:57:29 +0100 Subject: [PATCH 1/3] Add set viewport for browsing context --- rb/lib/selenium/webdriver/bidi/browsing_context.rb | 6 ++++++ .../selenium/webdriver/bidi/browsing_context.rbs | 2 ++ .../webdriver/bidi/browsing_context_spec.rb | 13 ++++++++++++- 3 files changed, 20 insertions(+), 1 deletion(-) diff --git a/rb/lib/selenium/webdriver/bidi/browsing_context.rb b/rb/lib/selenium/webdriver/bidi/browsing_context.rb index b8f33227ce8a6..250109d800a93 100644 --- a/rb/lib/selenium/webdriver/bidi/browsing_context.rb +++ b/rb/lib/selenium/webdriver/bidi/browsing_context.rb @@ -94,6 +94,12 @@ def create(type: nil, context_id: nil) result = @bidi.send_cmd('browsingContext.create', type: type.to_s, referenceContext: context_id) result['context'] end + + def set_viewport(context_id: nil, width: nil, height: nil, device_pixel_ratio: nil) + context_id ||= @bridge.window_handle + params = {context: context_id, viewport: {width:, height:}, device_pixel_ratio: device_pixel_ratio.to_f} + @bidi.send_cmd('browsingContext.setViewport', **params) + 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..03052b3f86a10 100644 --- a/rb/sig/lib/selenium/webdriver/bidi/browsing_context.rbs +++ b/rb/sig/lib/selenium/webdriver/bidi/browsing_context.rbs @@ -10,6 +10,8 @@ module Selenium 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] + def traverse_history: (Integer delta, String? context_id) -> void def reload: (String? context_id, ?ignore_cache: bool) -> 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..b3e6504962c31 100644 --- a/rb/spec/integration/selenium/webdriver/bidi/browsing_context_spec.rb +++ b/rb/spec/integration/selenium/webdriver/bidi/browsing_context_spec.rb @@ -73,7 +73,18 @@ class BiDi expect(handles).to include(window1) expect(handles).not_to include(window2) end + + it 'sets the viewport' do + reset_driver!(web_socket_url: true) do |driver| + browsing_context = described_class.new(driver) + browsing_context.set_viewport(width: 800, height: 600, device_pixel_ratio: 2) + expect(driver.execute_script('return [window.innerWidth, window.innerHeight]')).to eq([800, 600]) + expect(driver.execute_script('return window.devicePixelRatio')).to eq(2) + end + end end - end # BiDi + end + + # BiDi end # WebDriver end # Selenium From e7d08440a0e260e68be94dfb52159c219ca6cae1 Mon Sep 17 00:00:00 2001 From: aguspe Date: Sun, 16 Feb 2025 01:00:04 +0100 Subject: [PATCH 2/3] Fix comment --- .../selenium/webdriver/bidi/browsing_context_spec.rb | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) 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 b3e6504962c31..5a5c1cd213574 100644 --- a/rb/spec/integration/selenium/webdriver/bidi/browsing_context_spec.rb +++ b/rb/spec/integration/selenium/webdriver/bidi/browsing_context_spec.rb @@ -83,8 +83,6 @@ class BiDi end end end - end - - # BiDi + end # BiDi end # WebDriver end # Selenium From 267f38e5d31df3adf75c5ad9ee983b8a91635353 Mon Sep 17 00:00:00 2001 From: aguspe Date: Sun, 16 Feb 2025 01:03:49 +0100 Subject: [PATCH 3/3] Fix device_pixel_ratio --- rb/lib/selenium/webdriver/bidi/browsing_context.rb | 2 +- .../selenium/webdriver/bidi/browsing_context_spec.rb | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/rb/lib/selenium/webdriver/bidi/browsing_context.rb b/rb/lib/selenium/webdriver/bidi/browsing_context.rb index 250109d800a93..55c08e2f1e7e3 100644 --- a/rb/lib/selenium/webdriver/bidi/browsing_context.rb +++ b/rb/lib/selenium/webdriver/bidi/browsing_context.rb @@ -97,7 +97,7 @@ def create(type: nil, context_id: nil) def set_viewport(context_id: nil, width: nil, height: nil, device_pixel_ratio: nil) context_id ||= @bridge.window_handle - params = {context: context_id, viewport: {width:, height:}, device_pixel_ratio: device_pixel_ratio.to_f} + params = {context: context_id, viewport: {width:, height:}, device_pixel_ratio:} @bidi.send_cmd('browsingContext.setViewport', **params) end end 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 5a5c1cd213574..daa74fbc0ef75 100644 --- a/rb/spec/integration/selenium/webdriver/bidi/browsing_context_spec.rb +++ b/rb/spec/integration/selenium/webdriver/bidi/browsing_context_spec.rb @@ -77,9 +77,9 @@ class BiDi it 'sets the viewport' do reset_driver!(web_socket_url: true) do |driver| browsing_context = described_class.new(driver) - browsing_context.set_viewport(width: 800, height: 600, device_pixel_ratio: 2) + browsing_context.set_viewport(width: 800, height: 600, device_pixel_ratio: 2.0) expect(driver.execute_script('return [window.innerWidth, window.innerHeight]')).to eq([800, 600]) - expect(driver.execute_script('return window.devicePixelRatio')).to eq(2) + expect(driver.execute_script('return window.devicePixelRatio')).to eq(2.0) end end end