playwright-ruby-client 0.6.6 → 0.7.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/documentation/docs/api/page.md +8 -0
- data/documentation/docs/api/web_socket.md +37 -0
- data/documentation/docs/article/guides/launch_browser.md +2 -0
- data/documentation/docs/article/guides/semi_automation.md +67 -0
- data/documentation/docs/include/api_coverage.md +5 -5
- data/lib/playwright/channel_owners/page.rb +4 -0
- data/lib/playwright/channel_owners/web_socket.rb +83 -0
- data/lib/playwright/version.rb +1 -1
- data/lib/playwright_api/android.rb +6 -6
- data/lib/playwright_api/android_device.rb +6 -6
- data/lib/playwright_api/browser.rb +6 -6
- data/lib/playwright_api/browser_context.rb +6 -6
- data/lib/playwright_api/browser_type.rb +6 -6
- data/lib/playwright_api/console_message.rb +6 -6
- data/lib/playwright_api/dialog.rb +6 -6
- data/lib/playwright_api/element_handle.rb +6 -6
- data/lib/playwright_api/frame.rb +6 -6
- data/lib/playwright_api/js_handle.rb +6 -6
- data/lib/playwright_api/page.rb +8 -8
- data/lib/playwright_api/playwright.rb +6 -6
- data/lib/playwright_api/request.rb +6 -6
- data/lib/playwright_api/response.rb +6 -6
- data/lib/playwright_api/route.rb +6 -6
- data/lib/playwright_api/selectors.rb +6 -6
- data/lib/playwright_api/web_socket.rb +12 -12
- data/lib/playwright_api/worker.rb +6 -6
- data/playwright.gemspec +2 -1
- metadata +31 -16
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 9342eb9d31cb69d5eee5734d2143505672336cb630599f5d92a3e07559b76421
|
4
|
+
data.tar.gz: 66a5f38c686c7477037740cddf2d6572b63b21dd791f92a0c179fd292ee0b8e6
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 9adc1be3cbef06c38bcb1080e26c8b816311dc81573b6d089f55fd286e9e29d9a29831f1655a2d8189d1c20ed6bea0fd108a98ed347d4c1c1281753d64cddd2b
|
7
|
+
data.tar.gz: f65e5ff953e8b1f6ef54a031cda1a53819bdb0c62caa44b5dc34a2011bc1d72d867a838de98bc7e2cbc8b0d34899cf19b6b89c4d008aa7a98f60871e91b3021e
|
@@ -1393,6 +1393,14 @@ page.wait_for_url("**/target.html")
|
|
1393
1393
|
|
1394
1394
|
Shortcut for main frame's [Frame#wait_for_url](./frame#wait_for_url).
|
1395
1395
|
|
1396
|
+
## expect_websocket
|
1397
|
+
|
1398
|
+
```
|
1399
|
+
def expect_websocket(predicate: nil, timeout: nil, &block)
|
1400
|
+
```
|
1401
|
+
|
1402
|
+
Performs action and waits for a new [WebSocket](./web_socket). If predicate is provided, it passes [WebSocket](./web_socket) value into the `predicate` function and waits for `predicate.call(web_socket)` to return a truthy value. Will throw an error if the page is closed before the WebSocket event is fired.
|
1403
|
+
|
1396
1404
|
## accessibility
|
1397
1405
|
|
1398
1406
|
## keyboard
|
@@ -5,3 +5,40 @@ sidebar_position: 10
|
|
5
5
|
# WebSocket
|
6
6
|
|
7
7
|
The [WebSocket](./web_socket) class represents websocket connections in the page.
|
8
|
+
|
9
|
+
## closed?
|
10
|
+
|
11
|
+
```
|
12
|
+
def closed?
|
13
|
+
```
|
14
|
+
|
15
|
+
Indicates that the web socket has been closed.
|
16
|
+
|
17
|
+
## url
|
18
|
+
|
19
|
+
```
|
20
|
+
def url
|
21
|
+
```
|
22
|
+
|
23
|
+
Contains the URL of the WebSocket.
|
24
|
+
|
25
|
+
## expect_event
|
26
|
+
|
27
|
+
```
|
28
|
+
def expect_event(event, predicate: nil, timeout: nil, &block)
|
29
|
+
```
|
30
|
+
|
31
|
+
Waits for event to fire and passes its value into the predicate function. Returns when the predicate returns truthy
|
32
|
+
value. Will throw an error if the webSocket is closed before the event is fired. Returns the event data value.
|
33
|
+
|
34
|
+
## wait_for_event
|
35
|
+
|
36
|
+
```
|
37
|
+
def wait_for_event(event, predicate: nil, timeout: nil, &block)
|
38
|
+
```
|
39
|
+
|
40
|
+
> NOTE: In most cases, you should use [WebSocket#wait_for_event](./web_socket#wait_for_event).
|
41
|
+
|
42
|
+
Waits for given `event` to fire. If predicate is provided, it passes event's value into the `predicate` function and
|
43
|
+
waits for `predicate(event)` to return a truthy value. Will throw an error if the socket is closed before the `event` is
|
44
|
+
fired.
|
@@ -117,3 +117,5 @@ Playwright.create(playwright_cli_executable_path: 'npx playwright') do |playwrig
|
|
117
117
|
end
|
118
118
|
end
|
119
119
|
```
|
120
|
+
|
121
|
+
Note that each browser context is isolated and not persisted by default. When persistent browser context is needed, we can use [BrowserType#launch_persistent_context](/docs/api/browser_type#launch_persistent_context).
|
@@ -0,0 +1,67 @@
|
|
1
|
+
# Semi-automation
|
2
|
+
|
3
|
+
Playwright Browser context is isolated and not persisted by default. But we can also use persistent browser context using [BrowserType#launch_persistent_context](/docs/api/browser_type#launch_persistent_context).
|
4
|
+
This allow us to intermediate into automation, for example
|
5
|
+
|
6
|
+
* Authenticate with OAuth2 manually before automation
|
7
|
+
* Testing a page after some chrome extensions are installed manually
|
8
|
+
|
9
|
+
Keep in mind repeatedly that persistent browser context is NOT RECOMMENDED for most cases because it would bring many side effects.
|
10
|
+
|
11
|
+
## Pause automation for manual operation
|
12
|
+
|
13
|
+
`Page#pause` is not implemented yet, however we can use `binding.pry` (with `pry-byebug` installed) instead.
|
14
|
+
|
15
|
+
```ruby {4}
|
16
|
+
playwright.chromium.launch_persistent_context('./data/', headless: false) do |context|
|
17
|
+
page = context.new_page
|
18
|
+
page.goto('https://example.com/')
|
19
|
+
binding.pry
|
20
|
+
end
|
21
|
+
```
|
22
|
+
|
23
|
+
When script is executed, it is paused as below.
|
24
|
+
|
25
|
+
```
|
26
|
+
3:
|
27
|
+
4: playwright.chromium.launch_persistent_context('./data/', headless: false) do |context|
|
28
|
+
5: page = context.new_page
|
29
|
+
6: page.goto('https://example.com/')
|
30
|
+
=> 7: binding.pry
|
31
|
+
8: end
|
32
|
+
|
33
|
+
[1] pry(main)>
|
34
|
+
```
|
35
|
+
|
36
|
+
We can inspect using `page`, `context` and also we can operate something manually during the pause.
|
37
|
+
|
38
|
+
See https://github.com/deivid-rodriguez/pry-byebug for more detailed debugging options.
|
39
|
+
|
40
|
+
## Working with Chrome extensions
|
41
|
+
|
42
|
+
**Playwright disables the Chrome extension feature by default.**
|
43
|
+
We have to enable it for installing Chrome extension, by passing these 3 parameters on launch.
|
44
|
+
|
45
|
+
* `acceptDownloads: true`
|
46
|
+
* `headless: false`
|
47
|
+
* `ignoreDefaultArgs: ['--disable-extensions']`
|
48
|
+
|
49
|
+
```ruby
|
50
|
+
require 'playwright'
|
51
|
+
require 'pry'
|
52
|
+
|
53
|
+
Playwright.create(playwright_cli_executable_path: './node_modules/.bin/playwright') do |playwright|
|
54
|
+
launch_params = {
|
55
|
+
acceptDownloads: true,
|
56
|
+
channel: 'chrome',
|
57
|
+
headless: false,
|
58
|
+
ignoreDefaultArgs: ['--disable-extensions'],
|
59
|
+
}
|
60
|
+
|
61
|
+
playwright.chromium.launch_persistent_context('./data/', **launch_params) do |context|
|
62
|
+
page = context.new_page
|
63
|
+
page.goto('https://example.com/')
|
64
|
+
binding.pry
|
65
|
+
end
|
66
|
+
end
|
67
|
+
```
|
@@ -40,10 +40,10 @@
|
|
40
40
|
|
41
41
|
## WebSocket
|
42
42
|
|
43
|
-
*
|
44
|
-
*
|
45
|
-
*
|
46
|
-
*
|
43
|
+
* closed?
|
44
|
+
* url
|
45
|
+
* expect_event
|
46
|
+
* wait_for_event
|
47
47
|
|
48
48
|
## Keyboard
|
49
49
|
|
@@ -278,7 +278,7 @@
|
|
278
278
|
* wait_for_selector
|
279
279
|
* ~~wait_for_timeout~~
|
280
280
|
* wait_for_url
|
281
|
-
*
|
281
|
+
* expect_websocket
|
282
282
|
* ~~expect_worker~~
|
283
283
|
* ~~workers~~
|
284
284
|
* ~~wait_for_event~~
|
@@ -774,6 +774,10 @@ module Playwright
|
|
774
774
|
expect_event(Events::Page::Response, predicate: predicate, timeout: timeout, &block)
|
775
775
|
end
|
776
776
|
|
777
|
+
def expect_websocket(predicate: nil, timeout: nil, &block)
|
778
|
+
expect_event(Events::Page::WebSocket, predicate: predicate, timeout: timeout, &block)
|
779
|
+
end
|
780
|
+
|
777
781
|
# called from Frame with send(:timeout_settings)
|
778
782
|
private def timeout_settings
|
779
783
|
@timeout_settings
|
@@ -1,4 +1,87 @@
|
|
1
|
+
require 'base64'
|
2
|
+
|
1
3
|
module Playwright
|
2
4
|
define_channel_owner :WebSocket do
|
5
|
+
private def after_initialize
|
6
|
+
@closed = false
|
7
|
+
|
8
|
+
@channel.on('frameSent', -> (params) {
|
9
|
+
on_frame_sent(params['opcode'], params['data'])
|
10
|
+
})
|
11
|
+
@channel.on('frameReceived', -> (params) {
|
12
|
+
on_frame_received(params['opcode'], params['data'])
|
13
|
+
})
|
14
|
+
@channel.on('socketError', -> (params) {
|
15
|
+
emit(Events::WebSocket::Error, params['error'])
|
16
|
+
})
|
17
|
+
@channel.on('close', -> (_) { on_close })
|
18
|
+
end
|
19
|
+
|
20
|
+
def url
|
21
|
+
@initializer['url']
|
22
|
+
end
|
23
|
+
|
24
|
+
class SocketClosedError < StandardError
|
25
|
+
def initialize
|
26
|
+
super('Socket closed')
|
27
|
+
end
|
28
|
+
end
|
29
|
+
|
30
|
+
class SocketError < StandardError
|
31
|
+
def initialize
|
32
|
+
super('Socket error')
|
33
|
+
end
|
34
|
+
end
|
35
|
+
|
36
|
+
class PageClosedError < StandardError
|
37
|
+
def initialize
|
38
|
+
super('Page closed')
|
39
|
+
end
|
40
|
+
end
|
41
|
+
|
42
|
+
def expect_event(event, predicate: nil, timeout: nil, &block)
|
43
|
+
wait_helper = WaitHelper.new
|
44
|
+
wait_helper.reject_on_timeout(timeout || @parent.send(:timeout_settings).timeout, "Timeout while waiting for event \"#{event}\"")
|
45
|
+
|
46
|
+
unless event == Events::WebSocket::Close
|
47
|
+
wait_helper.reject_on_event(self, Events::WebSocket::Close, SocketClosedError.new)
|
48
|
+
end
|
49
|
+
|
50
|
+
unless event == Events::WebSocket::Error
|
51
|
+
wait_helper.reject_on_event(self, Events::WebSocket::Error, SocketError.new)
|
52
|
+
end
|
53
|
+
|
54
|
+
wait_helper.reject_on_event(@parent, 'close', PageClosedError.new)
|
55
|
+
wait_helper.wait_for_event(self, event, predicate: predicate)
|
56
|
+
block&.call
|
57
|
+
|
58
|
+
wait_helper.promise.value!
|
59
|
+
end
|
60
|
+
alias_method :wait_for_event, :expect_event
|
61
|
+
|
62
|
+
private def on_frame_sent(opcode, data)
|
63
|
+
if opcode == 2
|
64
|
+
emit(Events::WebSocket::FrameSent, Base64.strict_decode64(data))
|
65
|
+
else
|
66
|
+
emit(Events::WebSocket::FrameSent, data)
|
67
|
+
end
|
68
|
+
end
|
69
|
+
|
70
|
+
private def on_frame_received(opcode, data)
|
71
|
+
if opcode == 2
|
72
|
+
emit(Events::WebSocket::FrameReceived, Base64.strict_decode64(data))
|
73
|
+
else
|
74
|
+
emit(Events::WebSocket::FrameReceived, data)
|
75
|
+
end
|
76
|
+
end
|
77
|
+
|
78
|
+
def closed?
|
79
|
+
@closed
|
80
|
+
end
|
81
|
+
|
82
|
+
private def on_close
|
83
|
+
@closed = true
|
84
|
+
emit(Events::WebSocket::Close)
|
85
|
+
end
|
3
86
|
end
|
4
87
|
end
|
data/lib/playwright/version.rb
CHANGED
@@ -23,12 +23,6 @@ module Playwright
|
|
23
23
|
end
|
24
24
|
alias_method :default_timeout=, :set_default_timeout
|
25
25
|
|
26
|
-
# -- inherited from EventEmitter --
|
27
|
-
# @nodoc
|
28
|
-
def once(event, callback)
|
29
|
-
event_emitter_proxy.once(event, callback)
|
30
|
-
end
|
31
|
-
|
32
26
|
# -- inherited from EventEmitter --
|
33
27
|
# @nodoc
|
34
28
|
def on(event, callback)
|
@@ -41,6 +35,12 @@ module Playwright
|
|
41
35
|
event_emitter_proxy.off(event, callback)
|
42
36
|
end
|
43
37
|
|
38
|
+
# -- inherited from EventEmitter --
|
39
|
+
# @nodoc
|
40
|
+
def once(event, callback)
|
41
|
+
event_emitter_proxy.once(event, callback)
|
42
|
+
end
|
43
|
+
|
44
44
|
private def event_emitter_proxy
|
45
45
|
@event_emitter_proxy ||= EventEmitterProxy.new(self, @impl)
|
46
46
|
end
|
@@ -171,12 +171,6 @@ module Playwright
|
|
171
171
|
wrap_impl(@impl.tap_on(unwrap_impl(selector), duration: unwrap_impl(duration), timeout: unwrap_impl(timeout)))
|
172
172
|
end
|
173
173
|
|
174
|
-
# -- inherited from EventEmitter --
|
175
|
-
# @nodoc
|
176
|
-
def once(event, callback)
|
177
|
-
event_emitter_proxy.once(event, callback)
|
178
|
-
end
|
179
|
-
|
180
174
|
# -- inherited from EventEmitter --
|
181
175
|
# @nodoc
|
182
176
|
def on(event, callback)
|
@@ -189,6 +183,12 @@ module Playwright
|
|
189
183
|
event_emitter_proxy.off(event, callback)
|
190
184
|
end
|
191
185
|
|
186
|
+
# -- inherited from EventEmitter --
|
187
|
+
# @nodoc
|
188
|
+
def once(event, callback)
|
189
|
+
event_emitter_proxy.once(event, callback)
|
190
|
+
end
|
191
|
+
|
192
192
|
private def event_emitter_proxy
|
193
193
|
@event_emitter_proxy ||= EventEmitterProxy.new(self, @impl)
|
194
194
|
end
|
@@ -156,12 +156,6 @@ module Playwright
|
|
156
156
|
wrap_impl(@impl.version)
|
157
157
|
end
|
158
158
|
|
159
|
-
# -- inherited from EventEmitter --
|
160
|
-
# @nodoc
|
161
|
-
def once(event, callback)
|
162
|
-
event_emitter_proxy.once(event, callback)
|
163
|
-
end
|
164
|
-
|
165
159
|
# -- inherited from EventEmitter --
|
166
160
|
# @nodoc
|
167
161
|
def on(event, callback)
|
@@ -174,6 +168,12 @@ module Playwright
|
|
174
168
|
event_emitter_proxy.off(event, callback)
|
175
169
|
end
|
176
170
|
|
171
|
+
# -- inherited from EventEmitter --
|
172
|
+
# @nodoc
|
173
|
+
def once(event, callback)
|
174
|
+
event_emitter_proxy.once(event, callback)
|
175
|
+
end
|
176
|
+
|
177
177
|
private def event_emitter_proxy
|
178
178
|
@event_emitter_proxy ||= EventEmitterProxy.new(self, @impl)
|
179
179
|
end
|
@@ -382,12 +382,6 @@ module Playwright
|
|
382
382
|
wrap_impl(@impl.pause)
|
383
383
|
end
|
384
384
|
|
385
|
-
# -- inherited from EventEmitter --
|
386
|
-
# @nodoc
|
387
|
-
def once(event, callback)
|
388
|
-
event_emitter_proxy.once(event, callback)
|
389
|
-
end
|
390
|
-
|
391
385
|
# -- inherited from EventEmitter --
|
392
386
|
# @nodoc
|
393
387
|
def on(event, callback)
|
@@ -400,6 +394,12 @@ module Playwright
|
|
400
394
|
event_emitter_proxy.off(event, callback)
|
401
395
|
end
|
402
396
|
|
397
|
+
# -- inherited from EventEmitter --
|
398
|
+
# @nodoc
|
399
|
+
def once(event, callback)
|
400
|
+
event_emitter_proxy.once(event, callback)
|
401
|
+
end
|
402
|
+
|
403
403
|
private def event_emitter_proxy
|
404
404
|
@event_emitter_proxy ||= EventEmitterProxy.new(self, @impl)
|
405
405
|
end
|
@@ -143,12 +143,6 @@ module Playwright
|
|
143
143
|
wrap_impl(@impl.name)
|
144
144
|
end
|
145
145
|
|
146
|
-
# -- inherited from EventEmitter --
|
147
|
-
# @nodoc
|
148
|
-
def once(event, callback)
|
149
|
-
event_emitter_proxy.once(event, callback)
|
150
|
-
end
|
151
|
-
|
152
146
|
# -- inherited from EventEmitter --
|
153
147
|
# @nodoc
|
154
148
|
def on(event, callback)
|
@@ -161,6 +155,12 @@ module Playwright
|
|
161
155
|
event_emitter_proxy.off(event, callback)
|
162
156
|
end
|
163
157
|
|
158
|
+
# -- inherited from EventEmitter --
|
159
|
+
# @nodoc
|
160
|
+
def once(event, callback)
|
161
|
+
event_emitter_proxy.once(event, callback)
|
162
|
+
end
|
163
|
+
|
164
164
|
private def event_emitter_proxy
|
165
165
|
@event_emitter_proxy ||= EventEmitterProxy.new(self, @impl)
|
166
166
|
end
|
@@ -23,12 +23,6 @@ module Playwright
|
|
23
23
|
wrap_impl(@impl.type)
|
24
24
|
end
|
25
25
|
|
26
|
-
# -- inherited from EventEmitter --
|
27
|
-
# @nodoc
|
28
|
-
def once(event, callback)
|
29
|
-
event_emitter_proxy.once(event, callback)
|
30
|
-
end
|
31
|
-
|
32
26
|
# -- inherited from EventEmitter --
|
33
27
|
# @nodoc
|
34
28
|
def on(event, callback)
|
@@ -41,6 +35,12 @@ module Playwright
|
|
41
35
|
event_emitter_proxy.off(event, callback)
|
42
36
|
end
|
43
37
|
|
38
|
+
# -- inherited from EventEmitter --
|
39
|
+
# @nodoc
|
40
|
+
def once(event, callback)
|
41
|
+
event_emitter_proxy.once(event, callback)
|
42
|
+
end
|
43
|
+
|
44
44
|
private def event_emitter_proxy
|
45
45
|
@event_emitter_proxy ||= EventEmitterProxy.new(self, @impl)
|
46
46
|
end
|
@@ -58,12 +58,6 @@ module Playwright
|
|
58
58
|
wrap_impl(@impl.accept_async(promptText: unwrap_impl(promptText)))
|
59
59
|
end
|
60
60
|
|
61
|
-
# -- inherited from EventEmitter --
|
62
|
-
# @nodoc
|
63
|
-
def once(event, callback)
|
64
|
-
event_emitter_proxy.once(event, callback)
|
65
|
-
end
|
66
|
-
|
67
61
|
# -- inherited from EventEmitter --
|
68
62
|
# @nodoc
|
69
63
|
def on(event, callback)
|
@@ -76,6 +70,12 @@ module Playwright
|
|
76
70
|
event_emitter_proxy.off(event, callback)
|
77
71
|
end
|
78
72
|
|
73
|
+
# -- inherited from EventEmitter --
|
74
|
+
# @nodoc
|
75
|
+
def once(event, callback)
|
76
|
+
event_emitter_proxy.once(event, callback)
|
77
|
+
end
|
78
|
+
|
79
79
|
private def event_emitter_proxy
|
80
80
|
@event_emitter_proxy ||= EventEmitterProxy.new(self, @impl)
|
81
81
|
end
|
@@ -509,12 +509,6 @@ module Playwright
|
|
509
509
|
wrap_impl(@impl.wait_for_selector(unwrap_impl(selector), state: unwrap_impl(state), timeout: unwrap_impl(timeout)))
|
510
510
|
end
|
511
511
|
|
512
|
-
# -- inherited from EventEmitter --
|
513
|
-
# @nodoc
|
514
|
-
def once(event, callback)
|
515
|
-
event_emitter_proxy.once(event, callback)
|
516
|
-
end
|
517
|
-
|
518
512
|
# -- inherited from EventEmitter --
|
519
513
|
# @nodoc
|
520
514
|
def on(event, callback)
|
@@ -527,6 +521,12 @@ module Playwright
|
|
527
521
|
event_emitter_proxy.off(event, callback)
|
528
522
|
end
|
529
523
|
|
524
|
+
# -- inherited from EventEmitter --
|
525
|
+
# @nodoc
|
526
|
+
def once(event, callback)
|
527
|
+
event_emitter_proxy.once(event, callback)
|
528
|
+
end
|
529
|
+
|
530
530
|
private def event_emitter_proxy
|
531
531
|
@event_emitter_proxy ||= EventEmitterProxy.new(self, @impl)
|
532
532
|
end
|
data/lib/playwright_api/frame.rb
CHANGED
@@ -687,12 +687,6 @@ module Playwright
|
|
687
687
|
wrap_impl(@impl.detached=(unwrap_impl(req)))
|
688
688
|
end
|
689
689
|
|
690
|
-
# -- inherited from EventEmitter --
|
691
|
-
# @nodoc
|
692
|
-
def once(event, callback)
|
693
|
-
event_emitter_proxy.once(event, callback)
|
694
|
-
end
|
695
|
-
|
696
690
|
# -- inherited from EventEmitter --
|
697
691
|
# @nodoc
|
698
692
|
def on(event, callback)
|
@@ -705,6 +699,12 @@ module Playwright
|
|
705
699
|
event_emitter_proxy.off(event, callback)
|
706
700
|
end
|
707
701
|
|
702
|
+
# -- inherited from EventEmitter --
|
703
|
+
# @nodoc
|
704
|
+
def once(event, callback)
|
705
|
+
event_emitter_proxy.once(event, callback)
|
706
|
+
end
|
707
|
+
|
708
708
|
private def event_emitter_proxy
|
709
709
|
@event_emitter_proxy ||= EventEmitterProxy.new(self, @impl)
|
710
710
|
end
|
@@ -88,12 +88,6 @@ module Playwright
|
|
88
88
|
wrap_impl(@impl.to_s)
|
89
89
|
end
|
90
90
|
|
91
|
-
# -- inherited from EventEmitter --
|
92
|
-
# @nodoc
|
93
|
-
def once(event, callback)
|
94
|
-
event_emitter_proxy.once(event, callback)
|
95
|
-
end
|
96
|
-
|
97
91
|
# -- inherited from EventEmitter --
|
98
92
|
# @nodoc
|
99
93
|
def on(event, callback)
|
@@ -106,6 +100,12 @@ module Playwright
|
|
106
100
|
event_emitter_proxy.off(event, callback)
|
107
101
|
end
|
108
102
|
|
103
|
+
# -- inherited from EventEmitter --
|
104
|
+
# @nodoc
|
105
|
+
def once(event, callback)
|
106
|
+
event_emitter_proxy.once(event, callback)
|
107
|
+
end
|
108
|
+
|
109
109
|
private def event_emitter_proxy
|
110
110
|
@event_emitter_proxy ||= EventEmitterProxy.new(self, @impl)
|
111
111
|
end
|
data/lib/playwright_api/page.rb
CHANGED
@@ -1239,8 +1239,8 @@ module Playwright
|
|
1239
1239
|
# Performs action and waits for a new `WebSocket`. If predicate is provided, it passes `WebSocket` value into the
|
1240
1240
|
# `predicate` function and waits for `predicate(webSocket)` to return a truthy value. Will throw an error if the page is
|
1241
1241
|
# closed before the WebSocket event is fired.
|
1242
|
-
def expect_websocket(predicate: nil, timeout: nil)
|
1243
|
-
|
1242
|
+
def expect_websocket(predicate: nil, timeout: nil, &block)
|
1243
|
+
wrap_impl(@impl.expect_websocket(predicate: unwrap_impl(predicate), timeout: unwrap_impl(timeout), &wrap_block_call(block)))
|
1244
1244
|
end
|
1245
1245
|
|
1246
1246
|
# Performs action and waits for a new `Worker`. If predicate is provided, it passes `Worker` value into the `predicate`
|
@@ -1297,12 +1297,6 @@ module Playwright
|
|
1297
1297
|
wrap_impl(@impl.guid)
|
1298
1298
|
end
|
1299
1299
|
|
1300
|
-
# -- inherited from EventEmitter --
|
1301
|
-
# @nodoc
|
1302
|
-
def once(event, callback)
|
1303
|
-
event_emitter_proxy.once(event, callback)
|
1304
|
-
end
|
1305
|
-
|
1306
1300
|
# -- inherited from EventEmitter --
|
1307
1301
|
# @nodoc
|
1308
1302
|
def on(event, callback)
|
@@ -1315,6 +1309,12 @@ module Playwright
|
|
1315
1309
|
event_emitter_proxy.off(event, callback)
|
1316
1310
|
end
|
1317
1311
|
|
1312
|
+
# -- inherited from EventEmitter --
|
1313
|
+
# @nodoc
|
1314
|
+
def once(event, callback)
|
1315
|
+
event_emitter_proxy.once(event, callback)
|
1316
|
+
end
|
1317
|
+
|
1318
1318
|
private def event_emitter_proxy
|
1319
1319
|
@event_emitter_proxy ||= EventEmitterProxy.new(self, @impl)
|
1320
1320
|
end
|
@@ -91,12 +91,6 @@ module Playwright
|
|
91
91
|
wrap_impl(@impl.electron)
|
92
92
|
end
|
93
93
|
|
94
|
-
# -- inherited from EventEmitter --
|
95
|
-
# @nodoc
|
96
|
-
def once(event, callback)
|
97
|
-
event_emitter_proxy.once(event, callback)
|
98
|
-
end
|
99
|
-
|
100
94
|
# -- inherited from EventEmitter --
|
101
95
|
# @nodoc
|
102
96
|
def on(event, callback)
|
@@ -109,6 +103,12 @@ module Playwright
|
|
109
103
|
event_emitter_proxy.off(event, callback)
|
110
104
|
end
|
111
105
|
|
106
|
+
# -- inherited from EventEmitter --
|
107
|
+
# @nodoc
|
108
|
+
def once(event, callback)
|
109
|
+
event_emitter_proxy.once(event, callback)
|
110
|
+
end
|
111
|
+
|
112
112
|
private def event_emitter_proxy
|
113
113
|
@event_emitter_proxy ||= EventEmitterProxy.new(self, @impl)
|
114
114
|
end
|
@@ -128,12 +128,6 @@ module Playwright
|
|
128
128
|
wrap_impl(@impl.url)
|
129
129
|
end
|
130
130
|
|
131
|
-
# -- inherited from EventEmitter --
|
132
|
-
# @nodoc
|
133
|
-
def once(event, callback)
|
134
|
-
event_emitter_proxy.once(event, callback)
|
135
|
-
end
|
136
|
-
|
137
131
|
# -- inherited from EventEmitter --
|
138
132
|
# @nodoc
|
139
133
|
def on(event, callback)
|
@@ -146,6 +140,12 @@ module Playwright
|
|
146
140
|
event_emitter_proxy.off(event, callback)
|
147
141
|
end
|
148
142
|
|
143
|
+
# -- inherited from EventEmitter --
|
144
|
+
# @nodoc
|
145
|
+
def once(event, callback)
|
146
|
+
event_emitter_proxy.once(event, callback)
|
147
|
+
end
|
148
|
+
|
149
149
|
private def event_emitter_proxy
|
150
150
|
@event_emitter_proxy ||= EventEmitterProxy.new(self, @impl)
|
151
151
|
end
|
@@ -69,12 +69,6 @@ module Playwright
|
|
69
69
|
wrap_impl(@impl.ok?)
|
70
70
|
end
|
71
71
|
|
72
|
-
# -- inherited from EventEmitter --
|
73
|
-
# @nodoc
|
74
|
-
def once(event, callback)
|
75
|
-
event_emitter_proxy.once(event, callback)
|
76
|
-
end
|
77
|
-
|
78
72
|
# -- inherited from EventEmitter --
|
79
73
|
# @nodoc
|
80
74
|
def on(event, callback)
|
@@ -87,6 +81,12 @@ module Playwright
|
|
87
81
|
event_emitter_proxy.off(event, callback)
|
88
82
|
end
|
89
83
|
|
84
|
+
# -- inherited from EventEmitter --
|
85
|
+
# @nodoc
|
86
|
+
def once(event, callback)
|
87
|
+
event_emitter_proxy.once(event, callback)
|
88
|
+
end
|
89
|
+
|
90
90
|
private def event_emitter_proxy
|
91
91
|
@event_emitter_proxy ||= EventEmitterProxy.new(self, @impl)
|
92
92
|
end
|
data/lib/playwright_api/route.rb
CHANGED
@@ -56,12 +56,6 @@ module Playwright
|
|
56
56
|
wrap_impl(@impl.request)
|
57
57
|
end
|
58
58
|
|
59
|
-
# -- inherited from EventEmitter --
|
60
|
-
# @nodoc
|
61
|
-
def once(event, callback)
|
62
|
-
event_emitter_proxy.once(event, callback)
|
63
|
-
end
|
64
|
-
|
65
59
|
# -- inherited from EventEmitter --
|
66
60
|
# @nodoc
|
67
61
|
def on(event, callback)
|
@@ -74,6 +68,12 @@ module Playwright
|
|
74
68
|
event_emitter_proxy.off(event, callback)
|
75
69
|
end
|
76
70
|
|
71
|
+
# -- inherited from EventEmitter --
|
72
|
+
# @nodoc
|
73
|
+
def once(event, callback)
|
74
|
+
event_emitter_proxy.once(event, callback)
|
75
|
+
end
|
76
|
+
|
77
77
|
private def event_emitter_proxy
|
78
78
|
@event_emitter_proxy ||= EventEmitterProxy.new(self, @impl)
|
79
79
|
end
|
@@ -12,12 +12,6 @@ module Playwright
|
|
12
12
|
wrap_impl(@impl.register(unwrap_impl(name), contentScript: unwrap_impl(contentScript), path: unwrap_impl(path), script: unwrap_impl(script)))
|
13
13
|
end
|
14
14
|
|
15
|
-
# -- inherited from EventEmitter --
|
16
|
-
# @nodoc
|
17
|
-
def once(event, callback)
|
18
|
-
event_emitter_proxy.once(event, callback)
|
19
|
-
end
|
20
|
-
|
21
15
|
# -- inherited from EventEmitter --
|
22
16
|
# @nodoc
|
23
17
|
def on(event, callback)
|
@@ -30,6 +24,12 @@ module Playwright
|
|
30
24
|
event_emitter_proxy.off(event, callback)
|
31
25
|
end
|
32
26
|
|
27
|
+
# -- inherited from EventEmitter --
|
28
|
+
# @nodoc
|
29
|
+
def once(event, callback)
|
30
|
+
event_emitter_proxy.once(event, callback)
|
31
|
+
end
|
32
|
+
|
33
33
|
private def event_emitter_proxy
|
34
34
|
@event_emitter_proxy ||= EventEmitterProxy.new(self, @impl)
|
35
35
|
end
|
@@ -4,18 +4,18 @@ module Playwright
|
|
4
4
|
|
5
5
|
# Indicates that the web socket has been closed.
|
6
6
|
def closed?
|
7
|
-
|
7
|
+
wrap_impl(@impl.closed?)
|
8
8
|
end
|
9
9
|
|
10
10
|
# Contains the URL of the WebSocket.
|
11
11
|
def url
|
12
|
-
|
12
|
+
wrap_impl(@impl.url)
|
13
13
|
end
|
14
14
|
|
15
15
|
# Waits for event to fire and passes its value into the predicate function. Returns when the predicate returns truthy
|
16
16
|
# value. Will throw an error if the webSocket is closed before the event is fired. Returns the event data value.
|
17
|
-
def expect_event(event, predicate: nil, timeout: nil)
|
18
|
-
|
17
|
+
def expect_event(event, predicate: nil, timeout: nil, &block)
|
18
|
+
wrap_impl(@impl.expect_event(unwrap_impl(event), predicate: unwrap_impl(predicate), timeout: unwrap_impl(timeout), &wrap_block_call(block)))
|
19
19
|
end
|
20
20
|
|
21
21
|
# > NOTE: In most cases, you should use [`method: WebSocket.waitForEvent`].
|
@@ -23,14 +23,8 @@ module Playwright
|
|
23
23
|
# Waits for given `event` to fire. If predicate is provided, it passes event's value into the `predicate` function and
|
24
24
|
# waits for `predicate(event)` to return a truthy value. Will throw an error if the socket is closed before the `event` is
|
25
25
|
# fired.
|
26
|
-
def wait_for_event(event, predicate: nil, timeout: nil)
|
27
|
-
|
28
|
-
end
|
29
|
-
|
30
|
-
# -- inherited from EventEmitter --
|
31
|
-
# @nodoc
|
32
|
-
def once(event, callback)
|
33
|
-
event_emitter_proxy.once(event, callback)
|
26
|
+
def wait_for_event(event, predicate: nil, timeout: nil, &block)
|
27
|
+
wrap_impl(@impl.wait_for_event(unwrap_impl(event), predicate: unwrap_impl(predicate), timeout: unwrap_impl(timeout), &wrap_block_call(block)))
|
34
28
|
end
|
35
29
|
|
36
30
|
# -- inherited from EventEmitter --
|
@@ -45,6 +39,12 @@ module Playwright
|
|
45
39
|
event_emitter_proxy.off(event, callback)
|
46
40
|
end
|
47
41
|
|
42
|
+
# -- inherited from EventEmitter --
|
43
|
+
# @nodoc
|
44
|
+
def once(event, callback)
|
45
|
+
event_emitter_proxy.once(event, callback)
|
46
|
+
end
|
47
|
+
|
48
48
|
private def event_emitter_proxy
|
49
49
|
@event_emitter_proxy ||= EventEmitterProxy.new(self, @impl)
|
50
50
|
end
|
@@ -43,12 +43,6 @@ module Playwright
|
|
43
43
|
raise NotImplementedError.new('url is not implemented yet.')
|
44
44
|
end
|
45
45
|
|
46
|
-
# -- inherited from EventEmitter --
|
47
|
-
# @nodoc
|
48
|
-
def once(event, callback)
|
49
|
-
event_emitter_proxy.once(event, callback)
|
50
|
-
end
|
51
|
-
|
52
46
|
# -- inherited from EventEmitter --
|
53
47
|
# @nodoc
|
54
48
|
def on(event, callback)
|
@@ -61,6 +55,12 @@ module Playwright
|
|
61
55
|
event_emitter_proxy.off(event, callback)
|
62
56
|
end
|
63
57
|
|
58
|
+
# -- inherited from EventEmitter --
|
59
|
+
# @nodoc
|
60
|
+
def once(event, callback)
|
61
|
+
event_emitter_proxy.once(event, callback)
|
62
|
+
end
|
63
|
+
|
64
64
|
private def event_emitter_proxy
|
65
65
|
@event_emitter_proxy ||= EventEmitterProxy.new(self, @impl)
|
66
66
|
end
|
data/playwright.gemspec
CHANGED
@@ -30,11 +30,12 @@ Gem::Specification.new do |spec|
|
|
30
30
|
spec.add_development_dependency 'bundler', '~> 2.2.3'
|
31
31
|
spec.add_development_dependency 'chunky_png'
|
32
32
|
spec.add_development_dependency 'dry-inflector'
|
33
|
+
spec.add_development_dependency 'faye-websocket'
|
33
34
|
spec.add_development_dependency 'pry-byebug'
|
35
|
+
spec.add_development_dependency 'puma'
|
34
36
|
spec.add_development_dependency 'rake', '~> 13.0.3'
|
35
37
|
spec.add_development_dependency 'rspec', '~> 3.10.0 '
|
36
38
|
spec.add_development_dependency 'rspec_junit_formatter' # for CircleCI.
|
37
39
|
spec.add_development_dependency 'rubocop-rspec'
|
38
40
|
spec.add_development_dependency 'sinatra'
|
39
|
-
spec.add_development_dependency 'webrick'
|
40
41
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: playwright-ruby-client
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.7.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- YusukeIwaki
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2021-06-
|
11
|
+
date: 2021-06-15 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: concurrent-ruby
|
@@ -80,6 +80,20 @@ dependencies:
|
|
80
80
|
- - ">="
|
81
81
|
- !ruby/object:Gem::Version
|
82
82
|
version: '0'
|
83
|
+
- !ruby/object:Gem::Dependency
|
84
|
+
name: faye-websocket
|
85
|
+
requirement: !ruby/object:Gem::Requirement
|
86
|
+
requirements:
|
87
|
+
- - ">="
|
88
|
+
- !ruby/object:Gem::Version
|
89
|
+
version: '0'
|
90
|
+
type: :development
|
91
|
+
prerelease: false
|
92
|
+
version_requirements: !ruby/object:Gem::Requirement
|
93
|
+
requirements:
|
94
|
+
- - ">="
|
95
|
+
- !ruby/object:Gem::Version
|
96
|
+
version: '0'
|
83
97
|
- !ruby/object:Gem::Dependency
|
84
98
|
name: pry-byebug
|
85
99
|
requirement: !ruby/object:Gem::Requirement
|
@@ -94,6 +108,20 @@ dependencies:
|
|
94
108
|
- - ">="
|
95
109
|
- !ruby/object:Gem::Version
|
96
110
|
version: '0'
|
111
|
+
- !ruby/object:Gem::Dependency
|
112
|
+
name: puma
|
113
|
+
requirement: !ruby/object:Gem::Requirement
|
114
|
+
requirements:
|
115
|
+
- - ">="
|
116
|
+
- !ruby/object:Gem::Version
|
117
|
+
version: '0'
|
118
|
+
type: :development
|
119
|
+
prerelease: false
|
120
|
+
version_requirements: !ruby/object:Gem::Requirement
|
121
|
+
requirements:
|
122
|
+
- - ">="
|
123
|
+
- !ruby/object:Gem::Version
|
124
|
+
version: '0'
|
97
125
|
- !ruby/object:Gem::Dependency
|
98
126
|
name: rake
|
99
127
|
requirement: !ruby/object:Gem::Requirement
|
@@ -164,20 +192,6 @@ dependencies:
|
|
164
192
|
- - ">="
|
165
193
|
- !ruby/object:Gem::Version
|
166
194
|
version: '0'
|
167
|
-
- !ruby/object:Gem::Dependency
|
168
|
-
name: webrick
|
169
|
-
requirement: !ruby/object:Gem::Requirement
|
170
|
-
requirements:
|
171
|
-
- - ">="
|
172
|
-
- !ruby/object:Gem::Version
|
173
|
-
version: '0'
|
174
|
-
type: :development
|
175
|
-
prerelease: false
|
176
|
-
version_requirements: !ruby/object:Gem::Requirement
|
177
|
-
requirements:
|
178
|
-
- - ">="
|
179
|
-
- !ruby/object:Gem::Version
|
180
|
-
version: '0'
|
181
195
|
description:
|
182
196
|
email:
|
183
197
|
- q7w8e9w8q7w8e9@yahoo.co.jp
|
@@ -231,6 +245,7 @@ files:
|
|
231
245
|
- documentation/docs/article/guides/launch_browser.md
|
232
246
|
- documentation/docs/article/guides/rails_integration.md
|
233
247
|
- documentation/docs/article/guides/recording_video.md
|
248
|
+
- documentation/docs/article/guides/semi_automation.md
|
234
249
|
- documentation/docs/include/api_coverage.md
|
235
250
|
- documentation/docusaurus.config.js
|
236
251
|
- documentation/package.json
|