Skip to content

Commit 08f6234

Browse files
committed
[rb][bidi] completed events with tests
1 parent 8a56c7b commit 08f6234

File tree

2 files changed

+134
-17
lines changed

2 files changed

+134
-17
lines changed

rb/lib/selenium/webdriver/bidi/network_inspector.rb

Lines changed: 11 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -36,12 +36,20 @@ def initialize(driver, browsing_context_ids = nil)
3636

3737
@bidi = driver.bidi
3838
@bidi.session.subscribe('network.beforeRequestSent', browsing_context_ids)
39+
@bidi.session.subscribe('network.responseStarted', browsing_context_ids)
40+
@bidi.session.subscribe('network.responseCompleted', browsing_context_ids)
3941
end
4042

4143
def before_request_sent(&block)
42-
on(:before_request_sent) do |params|
43-
before_request_sent_event(params, &block)
44-
end
44+
on(:before_request_sent, &block)
45+
end
46+
47+
def response_started(&block)
48+
on(:response_started, &block)
49+
end
50+
51+
def response_completed(&block)
52+
on(:response_started, &block)
4553
end
4654

4755
private
@@ -50,10 +58,6 @@ def on(event, &block)
5058
event = EVENTS[event] if event.is_a?(Symbol)
5159
@bidi.callbacks["network.#{event}"] << block
5260
end
53-
54-
def before_request_sent_event(params)
55-
yield(params)
56-
end
5761
end # NetworkInspector
5862
end # Bidi
5963
end # WebDriver

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

Lines changed: 123 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -29,35 +29,148 @@ class BiDi
2929

3030
it 'can listen to event before request is sent' do
3131
reset_driver!(web_socket_url: true) do |driver|
32-
before_request_event = []
32+
before_request_event = nil
3333
inspector = described_class.new(driver)
34-
inspector.before_request_sent { |event| before_request_event.push(event) }
34+
inspector.before_request_sent { |event| before_request_event = event }
3535

3636
driver.navigate.to url_for(empty_page)
37-
3837
wait.until { !before_request_event.nil? }
3938

40-
expect(before_request_event[0].dig('request', 'method')).to eq 'GET'
41-
url = before_request_event[0].dig('request', 'url')
42-
expect(url).to eq driver.current_url
39+
expect(before_request_event.dig('request', 'method')).to eq 'GET'
40+
expect(before_request_event.dig('request', 'url')).to eq driver.current_url
4341
end
4442
end
4543

4644
it 'can request cookies' do
4745
reset_driver!(web_socket_url: true) do |driver|
48-
before_request_event = []
46+
before_request_event = nil
4947
inspector = described_class.new(driver)
50-
inspector.before_request_sent { |event| before_request_event.push(event) }
48+
inspector.before_request_sent { |event| before_request_event = event }
5149

5250
driver.navigate.to url_for(empty_text)
5351
driver.manage.add_cookie name: 'north',
5452
value: 'biryani'
5553
driver.navigate.refresh
5654
wait.until { !before_request_event.nil? }
5755

