File tree Expand file tree Collapse file tree 4 files changed +64
-0
lines changed
Expand file tree Collapse file tree 4 files changed +64
-0
lines changed Original file line number Diff line number Diff line change @@ -28,6 +28,10 @@ def on(event, &block)
2828 @client . on ( event_name ( event ) , &block )
2929 end
3030
31+ def off ( event , id )
32+ @client . off ( event_name ( event ) , id )
33+ end
34+
3135 def subscribed? ( event )
3236 @client . subscribed? ( event_name ( event ) )
3337 end
@@ -101,6 +105,10 @@ def on(event, &block)
101105 @subscriber . on ( event , &block )
102106 end
103107
108+ def off ( event , id )
109+ @subscriber . off ( event , id )
110+ end
111+
104112 def subscribed? ( event )
105113 @subscriber . subscribed? ( event )
106114 end
Original file line number Diff line number Diff line change @@ -24,6 +24,11 @@ def <<(message)
2424 def on ( event , &block )
2525 @on [ event ] ||= Concurrent ::Array . new
2626 @on [ event ] << block
27+ @on [ event ] . index ( block )
28+ end
29+
30+ def off ( event , id )
31+ @on [ event ] . delete_at ( id )
2732 true
2833 end
2934
Original file line number Diff line number Diff line change @@ -393,6 +393,19 @@ def on(name, &block)
393393 end
394394 end
395395
396+ def off ( name , id )
397+ case name
398+ when :dialog
399+ client . off ( "Page.javascriptDialogOpening" , id )
400+ when :request
401+ client . off ( "Fetch.requestPaused" , id )
402+ when :auth
403+ client . off ( "Fetch.authRequired" , id )
404+ else
405+ client . off ( name , id )
406+ end
407+ end
408+
396409 def subscribed? ( event )
397410 client . subscribed? ( event )
398411 end
Original file line number Diff line number Diff line change 196196 expect ( page . device_pixel_ratio ) . to eq ( 2 )
197197 end
198198 end
199+
200+ describe "#on" do
201+ it "subscribes to an event" do
202+ message = nil
203+
204+ page . on ( "Runtime.consoleAPICalled" ) do |params |
205+ message = params . dig ( "args" , 0 , "value" )
206+ end
207+
208+ page . evaluate ( "console.log('hello')" )
209+ expect ( message ) . to eq ( "hello" )
210+ end
211+ end
212+
213+ describe "#off" do
214+ it "unsubscribes a specific event handler" do
215+ message_a = nil
216+ message_b = nil
217+
218+ a = page . on ( "Runtime.consoleAPICalled" ) do |params |
219+ message_a = params . dig ( "args" , 0 , "value" )
220+ end
221+
222+ page . on ( "Runtime.consoleAPICalled" ) do |params |
223+ message_b = params . dig ( "args" , 0 , "value" )
224+ end
225+
226+ page . evaluate ( "console.log('hello')" )
227+ expect ( message_a ) . to eq ( "hello" )
228+ expect ( message_b ) . to eq ( "hello" )
229+
230+ page . off ( "Runtime.consoleAPICalled" , a )
231+ page . evaluate ( "console.log('goodbye')" )
232+
233+ expect ( message_a ) . to eq ( "hello" )
234+ expect ( message_b ) . to eq ( "goodbye" )
235+ end
236+ end
199237end
You can’t perform that action at this time.
0 commit comments