Skip to content

Commit 0f8c153

Browse files
committed
[rb] improve logic for tests that require specific options
1 parent af2ab3f commit 0f8c153

File tree

11 files changed

+102
-155
lines changed

11 files changed

+102
-155
lines changed

rb/spec/integration/selenium/webdriver/bidi_spec.rb

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -21,11 +21,13 @@
2121

2222
module Selenium
2323
module WebDriver
24-
describe BiDi, exclusive: {browser: %i[chrome_beta firefox]} do
24+
describe BiDi, exclusive: {browser: %i[chrome firefox]} do
2525
it 'gets session status' do
26-
status = driver.bidi.session.status
27-
expect(status).to respond_to(:ready)
28-
expect(status.message).not_to be_empty
26+
reset_driver!(web_socket_url: true) do |driver|
27+
status = driver.bidi.session.status
28+
expect(status).to respond_to(:ready)
29+
expect(status.message).not_to be_empty
30+
end
2931
end
3032
end
3133
end

rb/spec/integration/selenium/webdriver/chrome/driver_spec.rb

Lines changed: 24 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -54,52 +54,48 @@ module Chrome
5454
end
5555

5656
describe 'PrintsPage' do
57+
before(:all) { reset_driver!(args: ['--headless']) }
58+
59+
after(:all) { reset_driver! }
60+
5761
let(:magic_number) { 'JVBER' }
58-
let(:options) { Chrome::Options.new(args: ['--headless']) }
5962

6063
it 'should return base64 for print command' do
61-
create_driver!(options: options) do |driver|
62-
driver.navigate.to url_for('printPage.html')
63-
expect(driver.print_page).to include(magic_number)
64-
end
64+
driver.navigate.to url_for('printPage.html')
65+
expect(driver.print_page).to include(magic_number)
6566
end
6667

6768
it 'should print with valid params' do
68-
create_driver!(options: options) do |driver|
69-
driver.navigate.to url_for('printPage.html')
70-
expect(driver.print_page(orientation: 'landscape',
71-
page_ranges: ['1-2'],
72-
page: {width: 30})).to include(magic_number)
73-
end
69+
driver.navigate.to url_for('printPage.html')
70+
expect(driver.print_page(orientation: 'landscape',
71+
page_ranges: ['1-2'],
72+
page: {width: 30})).to include(magic_number)
7473
end
7574

7675
it 'should save pdf' do
77-
create_driver!(options: options) do |driver|
78-
driver.navigate.to url_for('printPage.html')
76+
driver.navigate.to url_for('printPage.html')
7977

80-
path = "#{Dir.tmpdir}/test#{SecureRandom.urlsafe_base64}.pdf"
78+
path = "#{Dir.tmpdir}/test#{SecureRandom.urlsafe_base64}.pdf"
8179

82-
driver.save_print_page path
80+
driver.save_print_page path
8381

84-
expect(File.exist?(path)).to be true
85-
expect(File.size(path)).to be_positive
86-
ensure
87-
FileUtils.rm_rf(path)
88-
end
82+
expect(File.exist?(path)).to be true
83+
expect(File.size(path)).to be_positive
84+
ensure
85+
FileUtils.rm_rf(path)
8986
end
9087
end
9188

9289
describe '#logs' do
93-
before do
94-
quit_driver
95-
options = Options.new(logging_prefs: {browser: 'ALL',
96-
driver: 'ALL',
97-
performance: 'ALL'})
98-
create_driver!(options: options)
99-
driver.navigate.to url_for('errors.html')
90+
before(:all) do
91+
reset_driver!(logging_prefs: {browser: 'ALL',
92+
driver: 'ALL',
93+
performance: 'ALL'})
10094
end
10195

102-
after(:all) { quit_driver }
96+
before { driver.navigate.to url_for('errors.html') }
97+
98+
after(:all) { reset_driver! }
10399

104100
it 'can fetch available log types' do
105101
expect(driver.logs.available_types).to include(:performance, :browser, :driver)