58-
cookies = before_request_event[0]['request']['cookies']
59-
puts "cookies = \n", cookies # prints nil
56+
expect(before_request_event.dig('request', 'method')).to eq 'GET'
57+
expect(before_request_event.dig('request', 'url')).to eq driver.current_url
58+
expect(before_request_event.dig('request', 'cookies', 0, 'name')).to eq 'north'
59+
expect(before_request_event.dig('request', 'cookies', 0, 'value')).to eq 'biryani'
60+
61+
driver.manage.add_cookie name: 'south',
62+
value: 'dosa'
63+
driver.navigate.refresh
64+
wait.until { !before_request_event.nil? }
65+
expect(before_request_event.dig('request', 'cookies', 1, 'name')).to eq 'south'
66+
expect(before_request_event.dig('request', 'cookies', 1, 'value')).to eq 'dosa'
67+
end
68+
end
69+
70+
it 'can redirect http equiv' do
71+
reset_driver!(web_socket_url: true) do |driver|
72+
before_request_event = []
73+
inspector = described_class.new(driver)
74+
inspector.before_request_sent { |event| before_request_event.push(event) }
75+
76+
driver.navigate.to url_for(redirected_http_equiv)
77+
wait.until { driver.current_url.include? 'redirected.html' }
78+
6079
expect(before_request_event[0].dig('request', 'method')).to eq 'GET'
80+
expect(before_request_event[0].dig('request', 'url')).to include 'redirected_http_equiv.html'
81+
expect(before_request_event[2].dig('request', 'method')).to eq 'GET'
82+
expect(before_request_event[2].dig('request', 'url')).to include 'redirected.html'
83+
end
84+
end
85+
86+
it 'can subscribe to response started' do
87+
reset_driver!(web_socket_url: true) do |driver|
88+
on_response_started = []
89+
inspector = described_class.new(driver)
90+
inspector.response_started { |event| on_response_started.push(event) }
91+
92+
driver.navigate.to url_for(empty_text)
93+
wait.until { !on_response_started.nil? }
94+
95+
expect(on_response_started[0].dig('request', 'method')).to eq 'GET'
96+
expect(on_response_started[0].dig('request', 'url')).to eq driver.current_url
97+
expect(on_response_started[0].dig('response', 'url')).to eq driver.current_url
98+
expect(on_response_started[0].dig('response', 'fromCache')).to be false
99+
expect(on_response_started[0].dig('response', 'mimeType')).to include 'text/plain'
100+
expect(on_response_started[0].dig('response', 'status')).to eq 200
101+
expect(on_response_started[0].dig('response', 'statusText')).to eq 'OK'
102+
end
103+
end
104+
105+
it 'test response started mime type' do
106+
reset_driver!(web_socket_url: true) do |driver|
107+
on_response_started = []
108+
inspector = described_class.new(driver)
109+
inspector.response_started { |event| on_response_started.push(event) }
110+
111+
# Checking mime type for 'html' text
112+
driver.navigate.to url_for(empty_page)
113+
wait.until { !on_response_started.nil? }
114+
115+
expect(on_response_started[0].dig('request', 'method')).to eq 'GET'
116+
expect(on_response_started[0].dig('request', 'url')).to eq driver.current_url
117+
expect(on_response_started[0].dig('response', 'url')).to eq driver.current_url
118+
expect(on_response_started[0].dig('response', 'mimeType')).to include 'text/html'
119+
120+
# Checking mime type for 'plain' text
121+
on_response_started = []
122+
driver.navigate.to url_for(empty_text)
123+
wait.until { !on_response_started.nil? }
124+
expect(on_response_started[0].dig('request', 'method')).to eq 'GET'
125+
expect(on_response_started[0].dig('request', 'url')).to eq driver.current_url
126+
expect(on_response_started[0].dig('response', 'url')).to eq driver.current_url
127+
expect(on_response_started[0].dig('response', 'mimeType')).to include 'text/plain'
128+
end
129+
end
130+
131+
it 'can subscribe to response completed' do
132+
reset_driver!(web_socket_url: true) do |driver|
133+
on_response_completed = []
134+
inspector = described_class.new(driver)
135+
inspector.response_completed { |event| on_response_completed.push(event) }
136+
137+
driver.navigate.to url_for(empty_page)
138+
wait.until { !on_response_completed.nil? }
139+
140+
expect(on_response_completed[0].dig('request', 'method')).to eq 'GET'
141+
expect(on_response_completed[0].dig('request', 'url')).to eq driver.current_url
142+
expect(on_response_completed[0].dig('response', 'url')).to eq driver.current_url
143+
expect(on_response_completed[0].dig('response', 'fromCache')).to be false
144+
expect(on_response_completed[0].dig('response', 'mimeType')).to include 'text/html'
145+
expect(on_response_completed[0].dig('response', 'status')).to eq 200
146+
expect(on_response_completed[0].dig('response', 'statusText')).to eq 'OK'
147+
expect(on_response_completed[0]['redirectCount']).to eq 0
148+
end
149+
end
150+
151+
it 'test response completed mime type' do
152+
reset_driver!(web_socket_url: true) do |driver|
153+
on_response_completed = []
154+
inspector = described_class.new(driver)
155+
inspector.response_completed { |event| on_response_completed.push(event) }
156+
157+
# Checking mime type for 'html' text
158+
driver.navigate.to url_for(empty_page)
159+
wait.until { !on_response_completed.nil? }
160+
161+
expect(on_response_completed[0].dig('request', 'method')).to eq 'GET'
162+
expect(on_response_completed[0].dig('request', 'url')).to eq driver.current_url
163+
expect(on_response_completed[0].dig('response', 'url')).to eq driver.current_url
164+
expect(on_response_completed[0].dig('response', 'mimeType')).to include 'text/html'
165+
166+
# Checking mime type for 'plain' text
167+
on_response_completed = []
168+
driver.navigate.to url_for(empty_text)
169+
wait.until { !on_response_completed.nil? }
170+
expect(on_response_completed[0].dig('request', 'method')).to eq 'GET'
171+
expect(on_response_completed[0].dig('request', 'url')).to eq driver.current_url
172+
expect(on_response_completed[0].dig('response', 'url')).to eq driver.current_url
173+
expect(on_response_completed[0].dig('response', 'mimeType')).to include 'text/plain'
61174
end
62175
end
63176
end

0 commit comments

Comments
 (0)