@@ -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