rb/spec/integration/selenium/webdriver/chrome/options_spec.rb

Lines changed: 3 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -23,45 +23,26 @@ module Selenium
2323
module WebDriver
2424
module Chrome
2525
describe Options, exclusive: {browser: :chrome} do
26-
subject(:options) { Options.new }
27-
28-
before { quit_driver }
29-
3026
it 'passes emulated device correctly' do
31-
options.add_emulation(device_name: 'Nexus 5')
32-
33-
create_driver!(options: options) do |driver|
27+
reset_driver!(emulation: {device_name: 'Nexus 5'}) do |driver|
3428
ua = driver.execute_script 'return window.navigator.userAgent'
3529
expect(ua).to include('Nexus 5')
3630
end
3731
end
3832

3933
it 'passes emulated user agent correctly' do
40-
options.add_emulation(user_agent: 'foo;bar')
41-
42-
create_driver!(options: options) do |driver|
34+
reset_driver!(emulation: {user_agent: 'foo;bar'}) do |driver|
4335
ua = driver.execute_script 'return window.navigator.userAgent'
4436
expect(ua).to eq('foo;bar')
4537
end
4638
end
4739

4840
it 'passes args correctly' do
49-
options.add_argument('--user-agent=foo;bar')
50-
51-
create_driver!(options: options) do |driver|
41+
reset_driver!(args: ['--user-agent=foo;bar']) do |driver|
5242
ua = driver.execute_script 'return window.navigator.userAgent'
5343
expect(ua).to eq('foo;bar')
5444
end
5545
end
56-
57-
it 'should be able to run in headless mode with #headless!' do
58-
options.headless!
59-
60-
create_driver!(options: options) do |driver|
61-
ua = driver.execute_script 'return window.navigator.userAgent'
62-
expect(ua).to match(/HeadlessChrome/)
63-
end
64-
end
6546
end
6647
end # Chrome
6748
end # WebDriver

rb/spec/integration/selenium/webdriver/edge/driver_spec.rb

Lines changed: 7 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -66,16 +66,15 @@ module Edge
6666
end
6767

6868
describe '#logs' do
69-
before do
70-
quit_driver
71-
options = Options.new(logging_prefs: {browser: 'ALL',
72-
driver: 'ALL',
73-
performance: 'ALL'})
74-
create_driver!(options: options)
75-
driver.navigate.to url_for('errors.html')
69+
before(:all) do
70+
reset_driver!(logging_prefs: {browser: 'ALL',
71+
driver: 'ALL',
72+
performance: 'ALL'})
7673
end
7774

78-
after(:all) { quit_driver }
75+
before { driver.navigate.to url_for('errors.html') }
76+
77+
after(:all) { reset_driver! }
7978

8079
it 'can fetch available log types' do
8180
expect(driver.logs.available_types).to include(:performance, :browser, :driver)

rb/spec/integration/selenium/webdriver/edge/options_spec.rb

Lines changed: 3 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -23,43 +23,26 @@ module Selenium
2323
module WebDriver
2424
module Edge
2525
describe Options, exclusive: {browser: :edge} do
26-
subject(:options) { Options.new }
27-
2826
it 'passes emulated device correctly' do
29-
options.add_emulation(device_name: 'Nexus 5')
30-
31-
create_driver!(options: options) do |driver|
27+
reset_driver!(emulation: {device_name: 'Nexus 5'}) do |driver|
3228
ua = driver.execute_script 'return window.navigator.userAgent'
3329
expect(ua).to include('Nexus 5')
3430
end
3531
end
3632

3733
it 'passes emulated user agent correctly' do
38-
options.add_emulation(user_agent: 'foo;bar')
39-
40-
create_driver!(options: options) do |driver|
34+
reset_driver!(emulation: {user_agent: 'foo;bar'}) do |driver|
4135
ua = driver.execute_script 'return window.navigator.userAgent'
4236
expect(ua).to eq('foo;bar')
4337
end
4438
end
4539

