Skip to content

Commit 23219b9

Browse files
titusfortnersandeepsuryaprasad
authored andcommitted
[rb] add bidi tests to rbe
1 parent d9b301a commit 23219b9

File tree

3 files changed

+117
-151
lines changed

3 files changed

+117
-151
lines changed

rb/spec/BUILD.bazel

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,8 @@ rb_library(
3737
"//rb/spec/integration/selenium/webdriver:zipper",
3838
"//rb/spec/integration/selenium/webdriver/bidi:browsing_context",
3939
"//rb/spec/integration/selenium/webdriver/bidi:log_inspector",
40+
"//rb/spec/integration/selenium/webdriver/bidi:network",
41+
"//rb/spec/integration/selenium/webdriver/bidi:script",
4042
"//rb/spec/integration/selenium/webdriver/chrome:driver",
4143
"//rb/spec/integration/selenium/webdriver/chrome:options",
4244
"//rb/spec/integration/selenium/webdriver/chrome:profile",

rb/spec/integration/selenium/webdriver/bidi/browsing_context_spec.rb

Lines changed: 21 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -75,56 +75,46 @@ class BiDi
7575
end
7676

7777
it 'sets the viewport' do
78-
reset_driver!(web_socket_url: true) do |driver|
79-
browsing_context = described_class.new(driver)
80-
browsing_context.set_viewport(width: 800, height: 600, device_pixel_ratio: 2.0)
81-
expect(driver.execute_script('return [window.innerWidth, window.innerHeight]')).to eq([800, 600])
82-
expect(driver.execute_script('return window.devicePixelRatio')).to eq(2.0)
83-
end
78+
browsing_context = described_class.new(driver)
79+
browsing_context.set_viewport(width: 800, height: 600, device_pixel_ratio: 2.0)
80+
expect(driver.execute_script('return [window.innerWidth, window.innerHeight]')).to eq([800, 600])
81+
expect(driver.execute_script('return window.devicePixelRatio')).to eq(2.0)
8482
end
8583

8684
it 'accepts users prompts without text' do
87-
reset_driver!(web_socket_url: true) do |driver|
88-
browsing_context = described_class.new(driver)
89-
window = browsing_context.create
85+
browsing_context = described_class.new(driver)
86+
window = browsing_context.create
9087

91-
browsing_context.handle_user_prompt(window, accept: true)
88+
browsing_context.handle_user_prompt(window, accept: true)
9289

93-
expect(driver.page_source).to include('hello')
94-
end
90+
expect(driver.page_source).to include('hello')
9591
end
9692

9793
it 'accepts users prompts with text' do
98-
reset_driver!(web_socket_url: true) do |driver|
99-
browsing_context = described_class.new(driver)
100-
window = browsing_context.create
94+
browsing_context = described_class.new(driver)
95+
window = browsing_context.create
10196

102-
browsing_context.handle_user_prompt(window, accept: true, text: 'Hello, world!')
97+
browsing_context.handle_user_prompt(window, accept: true, text: 'Hello, world!')
10398

104-
expect(driver.page_source).to include('hello')
105-
end
99+
expect(driver.page_source).to include('hello')
106100
end
107101

108102
it 'rejects users prompts' do
109-
reset_driver!(web_socket_url: true) do |driver|
110-
browsing_context = described_class.new(driver)
111-
window = browsing_context.create
103+
browsing_context = described_class.new(driver)
104+
window = browsing_context.create
112105

113-
browsing_context.handle_user_prompt(window, accept: false)
106+
browsing_context.handle_user_prompt(window, accept: false)
114107

115-
expect(driver.page_source).to include('goodbye')
116-
end
108+
expect(driver.page_source).to include('goodbye')
117109
end
118110

119111
it 'activates a browser context' do
120-
reset_driver!(web_socket_url: true) do |driver|
121-
browsing_context = described_class.new(driver)
122-
browsing_context.create
112+
browsing_context = described_class.new(driver)
113+
browsing_context.create
123114

124-
expect(driver.execute_script('return document.hasFocus();')).to be_falsey
125-
browsing_context.activate
126-
expect(driver.execute_script('return document.hasFocus();')).to be_truthy
127-
end
115+
expect(driver.execute_script('return document.hasFocus();')).to be_falsey
116+
browsing_context.activate
117+
expect(driver.execute_script('return document.hasFocus();')).to be_truthy
128118
end
129119
end
130120
end # BiDi

rb/spec/integration/selenium/webdriver/bidi/network_spec.rb

Lines changed: 94 additions & 120 deletions
Original file line numberDiff line numberDiff line change
@@ -25,174 +25,148 @@ class BiDi
2525
describe Network, exclusive: {bidi: true, reason: 'only executed when bidi is enabled'},
2626
only: {browser: %i[chrome edge firefox]} do
2727
it 'adds an intercept' do
28-
reset_driver!(web_socket_url: true) do |driver|
29-
network = described_class.new(driver.bidi)
30-
intercept = network.add_intercept(phases: [described_class::PHASES[:before_request]])
31-
expect(intercept).not_to be_nil
32-
end
28+
network = described_class.new(driver.bidi)
29+
intercept = network.add_intercept(phases: [described_class::PHASES[:before_request]])
30+
expect(intercept).not_to be_nil
3331
end
3432

3533
it 'adds an intercept with a default pattern type' do
36-
reset_driver!(web_socket_url: true) do |driver|
37-
network = described_class.new(driver.bidi)
38-
pattern = 'http://localhost:4444/formPage.html'
39-
intercept = network.add_intercept(phases: [described_class::PHASES[:before_request]], url_patterns: pattern)
40-
expect(intercept).not_to be_nil
41-
end
34+
network = described_class.new(driver.bidi)
35+
pattern = 'http://localhost:4444/formPage.html'
36+
intercept = network.add_intercept(phases: [described_class::PHASES[:before_request]], url_patterns: pattern)
37+
expect(intercept).not_to be_nil
4238
end
4339

4440
it 'adds an intercept with a url pattern' do
45-
reset_driver!(web_socket_url: true) do |driver|
46-
network = described_class.new(driver.bidi)
47-
pattern = 'http://localhost:4444/formPage.html'
48-
intercept = network.add_intercept(phases: [described_class::PHASES[:before_request]],
49-
url_patterns: pattern,
50-
pattern_type: :url)
51-
expect(intercept).not_to be_nil
52-
end
41+
network = described_class.new(driver.bidi)
42+
pattern = 'http://localhost:4444/formPage.html'
43+
intercept = network.add_intercept(phases: [described_class::PHASES[:before_request]],
44+
url_patterns: pattern,
45+
pattern_type: :url)
46+
expect(intercept).not_to be_nil
5347
end
5448

5549
it 'removes an intercept' do
56-
reset_driver!(web_socket_url: true) do |driver|
57-
network = described_class.new(driver.bidi)
58-
intercept = network.add_intercept(phases: [described_class::PHASES[:before_request]])
59-
expect(network.remove_intercept(intercept['intercept'])).to be_empty
60-
end
50+
network = described_class.new(driver.bidi)
51+
intercept = network.add_intercept(phases: [described_class::PHASES[:before_request]])
52+
expect(network.remove_intercept(intercept['intercept'])).to be_empty
6153
end
6254

6355
it 'continues with auth' do
6456
username = SpecSupport::RackServer::TestApp::BASIC_AUTH_CREDENTIALS.first
6557
password = SpecSupport::RackServer::TestApp::BASIC_AUTH_CREDENTIALS.last
66-
reset_driver!(web_socket_url: true) do |driver|
67-
network = described_class.new(driver.bidi)
68-
phases = [Selenium::WebDriver::BiDi::Network::PHASES[:auth_required]]
69-
network.add_intercept(phases: phases)
70-
network.on(:auth_required) do |event|
71-
request_id = event['request']['request']
72-
network.continue_with_auth(request_id, username, password)
73-
end
74-
75-
driver.navigate.to url_for('basicAuth')
76-
expect(driver.find_element(tag_name: 'h1').text).to eq('authorized')
58+
network = described_class.new(driver.bidi)
59+
phases = [Selenium::WebDriver::BiDi::Network::PHASES[:auth_required]]
60+
network.add_intercept(phases: phases)
61+
network.on(:auth_required) do |event|
62+
request_id = event['request']['request']
63+
network.continue_with_auth(request_id, username, password)
7764
end
65+
66+
driver.navigate.to url_for('basicAuth')
67+
expect(driver.find_element(tag_name: 'h1').text).to eq('authorized')
7868
end
7969

8070
it 'continues without auth' do
81-
reset_driver!(web_socket_url: true) do |driver|
82-
network = described_class.new(driver.bidi)
83-
network.add_intercept(phases: [described_class::PHASES[:auth_required]])
84-
network.on(:auth_required) do |event|
85-
request_id = event['request']['request']
86-
network.continue_without_auth(request_id)
87-
end
88-
89-
expect { driver.navigate.to url_for('basicAuth') }.to raise_error(Error::WebDriverError)
71+
network = described_class.new(driver.bidi)
72+
network.add_intercept(phases: [described_class::PHASES[:auth_required]])
73+
network.on(:auth_required) do |event|
74+
request_id = event['request']['request']
75+
network.continue_without_auth(request_id)
9076
end
77+
78+
expect { driver.navigate.to url_for('basicAuth') }.to raise_error(Error::WebDriverError)
9179
end
9280

9381
it 'cancels auth' do
94-
reset_driver!(web_socket_url: true) do |driver|
95-
network = described_class.new(driver.bidi)
96-
network.add_intercept(phases: [described_class::PHASES[:auth_required]])
97-
network.on(:auth_required) do |event|
98-
request_id = event['request']['request']
99-
network.cancel_auth(request_id)
100-
end
101-
102-
driver.navigate.to url_for('basicAuth')
103-
expect(driver.find_element(tag_name: 'pre').text).to eq('Login please')
82+
network = described_class.new(driver.bidi)
83+
network.add_intercept(phases: [described_class::PHASES[:auth_required]])
84+
network.on(:auth_required) do |event|
85+
request_id = event['request']['request']
86+
network.cancel_auth(request_id)
10487
end
88+
89+
driver.navigate.to url_for('basicAuth')
90+
expect(driver.find_element(tag_name: 'pre').text).to eq('Login please')
10591
end
10692

10793
it 'continues request' do
108-
reset_driver!(web_socket_url: true) do |driver|
109-
network = described_class.new(driver.bidi)
110-
network.add_intercept(phases: [described_class::PHASES[:before_request]])
111-
network.on(:before_request) do |event|
112-
request_id = event['request']['request']
113-
network.continue_request(id: request_id)
114-
end
115-
116-
driver.navigate.to url_for('formPage.html')
117-
expect(driver.find_element(name: 'login')).to be_displayed
94+
network = described_class.new(driver.bidi)
95+
network.add_intercept(phases: [described_class::PHASES[:before_request]])
96+
network.on(:before_request) do |event|
97+
request_id = event['request']['request']
98+
network.continue_request(id: request_id)
11899
end
100+
101+
driver.navigate.to url_for('formPage.html')
102+
expect(driver.find_element(name: 'login')).to be_displayed
119103
end
120104

121105
it 'fails request' do
122-
reset_driver!(web_socket_url: true) do |driver|
123-
network = described_class.new(driver.bidi)
124-
network.add_intercept(phases: [described_class::PHASES[:before_request]])
125-
network.on(:before_request) do |event|
126-
request_id = event['request']['request']
127-
network.fail_request(request_id)
128-
end
129-
130-
expect { driver.navigate.to url_for('formPage.html') }.to raise_error(Error::WebDriverError)
106+
network = described_class.new(driver.bidi)
107+
network.add_intercept(phases: [described_class::PHASES[:before_request]])
108+
network.on(:before_request) do |event|
109+
request_id = event['request']['request']
110+
network.fail_request(request_id)
131111
end
112+
113+
expect { driver.navigate.to url_for('formPage.html') }.to raise_error(Error::WebDriverError)
132114
end
133115

134116
it 'continues response' do
135-
reset_driver!(web_socket_url: true) do |driver|
136-
network = described_class.new(driver.bidi)
137-
network.add_intercept(phases: [described_class::PHASES[:response_started]])
138-
network.on(:response_started) do |event|
139-
request_id = event['request']['request']
140-
network.continue_response(id: request_id)
141-
end
142-
143-
driver.navigate.to url_for('formPage.html')
144-
expect(driver.find_element(name: 'login')).to be_displayed
117+
network = described_class.new(driver.bidi)
118+
network.add_intercept(phases: [described_class::PHASES[:response_started]])
119+
network.on(:response_started) do |event|
120+
request_id = event['request']['request']
121+
network.continue_response(id: request_id)
145122
end
123+
124+
driver.navigate.to url_for('formPage.html')
125+
expect(driver.find_element(name: 'login')).to be_displayed
146126
end
147127

148128
it 'provides response', except: {browser: :firefox,
149129
reason: 'https://github.com/w3c/webdriver-bidi/issues/747'} do
150-
reset_driver!(web_socket_url: true) do |driver|
151-
network = described_class.new(driver.bidi)
152-
network.add_intercept(phases: [described_class::PHASES[:response_started]])
153-
network.on(:response_started) do |event|
154-
request_id = event['request']['request']
155-
network.provide_response(
156-
id: request_id,
157-
status: 200,
158-
headers: [
159-
{
160-
name: 'foo',
161-
value: {
162-
type: 'string',
163-
value: 'bar'
164-
}
130+
network = described_class.new(driver.bidi)
131+
network.add_intercept(phases: [described_class::PHASES[:response_started]])
132+
network.on(:response_started) do |event|
133+
request_id = event['request']['request']
134+
network.provide_response(
135+
id: request_id,
136+
status: 200,
137+
headers: [
138+
{
139+
name: 'foo',
140+
value: {
141+
type: 'string',
142+
value: 'bar'
165143
}
166-
],
167-
body: {
168-
type: 'string',
169-
value: '<html><head><title>Hello World!</title></head><body/></html>'
170144
}
171-
)
172-
end
173-
174-
driver.navigate.to url_for('formPage.html')
175-
source = driver.page_source
176-
expect(source).not_to include('There should be a form here:')
177-
expect(source).to include('Hello World!')
145+
],
146+
body: {
147+
type: 'string',
148+
value: '<html><head><title>Hello World!</title></head><body/></html>'
149+
}
150+
)
178151
end
152+
153+
driver.navigate.to url_for('formPage.html')
154+
source = driver.page_source
155+
expect(source).not_to include('There should be a form here:')
156+
expect(source).to include('Hello World!')
179157
end
180158

181159
it 'sets the cache to bypass' do
182-
reset_driver!(web_socket_url: true) do |driver|
183-
browsing_context = BrowsingContext.new(driver).create
184-
network = described_class.new(driver.bidi)
185-
network.set_cache_behavior('bypass', browsing_context)
186-
expect(network.set_cache_behavior('bypass', browsing_context)).to be_a(Hash)
187-
end
160+
browsing_context = BrowsingContext.new(driver).create
161+
network = described_class.new(driver.bidi)
162+
network.set_cache_behavior('bypass', browsing_context)
163+
expect(network.set_cache_behavior('bypass', browsing_context)).to be_a(Hash)
188164
end
189165

190166
it 'sets the cache to default' do
191-
reset_driver!(web_socket_url: true) do |driver|
192-
browsing_context = BrowsingContext.new(driver).create
193-
network = described_class.new(driver.bidi)
194-
expect(network.set_cache_behavior('default', browsing_context)).to be_a(Hash)
195-
end
167+
browsing_context = BrowsingContext.new(driver).create
168+
network = described_class.new(driver.bidi)
169+
expect(network.set_cache_behavior('default', browsing_context)).to be_a(Hash)
196170
end
197171
end
198172
end

0 commit comments

Comments
 (0)