@@ -15,8 +15,9 @@ class Browser
15
15
16
16
class NoSuchWindowError < StandardError ; end
17
17
18
- def initialize ( driver :, playwright_browser :, page_options :, record_video : false , callback_on_save_trace : nil , default_timeout : nil , default_navigation_timeout : nil )
18
+ def initialize ( driver :, internal_logger : , playwright_browser :, page_options :, record_video : false , callback_on_save_trace : nil , default_timeout : nil , default_navigation_timeout : nil )
19
19
@driver = driver
20
+ @internal_logger = internal_logger
20
21
@playwright_browser = playwright_browser
21
22
@page_options = page_options
22
23
if record_video
@@ -36,6 +37,7 @@ def initialize(driver:, playwright_browser:, page_options:, record_video: false,
36
37
unless @playwright_page
37
38
@playwright_page = page
38
39
end
40
+ page . send ( :_update_internal_logger , @internal_logger )
39
41
} )
40
42
if @callback_on_save_trace
41
43
browser_context . tracing . start ( screenshots : true , snapshots : true )
@@ -95,15 +97,15 @@ def refresh
95
97
def find_xpath ( query , **options )
96
98
assert_page_alive {
97
99
@playwright_page . capybara_current_frame . query_selector_all ( "xpath=#{ query } " ) . map do |el |
98
- Node . new ( @driver , @playwright_page , el )
100
+ Node . new ( @driver , @internal_logger , @ playwright_page, el )
99
101
end
100
102
}
101
103
end
102
104
103
105
def find_css ( query , **options )
104
106
assert_page_alive {
105
107
@playwright_page . capybara_current_frame . query_selector_all ( query ) . map do |el |
106
- Node . new ( @driver , @playwright_page , el )
108
+ Node . new ( @driver , @internal_logger , @ playwright_page, el )
107
109
end
108
110
}
109
111
end
@@ -185,7 +187,7 @@ def evaluate_async_script(script, *args)
185
187
def active_element
186
188
el = @playwright_page . capybara_current_frame . evaluate_handle ( '() => document.activeElement' )
187
189
if el
188
- Node . new ( @driver , @playwright_page , el )
190
+ Node . new ( @driver , @internal_logger , @ playwright_page, el )
189
191
else
190
192
nil
191
193
end
@@ -252,7 +254,7 @@ def switch_to_frame(frame)
252
254
/Cannot find context with specified id/ ,
253
255
/Unable to adopt element handle from a different document/
254
256
# ignore error for retry
255
- puts "[WARNING] #{ err . message } "
257
+ @internal_logger . warn ( err . message )
256
258
else
257
259
raise
258
260
end
@@ -324,7 +326,7 @@ def resize_window_to(handle, width, height)
324
326
end
325
327
326
328
def maximize_window ( handle )
327
- puts "[WARNING] maximize_window is not supported in Playwright driver"
329
+ @internal_logger . warn ( " maximize_window is not supported in Playwright driver")
328
330
# incomplete in Playwright
329
331
# ref: https://github.com/twalpole/apparition/blob/11aca464b38b77585191b7e302be2e062bdd369d/lib/capybara/apparition/page.rb#L346
330
332
on_window ( handle ) do |page |
@@ -334,7 +336,7 @@ def maximize_window(handle)
334
336
end
335
337
336
338
def fullscreen_window ( handle )
337
- puts "[WARNING] fullscreen_window is not supported in Playwright driver"
339
+ @internal_logger . warn ( " fullscreen_window is not supported in Playwright driver")
338
340
# incomplete in Playwright
339
341
# ref: https://github.com/twalpole/apparition/blob/11aca464b38b77585191b7e302be2e062bdd369d/lib/capybara/apparition/page.rb#L341
340
342
on_window ( handle ) do |page |
@@ -375,7 +377,7 @@ def dismiss_modal(dialog_type, **options, &block)
375
377
[ key , wrap_node ( value ) ]
376
378
end . to_h
377
379
when ::Playwright ::ElementHandle
378
- Node . new ( @driver , @playwright_page , arg )
380
+ Node . new ( @driver , @internal_logger , @ playwright_page, arg )
379
381
when ::Playwright ::JSHandle
380
382
obj_type , is_array = arg . evaluate ( 'obj => [typeof obj, Array.isArray(obj)]' )
381
383
if obj_type == 'object'
0 commit comments