From a0811f20067e855dab33621722bae5cff453ee03 Mon Sep 17 00:00:00 2001 From: Augustin Gottlieb <33221555+aguspe@users.noreply.github.com> Date: Tue, 10 Mar 2026 23:05:49 +0100 Subject: [PATCH 1/3] Fix flaky tests --- .../webdriver/bidi/browsing_context_spec.rb | 78 ++++++++++--------- 1 file changed, 43 insertions(+), 35 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 bcad86441d1bc..f950e3e5cfcbd 100644 --- a/rb/spec/integration/selenium/webdriver/bidi/browsing_context_spec.rb +++ b/rb/spec/integration/selenium/webdriver/bidi/browsing_context_spec.rb @@ -81,47 +81,55 @@ class BiDi expect(driver.execute_script('return window.devicePixelRatio')).to eq(2.0) end - it 'accepts users prompts without text', - except: {browser: %i[edge chrome], - reason: 'https://github.com/GoogleChromeLabs/chromium-bidi/issues/3281'} do - browsing_context = described_class.new(bridge) + context 'user prompts', except: {browser: %i[edge chrome], + reason: 'https://github.com/GoogleChromeLabs/chromium-bidi/issues/3281'} do + before do + reset_driver!(unhandled_prompt_behavior: :ignore) + end - driver.navigate.to url_for('alerts.html') - driver.find_element(id: 'alert').click - wait_for_alert - window = driver.window_handles.first - browsing_context.handle_user_prompt(window, accept: true) - wait_for_no_alert + it 'accepts users prompts without text' do + browsing_context = described_class.new(bridge) - expect(driver.title).to eq('Testing Alerts') - end + driver.navigate.to url_for('alerts.html') + window = driver.window_handle + prompt_opened = false + bridge.bidi.session.subscribe('browsingContext.userPromptOpened') + bridge.bidi.add_callback('browsingContext.userPromptOpened') { prompt_opened = true } + driver.find_element(id: 'alert').click + wait.until { prompt_opened } + browsing_context.handle_user_prompt(window, accept: true) - it 'accepts users prompts with text', - except: {browser: %i[edge chrome], - reason: 'https://github.com/GoogleChromeLabs/chromium-bidi/issues/3281'} do - browsing_context = described_class.new(bridge) - driver.navigate.to url_for('alerts.html') - driver.find_element(id: 'prompt').click - wait_for_alert - window = driver.window_handles.first - browsing_context.handle_user_prompt(window, accept: true, text: 'Hello, world!') - wait_for_no_alert - - expect(driver.title).to eq('Testing Alerts') - end + expect(driver.title).to eq('Testing Alerts') + end - it 'rejects users prompts', except: {browser: %i[edge chrome], - reason: 'https://github.com/GoogleChromeLabs/chromium-bidi/issues/3281'} do - browsing_context = described_class.new(bridge) - driver.navigate.to url_for('alerts.html') - driver.find_element(id: 'alert').click - wait_for_alert - window = driver.window_handles.first + it 'accepts users prompts with text' do + browsing_context = described_class.new(bridge) + driver.navigate.to url_for('alerts.html') + window = driver.window_handle + prompt_opened = false + bridge.bidi.session.subscribe('browsingContext.userPromptOpened') + bridge.bidi.add_callback('browsingContext.userPromptOpened') { prompt_opened = true } + driver.find_element(id: 'prompt').click + wait.until { prompt_opened } + browsing_context.handle_user_prompt(window, accept: true, text: 'Hello, world!') + + expect(driver.title).to eq('Testing Alerts') + end - browsing_context.handle_user_prompt(window, accept: false) - wait_for_no_alert + it 'rejects users prompts' do + browsing_context = described_class.new(bridge) + driver.navigate.to url_for('alerts.html') + window = driver.window_handle + prompt_opened = false + bridge.bidi.session.subscribe('browsingContext.userPromptOpened') + bridge.bidi.add_callback('browsingContext.userPromptOpened') { prompt_opened = true } + driver.find_element(id: 'alert').click + wait.until { prompt_opened } - expect(driver.title).to eq('Testing Alerts') + browsing_context.handle_user_prompt(window, accept: false) + + expect(driver.title).to eq('Testing Alerts') + end end it 'activates a browser context' do From 0d6203c5d865d9ccb126694bb0510666748c6b09 Mon Sep 17 00:00:00 2001 From: Augustin Gottlieb <33221555+aguspe@users.noreply.github.com> Date: Wed, 11 Mar 2026 17:52:40 +0100 Subject: [PATCH 2/3] Address review comments --- .../webdriver/bidi/browsing_context_spec.rb | 27 ++++++++++--------- 1 file changed, 15 insertions(+), 12 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 f950e3e5cfcbd..4e7fcedc84311 100644 --- a/rb/spec/integration/selenium/webdriver/bidi/browsing_context_spec.rb +++ b/rb/spec/integration/selenium/webdriver/bidi/browsing_context_spec.rb @@ -87,46 +87,49 @@ class BiDi reset_driver!(unhandled_prompt_behavior: :ignore) end - it 'accepts users prompts without text' do + it 'accepts user prompts without text' do browsing_context = described_class.new(bridge) driver.navigate.to url_for('alerts.html') window = driver.window_handle - prompt_opened = false + prompt_opened = Queue.new bridge.bidi.session.subscribe('browsingContext.userPromptOpened') - bridge.bidi.add_callback('browsingContext.userPromptOpened') { prompt_opened = true } + bridge.bidi.add_callback('browsingContext.userPromptOpened') { prompt_opened.push(true) } driver.find_element(id: 'alert').click - wait.until { prompt_opened } + wait.until { !prompt_opened.empty? } browsing_context.handle_user_prompt(window, accept: true) + wait_for_no_alert expect(driver.title).to eq('Testing Alerts') end - it 'accepts users prompts with text' do + it 'accepts user prompts with text' do browsing_context = described_class.new(bridge) driver.navigate.to url_for('alerts.html') window = driver.window_handle - prompt_opened = false + prompt_opened = Queue.new bridge.bidi.session.subscribe('browsingContext.userPromptOpened') - bridge.bidi.add_callback('browsingContext.userPromptOpened') { prompt_opened = true } + bridge.bidi.add_callback('browsingContext.userPromptOpened') { prompt_opened.push(true) } driver.find_element(id: 'prompt').click - wait.until { prompt_opened } + wait.until { !prompt_opened.empty? } browsing_context.handle_user_prompt(window, accept: true, text: 'Hello, world!') + wait_for_no_alert expect(driver.title).to eq('Testing Alerts') end - it 'rejects users prompts' do + it 'rejects user prompts' do browsing_context = described_class.new(bridge) driver.navigate.to url_for('alerts.html') window = driver.window_handle - prompt_opened = false + prompt_opened = Queue.new bridge.bidi.session.subscribe('browsingContext.userPromptOpened') - bridge.bidi.add_callback('browsingContext.userPromptOpened') { prompt_opened = true } + bridge.bidi.add_callback('browsingContext.userPromptOpened') { prompt_opened.push(true) } driver.find_element(id: 'alert').click - wait.until { prompt_opened } + wait.until { !prompt_opened.empty? } browsing_context.handle_user_prompt(window, accept: false) + wait_for_no_alert expect(driver.title).to eq('Testing Alerts') end From 9e60a1c67c25af01fbce0da911b0545d6f417672 Mon Sep 17 00:00:00 2001 From: Augustin Gottlieb <33221555+aguspe@users.noreply.github.com> Date: Wed, 11 Mar 2026 19:10:49 +0100 Subject: [PATCH 3/3] fix linter errors --- .../selenium/webdriver/bidi/browsing_context_spec.rb | 3 +-- 1 file changed, 1 insertion(+), 2 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 4e7fcedc84311..6810c621f5c1e 100644 --- a/rb/spec/integration/selenium/webdriver/bidi/browsing_context_spec.rb +++ b/rb/spec/integration/selenium/webdriver/bidi/browsing_context_spec.rb @@ -81,8 +81,7 @@ class BiDi expect(driver.execute_script('return window.devicePixelRatio')).to eq(2.0) end - context 'user prompts', except: {browser: %i[edge chrome], - reason: 'https://github.com/GoogleChromeLabs/chromium-bidi/issues/3281'} do + context 'with user prompts' do before do reset_driver!(unhandled_prompt_behavior: :ignore) end