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)
28
28
@client . on ( event_name ( event ) , &block )
29
29
end
30
30
31
+ def off ( event , id )
32
+ @client . off ( event_name ( event ) , id )
33
+ end
34
+
31
35
def subscribed? ( event )
32
36
@client . subscribed? ( event_name ( event ) )
33
37
end
@@ -101,6 +105,10 @@ def on(event, &block)
101
105
@subscriber . on ( event , &block )
102
106
end
103
107
108
+ def off ( event , id )
109
+ @subscriber . off ( event , id )
110
+ end
111
+
104
112
def subscribed? ( event )
105
113
@subscriber . subscribed? ( event )
106
114
end
Original file line number Diff line number Diff line change @@ -24,6 +24,11 @@ def <<(message)
24
24
def on ( event , &block )
25
25
@on [ event ] ||= Concurrent ::Array . new
26
26
@on [ event ] << block
27
+ @on [ event ] . index ( block )
28
+ end
29
+
30
+ def off ( event , id )
31
+ @on [ event ] . delete_at ( id )
27
32
true
28
33
end
29
34
Original file line number Diff line number Diff line change @@ -393,6 +393,19 @@ def on(name, &block)
393
393
end
394
394
end
395
395
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
+
396
409
def subscribed? ( event )
397
410
client . subscribed? ( event )
398
411
end
Original file line number Diff line number Diff line change 196
196
expect ( page . device_pixel_ratio ) . to eq ( 2 )
197
197
end
198
198
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
199
237
end
You can’t perform that action at this time.
0 commit comments