@@ -27,83 +27,93 @@ class BiDi
2727
2828 it 'can listen to console log' do
2929 reset_driver! ( web_socket_url : true ) do |driver |
30- log_entry = nil
30+ log_entries = [ ]
3131 log_inspector = described_class . new ( driver )
32- log_inspector . on_console_entry { |log | log_entry = log }
32+ log_inspector . on_console_entry { |log | log_entries << log }
3333
3434 driver . navigate . to url_for ( page )
3535 driver . find_element ( id : 'consoleLog' ) . click
36- wait . until { ! log_entry . nil? }
36+ log_entry = wait . until { log_entries . find { _1 . text == 'Hello, world!' } }
3737
3838 expect ( log_entry ) . to have_attributes (
3939 text : 'Hello, world!' ,
4040 realm : nil ,
4141 type : 'console' ,
4242 level : LogInspector ::LOG_LEVEL [ :INFO ] ,
43- method : 'log'
43+ method : 'log' ,
44+ args : [ {
45+ 'type' => 'string' ,
46+ 'value' => 'Hello, world!'
47+ } ]
4448 )
45- expect ( log_entry . args . size ) . to eq ( 1 )
4649 end
4750 end
4851
4952 it 'can listen to console log with different consumers' do
5053 reset_driver! ( web_socket_url : true ) do |driver |
51- log_entry = nil
54+ log_entries1 = [ ]
55+ log_entries2 = [ ]
5256 log_inspector = described_class . new ( driver )
53- log_inspector . on_console_entry { |log | log_entry = log }
54-
55- log_entry_text = nil
56- log_inspector . on_console_entry { |log | log_entry_text = log . text }
57+ log_inspector . on_console_entry { |log | log_entries1 << log }
58+ log_inspector . on_console_entry { |log | log_entries2 << log }
5759
5860 driver . navigate . to url_for ( page )
5961 driver . find_element ( id : 'consoleLog' ) . click
60- wait . until { !log_entry . nil? }
61-
62- expect ( log_entry ) . to have_attributes (
63- text : 'Hello, world!' ,
64- realm : nil ,
65- type : 'console' ,
66- level : LogInspector ::LOG_LEVEL [ :INFO ] ,
67- method : 'log'
62+ log_entry1 = wait . until { log_entries1 . find { _1 . text == 'Hello, world!' } }
63+ log_entry2 = wait . until { log_entries2 . find { _1 . text == 'Hello, world!' } }
64+
65+ expect ( [ log_entry1 , log_entry2 ] ) . to all (
66+ have_attributes (
67+ text : 'Hello, world!' ,
68+ realm : nil ,
69+ type : 'console' ,
70+ level : LogInspector ::LOG_LEVEL [ :INFO ] ,
71+ method : 'log' ,
72+ args : [ {
73+ 'type' => 'string' ,
74+ 'value' => 'Hello, world!'
75+ } ]
76+ )
6877 )
69- expect ( log_entry . args . size ) . to eq ( 1 )
70- expect ( log_entry_text ) . to eq ( 'Hello, world!' )
7178 end
7279 end
7380
7481 it 'can filter console info level log' do
7582 reset_driver! ( web_socket_url : true ) do |driver |
76- log_entry = nil
83+ log_entries = [ ]
7784 log_inspector = described_class . new ( driver )
78- log_inspector . on_console_entry ( FilterBy . log_level ( 'info' ) ) { |log | log_entry = log }
85+ log_inspector . on_console_entry ( FilterBy . log_level ( 'info' ) ) { |log | log_entries << log }
7986
8087 driver . navigate . to url_for ( page )
8188 driver . find_element ( id : 'consoleLog' ) . click
82- wait . until { ! log_entry . nil? }
89+ log_entry = wait . until { log_entries . find { _1 . text == 'Hello, world!' } }
8390
8491 expect ( log_entry ) . to have_attributes (
8592 text : 'Hello, world!' ,
8693 realm : nil ,
8794 type : 'console' ,
8895 level : LogInspector ::LOG_LEVEL [ :INFO ] ,
89- method : 'log'
96+ method : 'log' ,
97+ args : [ {
98+ 'type' => 'string' ,
99+ 'value' => 'Hello, world!'
100+ } ]
90101 )
91- expect ( log_entry . args . size ) . to eq ( 1 )
92102 end
93103 end
94104
95105 it 'can filter console log' do
96106 reset_driver! ( web_socket_url : true ) do |driver |
97- log_entry = nil
107+ log_entries = [ ]
98108 log_inspector = described_class . new ( driver )
99- log_inspector . on_console_entry ( FilterBy . log_level ( 'error' ) ) { |log | log_entry = log }
109+ log_inspector . on_console_entry ( FilterBy . log_level ( 'error' ) ) { |log | log_entries << log }
100110
101111 driver . navigate . to url_for ( page )
102112 # Generating info level log but we are filtering by error level
103113 wait . until { driver . find_element ( id : 'consoleLog' ) . displayed? }
104114 driver . find_element ( id : 'consoleLog' ) . click
105115
106- expect ( log_entry ) . to be_nil
116+ expect ( log_entries ) . to be_empty
107117 end
108118 end
109119
@@ -178,29 +188,31 @@ class BiDi
178188
179189 it 'can listen to any log' do
180190 reset_driver! ( web_socket_url : true ) do |driver |
181- log_entry = nil
191+ log_entries = [ ]
182192 log_inspector = described_class . new ( driver )
183- log_inspector . on_log { |log | log_entry = log }
193+ log_inspector . on_log { |log | log_entries << log }
184194
185195 driver . navigate . to url_for ( page )
186196 driver . find_element ( id : 'consoleError' ) . click
187- wait . until { ! log_entry . nil? }
197+ log_entry = wait . until { log_entries . find { _1 [ 'text' ] == 'I am console error' } }
188198
189- expect ( log_entry [ 'text' ] ) . to eq ( 'I am console error' )
190- expect ( log_entry [ 'type' ] ) . to eq ( 'console' )
191- expect ( log_entry [ 'method' ] ) . to eq ( LogInspector ::LOG_LEVEL [ :ERROR ] )
199+ expect ( log_entry ) . to include (
200+ 'text' => 'I am console error' ,
201+ 'type' => 'console' ,
202+ 'level' => LogInspector ::LOG_LEVEL [ :ERROR ]
203+ )
192204 end
193205 end
194206
195207 it 'can filter any log' do
196208 reset_driver! ( web_socket_url : true ) do |driver |
197- log_entry = nil
209+ log_entries = [ ]
198210 log_inspector = described_class . new ( driver )
199- log_inspector . on_log ( FilterBy . log_level ( 'info' ) ) { |log | log_entry = log }
211+ log_inspector . on_log ( FilterBy . log_level ( 'info' ) ) { |log | log_entries << log }
200212
201213 driver . navigate . to url_for ( page )
202214 driver . find_element ( id : 'consoleLog' ) . click
203- wait . until { ! log_entry . nil? }
215+ log_entry = wait . until { log_entries . find { _1 [ 'text' ] == 'Hello, world!' } }
204216
205217 expect ( log_entry [ 'text' ] ) . to eq ( 'Hello, world!' )
206218 expect ( log_entry [ 'realm' ] ) . to be_nil
0 commit comments