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..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,47 +81,57 @@ 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 'with user prompts' 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 user 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 = Queue.new + bridge.bidi.session.subscribe('browsingContext.userPromptOpened') + bridge.bidi.add_callback('browsingContext.userPromptOpened') { prompt_opened.push(true) } + driver.find_element(id: 'alert').click + wait.until { !prompt_opened.empty? } + browsing_context.handle_user_prompt(window, accept: true) + wait_for_no_alert - 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 user prompts with text' do + browsing_context = described_class.new(bridge) + driver.navigate.to url_for('alerts.html') + window = driver.window_handle + prompt_opened = Queue.new + bridge.bidi.session.subscribe('browsingContext.userPromptOpened') + bridge.bidi.add_callback('browsingContext.userPromptOpened') { prompt_opened.push(true) } + driver.find_element(id: 'prompt').click + 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 - browsing_context.handle_user_prompt(window, accept: false) - wait_for_no_alert + it 'rejects user prompts' do + browsing_context = described_class.new(bridge) + driver.navigate.to url_for('alerts.html') + window = driver.window_handle + prompt_opened = Queue.new + bridge.bidi.session.subscribe('browsingContext.userPromptOpened') + bridge.bidi.add_callback('browsingContext.userPromptOpened') { prompt_opened.push(true) } + driver.find_element(id: 'alert').click + wait.until { !prompt_opened.empty? } - expect(driver.title).to eq('Testing Alerts') + browsing_context.handle_user_prompt(window, accept: false) + wait_for_no_alert + + expect(driver.title).to eq('Testing Alerts') + end end it 'activates a browser context' do