diff --git a/common/src/web/blank.html b/common/src/web/blank.html
index c3f376e768078..fa50d6d1f1e7b 100644
--- a/common/src/web/blank.html
+++ b/common/src/web/blank.html
@@ -1 +1,6 @@
-
blank
+blank
+
+
diff --git a/rb/spec/integration/selenium/webdriver/element_spec.rb b/rb/spec/integration/selenium/webdriver/element_spec.rb
index 06d1e04a43674..ddd1a39feede9 100644
--- a/rb/spec/integration/selenium/webdriver/element_spec.rb
+++ b/rb/spec/integration/selenium/webdriver/element_spec.rb
@@ -23,7 +23,7 @@ module Selenium
module WebDriver
describe Element, exclusive: {bidi: false, reason: 'Not yet implemented with BiDi'} do
it 'clicks' do
- driver.navigate.to url_for('formPage.html')
+ open_file 'formPage.html'
element = wait_for_element(id: 'imageButton')
expect { element.click }.not_to raise_error
reset_driver!(time: 1) if %i[safari safari_preview].include? GlobalTestEnv.browser
@@ -31,20 +31,20 @@ module WebDriver
# Safari returns "click intercepted" error instead of "element click intercepted"
it 'raises if different element receives click', except: {browser: %i[safari safari_preview]} do
- driver.navigate.to url_for('click_tests/overlapping_elements.html')
+ open_file 'click_tests/overlapping_elements.html'
element = wait_for_element(id: 'contents', timeout: 10)
expect { element.click }.to raise_error(Error::ElementClickInterceptedError)
end
# Safari returns "click intercepted" error instead of "element click intercepted"
it 'raises if element is partially covered', except: {browser: %i[safari safari_preview]} do
- driver.navigate.to url_for('click_tests/overlapping_elements.html')
+ open_file 'click_tests/overlapping_elements.html'
element = wait_for_element(id: 'other_contents')
expect { element.click }.to raise_error(Error::ElementClickInterceptedError)
end
it 'raises if element stale' do
- driver.navigate.to url_for('formPage.html')
+ open_file 'formPage.html'
button = wait_for_element(id: 'imageButton')
driver.navigate.refresh
@@ -56,7 +56,7 @@ module WebDriver
describe '#submit' do
it 'valid submit button' do
- driver.navigate.to url_for('formPage.html')
+ open_file 'formPage.html'
wait_for_element(id: 'submitButton').submit
wait_for_url('resultPage.html')
@@ -64,7 +64,7 @@ module WebDriver
end
it 'any input element in form' do
- driver.navigate.to url_for('formPage.html')
+ open_file 'formPage.html'
wait_for_element(id: 'checky').submit
wait_for_url('resultPage.html')
@@ -72,7 +72,7 @@ module WebDriver
end
it 'any element in form' do
- driver.navigate.to url_for('formPage.html')
+ open_file 'formPage.html'
wait_for_element(css: 'form > p').submit
wait_for_url('resultPage.html')
@@ -80,7 +80,7 @@ module WebDriver
end
it 'button with id submit' do
- driver.navigate.to url_for('formPage.html')
+ open_file 'formPage.html'
wait_for_element(id: 'submit').submit
wait_for_url('resultPage.html')
@@ -88,7 +88,7 @@ module WebDriver
end
it 'button with name submit' do
- driver.navigate.to url_for('formPage.html')
+ open_file 'formPage.html'
wait_for_element(name: 'submit').submit
wait_for_url('resultPage.html')
@@ -96,27 +96,27 @@ module WebDriver
end
it 'errors with button outside form' do
- driver.navigate.to url_for('formPage.html')
+ open_file 'formPage.html'
element = wait_for_element(name: 'SearchableText')
expect { element.submit }.to raise_error(Error::UnsupportedOperationError)
end
end
it 'sends empty keys' do
- driver.navigate.to url_for('formPage.html')
+ open_file 'formPage.html'
element = wait_for_element(id: 'working')
element.send_keys
expect(element.text).to be_empty
end
it 'sends string keys' do
- driver.navigate.to url_for('formPage.html')
+ open_file 'formPage.html'
wait_for_element(id: 'working')
expect { driver.find_element(id: 'working').send_keys('foo', 'bar') }.not_to raise_error
end
it 'sends key presses' do
- driver.navigate.to url_for('javascriptPage.html')
+ open_file 'javascriptPage.html'
key_reporter = wait_for_element(id: 'keyReporter')
key_reporter.send_keys('Tet', :arrow_left, 's')
@@ -125,7 +125,7 @@ module WebDriver
# https://github.com/mozilla/geckodriver/issues/245
it 'sends key presses chords', except: {browser: %i[firefox safari safari_preview]} do
- driver.navigate.to url_for('javascriptPage.html')
+ open_file 'javascriptPage.html'
key_reporter = wait_for_element(id: 'keyReporter')
key_reporter.send_keys([:shift, 'h'], 'ello')
@@ -133,7 +133,7 @@ module WebDriver
end
it 'handles file uploads' do
- driver.navigate.to url_for('formPage.html')
+ open_file 'formPage.html'
element = wait_for_element(id: 'upload')
expect(element.attribute('value')).to be_empty
@@ -146,7 +146,7 @@ module WebDriver
end
describe 'properties and attributes' do
- before { driver.navigate.to url_for('formPage.html') }
+ before { open_file 'formPage.html' }
context 'when string type' do
let(:element) { wait_for_element(id: 'checky') }
@@ -308,7 +308,7 @@ module WebDriver
end
describe 'style' do
- before { driver.navigate.to url_for('clickEventPage.html') }
+ before { open_file 'clickEventPage.html' }
let(:element) { wait_for_element(id: 'result') }
let(:prop_or_attr) { 'style' }
@@ -452,13 +452,13 @@ module WebDriver
end
it 'clears' do
- driver.navigate.to url_for('formPage.html')
+ open_file 'formPage.html'
element = wait_for_element(id: 'withText')
expect { element.clear }.not_to raise_error
end
it 'gets and set selected' do
- driver.navigate.to url_for('formPage.html')
+ open_file 'formPage.html'
cheese = wait_for_element(id: 'cheese')
peas = wait_for_element(id: 'peas')
@@ -475,26 +475,26 @@ module WebDriver
end
it 'gets enabled' do
- driver.navigate.to url_for('formPage.html')
+ open_file 'formPage.html'
element = wait_for_element(id: 'notWorking')
expect(element).not_to be_enabled
end
it 'gets text' do
- driver.navigate.to url_for('xhtmlTest.html')
+ open_file 'xhtmlTest.html'
element = wait_for_element(class: 'header')
expect(element.text).to eq('XHTML Might Be The Future')
end
it 'gets displayed' do
- driver.navigate.to url_for('xhtmlTest.html')
+ open_file 'xhtmlTest.html'
element = wait_for_element(class: 'header')
expect(element).to be_displayed
end
describe 'size and location' do
it 'gets current location' do
- driver.navigate.to url_for('xhtmlTest.html')
+ open_file 'xhtmlTest.html'
loc = wait_for_element(class: 'header').location
expect(loc.x).to be >= 1
@@ -502,7 +502,7 @@ module WebDriver
end
it 'gets location once scrolled into view' do
- driver.navigate.to url_for('javascriptPage.html')
+ open_file 'javascriptPage.html'
loc = wait_for_element(id: 'keyUp').location_once_scrolled_into_view
expect(loc.x).to be >= 1
@@ -510,7 +510,7 @@ module WebDriver
end
it 'gets size' do
- driver.navigate.to url_for('xhtmlTest.html')
+ open_file 'xhtmlTest.html'
size = wait_for_element(class: 'header').size
expect(size.width).to be_positive
@@ -518,7 +518,7 @@ module WebDriver
end
it 'gets rect' do
- driver.navigate.to url_for('xhtmlTest.html')
+ open_file 'xhtmlTest.html'
rect = wait_for_element(class: 'header').rect
expect(rect.x).to be_positive
@@ -530,7 +530,7 @@ module WebDriver
# IE - https://github.com/SeleniumHQ/selenium/pull/4043
it 'drags and drop', except: {browser: :ie} do
- driver.navigate.to url_for('dragAndDropTest.html')
+ open_file 'dragAndDropTest.html'
img1 = wait_for_element(id: 'test1')
img2 = wait_for_element(id: 'test2')
@@ -543,7 +543,7 @@ module WebDriver
end
it 'gets css property' do
- driver.navigate.to url_for('javascriptPage.html')
+ open_file 'javascriptPage.html'
element = wait_for_element(id: 'green-parent')
style1 = element.css_value('background-color')
@@ -554,7 +554,7 @@ module WebDriver
end
it 'knows when two elements are equal' do
- driver.navigate.to url_for('simpleTest.html')
+ open_file 'simpleTest.html'
body = wait_for_element(tag_name: 'body')
xbody = wait_for_element(xpath: '//body')
@@ -567,7 +567,7 @@ module WebDriver
end
it 'knows when element arrays are equal' do
- driver.navigate.to url_for('simpleTest.html')
+ open_file 'simpleTest.html'
tags = driver.find_elements(tag_name: 'div')
jstags = driver.execute_script('return document.getElementsByTagName("div")')
@@ -576,7 +576,7 @@ module WebDriver
end
it 'knows when two elements are not equal' do
- driver.navigate.to url_for('simpleTest.html')
+ open_file 'simpleTest.html'
elements = driver.find_elements(tag_name: 'p')
p1 = elements.fetch(0)
@@ -587,7 +587,7 @@ module WebDriver
end
it 'returns the same #hash for equal elements when found by Driver#find_element' do
- driver.navigate.to url_for('simpleTest.html')
+ open_file 'simpleTest.html'
body = driver.find_element(tag_name: 'body')
xbody = driver.find_element(xpath: '//body')
@@ -596,7 +596,7 @@ module WebDriver
end
it 'returns the same #hash for equal elements when found by Driver#find_elements' do
- driver.navigate.to url_for('simpleTest.html')
+ open_file 'simpleTest.html'
body = driver.find_elements(tag_name: 'body').fetch(0)
xbody = driver.find_elements(xpath: '//body').fetch(0)
diff --git a/rb/spec/integration/selenium/webdriver/spec_support/helpers.rb b/rb/spec/integration/selenium/webdriver/spec_support/helpers.rb
index a3a7f0ac11160..0508ad3c5a4cc 100644
--- a/rb/spec/integration/selenium/webdriver/spec_support/helpers.rb
+++ b/rb/spec/integration/selenium/webdriver/spec_support/helpers.rb
@@ -93,8 +93,10 @@ def wait_for_element(locator, timeout = 25)
wait.until { driver.find_element(locator) }
end
- def wait_for_url(new_url)
- wait = Wait.new(timeout: 5)
+ def wait_for_url(new_url, timeout = 15)
+ wait = Wait.new(timeout: timeout, message_provider: lambda {
+ "could not wait for URL #{new_url} in #{timeout} seconds;\nactual page url: #{driver.current_url};\n"
+ })
wait.until do
driver.current_url.include?(new_url)
end
@@ -106,10 +108,17 @@ def wait_for_devtools_target(target_type:)
end
def wait_for_title(title:)
- wait = Wait.new(timeout: 5)
+ wait = Wait.new(timeout: 15)
wait.until { driver.title == title }
end
+ def open_file(file_name)
+ driver.navigate.to 'about:blank'
+ driver.navigate.to url_for('blank.html')
+ driver.navigate.to url_for(file_name)
+ wait_for_url(file_name)
+ end
+
def wait(timeout = 10)
Wait.new(timeout: timeout)
end