4640
it 'passes args correctly' do
47-
options.add_argument('--user-agent=foo;bar')
48-
49-
create_driver!(options: options) do |driver|
41+
reset_driver!(args: ['--user-agent=foo;bar']) do |driver|
5042
ua = driver.execute_script 'return window.navigator.userAgent'
5143
expect(ua).to eq('foo;bar')
5244
end
5345
end
54-
55-
it 'should be able to run in headless mode with #headless!' do
56-
options.headless!
57-
58-
create_driver!(options: options) do |driver|
59-
ua = driver.execute_script 'return window.navigator.userAgent'
60-
expect(ua).to match(/HeadlessChrome/)
61-
end
62-
end
6346
end
6447
end # Edge
6548
end # WebDriver

rb/spec/integration/selenium/webdriver/element_spec.rb

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@ module WebDriver
2525
it 'should click' do
2626
driver.navigate.to url_for('formPage.html')
2727
expect { driver.find_element(id: 'imageButton').click }.not_to raise_error
28-
reset_driver!(1) if %i[safari safari_preview].include? GlobalTestEnv.browser
28+
reset_driver!(time: 1) if %i[safari safari_preview].include? GlobalTestEnv.browser
2929
end
3030

3131
# Safari returns "click intercepted" error instead of "element click intercepted"

rb/spec/integration/selenium/webdriver/firefox/driver_spec.rb

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -140,8 +140,7 @@ module Firefox
140140
end
141141

142142
it 'can get and set context' do
143-
options = Options.new(prefs: {'browser.download.dir': 'foo/bar'})
144-
create_driver!(options: options) do |driver|
143+
reset_driver!(prefs: {'browser.download.dir': 'foo/bar'}) do |driver|
145144
expect(driver.context).to eq 'content'
146145

147146
driver.context = 'chrome'

rb/spec/integration/selenium/webdriver/firefox/profile_spec.rb

Lines changed: 3 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -25,30 +25,21 @@ module Firefox
2525
describe Profile, exclusive: {browser: :firefox} do
2626
let(:profile) { Profile.new }
2727

28-
def read_generated_prefs(from = nil)
29-
prof = from || profile
30-
dir = prof.layout_on_disk
31-
32-
File.read(File.join(dir, 'user.js'))
33-
end
34-
3528
before do
36-
quit_driver
37-
sleep 2
3829
profile['browser.startup.homepage'] = url_for('simpleTest.html')
3930
profile['browser.startup.page'] = 1
4031
end
4132

4233
it 'should instantiate the browser with the correct profile' do
43-
create_driver!(options: Options.new(profile: profile)) do |driver|
34+
reset_driver!(profile: profile) do |driver|
4435
expect { wait(5).until { driver.find_element(id: 'oneline') } }.not_to raise_error
4536
end
4637
end
4738

4839
it 'should be able to use the same profile more than once' do
49-
create_driver!(options: Options.new(profile: profile)) do |driver1|
40+
reset_driver!(profile: profile) do |driver1|
5041
expect { wait(5).until { driver1.find_element(id: 'oneline') } }.not_to raise_error
51-
create_driver!(options: Options.new(profile: profile)) do |driver2|
42+
reset_driver!(profile: profile) do |driver2|
5243
expect { wait(5).until { driver2.find_element(id: 'oneline') } }.not_to raise_error
5344
end
5445
end

rb/spec/integration/selenium/webdriver/spec_support/helpers.rb

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -25,8 +25,8 @@ def driver
2525
GlobalTestEnv.driver_instance
2626
end
2727

28-
def reset_driver!(time = 0)
29-
GlobalTestEnv.reset_driver!(time)
28+
def reset_driver!(**opts)
29+
GlobalTestEnv.reset_driver!(**opts)
3030
end
3131

3232
def quit_driver

0 commit comments

Comments
 (0)