puppeteer-ruby 0.36.0 → 0.37.3
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/CHANGELOG.md +72 -49
- data/README.md +70 -1
- data/docs/api_coverage.md +39 -34
- data/lib/puppeteer/browser.rb +2 -8
- data/lib/puppeteer/browser_context.rb +1 -0
- data/lib/puppeteer/browser_runner.rb +1 -1
- data/lib/puppeteer/coverage.rb +11 -2
- data/lib/puppeteer/devices.rb +130 -0
- data/lib/puppeteer/dom_world.rb +10 -9
- data/lib/puppeteer/element_handle/offset.rb +28 -0
- data/lib/puppeteer/element_handle/point.rb +11 -0
- data/lib/puppeteer/element_handle.rb +27 -7
- data/lib/puppeteer/executable_path_finder.rb +28 -0
- data/lib/puppeteer/frame.rb +4 -3
- data/lib/puppeteer/frame_manager.rb +2 -2
- data/lib/puppeteer/{request.rb → http_request.rb} +150 -21
- data/lib/puppeteer/{response.rb → http_response.rb} +2 -2
- data/lib/puppeteer/js_coverage.rb +28 -7
- data/lib/puppeteer/launcher/chrome.rb +20 -3
- data/lib/puppeteer/launcher/firefox.rb +10 -3
- data/lib/puppeteer/launcher/launch_options.rb +3 -3
- data/lib/puppeteer/lifecycle_watcher.rb +2 -2
- data/lib/puppeteer/network_manager.rb +17 -7
- data/lib/puppeteer/page/screenshot_options.rb +3 -1
- data/lib/puppeteer/page.rb +30 -42
- data/lib/puppeteer/timeout_helper.rb +22 -0
- data/lib/puppeteer/tracing.rb +6 -1
- data/lib/puppeteer/version.rb +1 -1
- data/lib/puppeteer/wait_task.rb +1 -1
- data/lib/puppeteer/web_socket.rb +1 -0
- data/lib/puppeteer.rb +17 -13
- data/puppeteer-ruby.gemspec +1 -1
- metadata +9 -6
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 84ede7b4fc083303903e960a08d2a21b44866b2b47662489005e09e6e955df01
|
4
|
+
data.tar.gz: aba2c71b916d6779560a200fff6685cb9f4ba83dc2b04e092926fb121add3155
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 3b6a5cc66476c8954ab1ae942df3be6ad161ffe3aeb9b1ea51bde681f6cd9cf32d61d251980ab5d7f0907923b5ac42871cd7e99fbb55f0c00205ee231190f595
|
7
|
+
data.tar.gz: 7329fc6a4f8d1933efee34180c6d051e73613da2189b2af5226629d681c9f4b52abadf5eb548f45cb3af37d3ab1f093067b5e67e10e8c3cde09815a4fa3a0e4c
|
data/CHANGELOG.md
CHANGED
@@ -1,51 +1,75 @@
|
|
1
|
-
### master [[diff](https://github.com/YusukeIwaki/puppeteer-ruby/compare/0.
|
1
|
+
### master [[diff](https://github.com/YusukeIwaki/puppeteer-ruby/compare/0.37.3...master)]
|
2
2
|
|
3
|
-
|
3
|
+
- xxx
|
4
|
+
|
5
|
+
### 0.37.3 [[diff](https://github.com/YusukeIwaki/puppeteer-ruby/compare/0.37.2...0.37.3)]
|
6
|
+
|
7
|
+
Improvement:
|
8
|
+
|
9
|
+
- Improve the logic of detection of Chrome/Firefox executable path on Linux.
|
10
|
+
|
11
|
+
### 0.37.2 [[diff](https://github.com/YusukeIwaki/puppeteer-ruby/compare/0.37.1...0.37.2)]
|
12
|
+
|
13
|
+
Bugfix:
|
14
|
+
|
15
|
+
- `timeout: 0` did set the timeout value to zero. Now it disables the timeout as expected.
|
16
|
+
|
17
|
+
### 0.37.1 [[diff](https://github.com/YusukeIwaki/puppeteer-ruby/compare/0.37.0...0.37.1)]
|
18
|
+
|
19
|
+
Bugfix:
|
20
|
+
|
21
|
+
- Fix handle_SIGINT, handle_SIGTERM, handle_SIGHUP options to work with `false` value specified.
|
22
|
+
|
23
|
+
### 0.37.0 [[diff](https://github.com/YusukeIwaki/puppeteer-ruby/compare/0.36.0...0.37.0)]
|
24
|
+
|
25
|
+
New features:
|
26
|
+
|
27
|
+
- Some features introduced in Puppeteer 10.4
|
4
28
|
|
5
29
|
### 0.36.0 [[diff](https://github.com/YusukeIwaki/puppeteer-ruby/compare/0.35.1...0.36.0)]
|
6
30
|
|
7
31
|
New features:
|
8
32
|
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
33
|
+
- Drag and Drop feature introduced in Puppeteer 10.1
|
34
|
+
- `Page#emulateNetworkConditions`, `Page#emulateCPUThrottling`
|
35
|
+
- `Page#exposeFunction`
|
36
|
+
- Metrics
|
13
37
|
|
14
38
|
### 0.35.1 [[diff](https://github.com/YusukeIwaki/puppeteer-ruby/compare/0.35.0...0.35.1)]
|
15
39
|
|
16
40
|
New features:
|
17
41
|
|
18
|
-
|
42
|
+
- Allow Rails users to use this library without `require 'puppeteer'`.
|
19
43
|
|
20
44
|
### 0.35.0 [[diff](https://github.com/YusukeIwaki/puppeteer-ruby/compare/0.34.3...0.35.0)]
|
21
45
|
|
22
46
|
New features:
|
23
47
|
|
24
|
-
|
48
|
+
- Add `channel` parameter for Puppeteer.launch. Now `channel: chrome` or `channel: chrome-canary` (chrome-beta, chrome-dev is also available) automatically detects the executablePath of Google Chrome. Windows/macOS users can also use `channel: msedge`.
|
25
49
|
|
26
50
|
### 0.34.3 [[diff](https://github.com/YusukeIwaki/puppeteer-ruby/compare/0.34.2...0.34.3)]
|
27
51
|
|
28
52
|
Bugfix:
|
29
53
|
|
30
|
-
|
54
|
+
- Fix wait_for_xxx's timeout error type.
|
31
55
|
|
32
56
|
### 0.34.2 [[diff](https://github.com/YusukeIwaki/puppeteer-ruby/compare/0.34.1...0.34.2)]
|
33
57
|
|
34
58
|
New features:
|
35
59
|
|
36
|
-
|
60
|
+
- Add `Page#bring_to_front`.
|
37
61
|
|
38
62
|
### 0.34.1 [[diff](https://github.com/YusukeIwaki/puppeteer-ruby/compare/0.34.0...0.34.1)]
|
39
63
|
|
40
64
|
Bugfix:
|
41
65
|
|
42
|
-
|
66
|
+
- Fix `Page#pdf` to work without `path` parameter.
|
43
67
|
|
44
68
|
### 0.34.0 [[diff](https://github.com/YusukeIwaki/puppeteer-ruby/compare/0.33.0...0.34.0)]
|
45
69
|
|
46
70
|
New features:
|
47
71
|
|
48
|
-
|
72
|
+
- Sync API with block
|
49
73
|
|
50
74
|
### 0.33.0 [[diff](https://github.com/YusukeIwaki/puppeteer-ruby/compare/0.32.4...0.33.0)]
|
51
75
|
|
@@ -53,170 +77,169 @@ NOTE: Requires Ruby version >= 2.6 explicitly since this version.
|
|
53
77
|
|
54
78
|
Bugfix:
|
55
79
|
|
56
|
-
|
80
|
+
- Fix PDF options to work correctly on decimal numbers specified.
|
57
81
|
|
58
82
|
### 0.32.4 [[diff](https://github.com/YusukeIwaki/puppeteer-ruby/compare/0.32.3...0.32.4)]
|
59
83
|
|
60
84
|
Bugfix:
|
61
85
|
|
62
|
-
|
86
|
+
- Fix `#type_text` to input '<' correctly.
|
63
87
|
|
64
88
|
### 0.32.3 [[diff](https://github.com/YusukeIwaki/puppeteer-ruby/compare/0.32.2...0.32.3)]
|
65
89
|
|
66
90
|
Bugfix:
|
67
91
|
|
68
|
-
|
69
|
-
|
92
|
+
- Fix puppeteer-ruby to work on Rails in development mode.
|
70
93
|
|
71
94
|
### 0.32.2 [[diff](https://github.com/YusukeIwaki/puppeteer-ruby/compare/0.32.1...0.32.2)]
|
72
95
|
|
73
96
|
Bugfix:
|
74
97
|
|
75
|
-
|
98
|
+
- Fix full_page option in screenshot.
|
76
99
|
|
77
100
|
### 0.32.1 [[diff](https://github.com/YusukeIwaki/puppeteer-ruby/compare/0.32.0...0.32.1)]
|
78
101
|
|
79
102
|
Bugfix:
|
80
103
|
|
81
|
-
|
104
|
+
- Fix WebSocket to work with `wss://...` endpoint (ex. browserless.io)
|
82
105
|
|
83
106
|
### 0.32.0 [[diff](https://github.com/YusukeIwaki/puppeteer-ruby/compare/0.31.6...0.32.0)]
|
84
107
|
|
85
108
|
New features:
|
86
109
|
|
87
|
-
|
88
|
-
|
110
|
+
- Tracing
|
111
|
+
- JS/CSS coverages
|
89
112
|
|
90
113
|
Improvement:
|
91
114
|
|
92
|
-
|
115
|
+
- Increase stability [#92](https://github.com/YusukeIwaki/puppeteer-ruby/pull/92)
|
93
116
|
|
94
117
|
### 0.31.6 [[diff](https://github.com/YusukeIwaki/puppeteer-ruby/compare/0.31.5...0.31.6)]
|
95
118
|
|
96
119
|
Improvement:
|
97
120
|
|
98
|
-
|
121
|
+
- Increase stability [#87](https://github.com/YusukeIwaki/puppeteer-ruby/pull/87)
|
99
122
|
|
100
123
|
### 0.31.5 [[diff](https://github.com/YusukeIwaki/puppeteer-ruby/compare/0.31.4...0.31.5)]
|
101
124
|
|
102
125
|
Bugfix:
|
103
126
|
|
104
|
-
|
127
|
+
- Fix file uploading to work without crash.
|
105
128
|
|
106
129
|
### 0.31.4 [[diff](https://github.com/YusukeIwaki/puppeteer-ruby/compare/0.31.3...0.31.4)]
|
107
130
|
|
108
131
|
Bugfix:
|
109
132
|
|
110
|
-
|
133
|
+
- Fix PDF options (format, margin, omit_background) to work.
|
111
134
|
|
112
135
|
### 0.31.3 [[diff](https://github.com/YusukeIwaki/puppeteer-ruby/compare/0.31.1...0.31.3)]
|
113
136
|
|
114
137
|
Bugfix:
|
115
138
|
|
116
|
-
|
139
|
+
- Fix `wait_for_selector` to work. _It is strongly recommended to update for 0.29.0-0.31.x users._
|
117
140
|
|
118
141
|
### 0.31.1 [[diff](https://github.com/YusukeIwaki/puppeteer-ruby/compare/0.31.0...0.31.1)]
|
119
142
|
|
120
143
|
Bugfix:
|
121
144
|
|
122
|
-
|
145
|
+
- Fix `Page#pdf` to work on Windows.
|
123
146
|
|
124
147
|
### 0.31.0 [[diff](https://github.com/YusukeIwaki/puppeteer-ruby/compare/0.30.0...0.31.0)]
|
125
148
|
|
126
149
|
New features:
|
127
150
|
|
128
|
-
|
151
|
+
- Now puppeteer-ruby is compatible with Windows
|
129
152
|
|
130
153
|
Bugfix:
|
131
154
|
|
132
|
-
|
155
|
+
- Fix `Page#add_script_tag` and `Page#add_style_tag` to work
|
133
156
|
|
134
157
|
### 0.30.0 [[diff](https://github.com/YusukeIwaki/puppeteer-ruby/compare/0.29.0...0.30.0)]
|
135
158
|
|
136
159
|
New features:
|
137
160
|
|
138
|
-
|
161
|
+
- S, SS, Seval, SSeval is renamed to query_selector, query_selector_all, eval_on_selector, eval_on_selector_all
|
139
162
|
|
140
163
|
### 0.29.0 [[diff](https://github.com/YusukeIwaki/puppeteer-ruby/compare/0.28.1...0.29.0)]
|
141
164
|
|
142
165
|
New features:
|
143
166
|
|
144
|
-
|
167
|
+
- Add `AriaQueryHandler`. Now we can use "aria/...." for selectors.
|
145
168
|
|
146
169
|
### 0.28.1 [[diff](https://github.com/YusukeIwaki/puppeteer-ruby/compare/0.0.27...0.28.1)]
|
147
170
|
|
148
171
|
New features:
|
149
172
|
|
150
|
-
|
151
|
-
|
173
|
+
- Add `Page#emulate_idle_state`
|
174
|
+
- Change versioning rule.
|
152
175
|
|
153
176
|
### 0.0.27 [[diff](https://github.com/YusukeIwaki/puppeteer-ruby/compare/0.0.26...0.0.27)]
|
154
177
|
|
155
178
|
New features:
|
156
179
|
|
157
|
-
|
180
|
+
- Now puppeteer-ruby is Ruby 3.0 compatible!
|
158
181
|
|
159
182
|
### 0.0.26 [[diff](https://github.com/YusukeIwaki/puppeteer-ruby/compare/0.0.25...0.0.26)]
|
160
183
|
|
161
184
|
Bugfix:
|
162
185
|
|
163
|
-
|
186
|
+
- Fix `Page#screenshot` working correctly with `quality` parameter.
|
164
187
|
|
165
188
|
### 0.0.25 [[diff](https://github.com/YusukeIwaki/puppeteer-ruby/compare/0.0.23...0.0.25)]
|
166
189
|
|
167
190
|
New feature:
|
168
191
|
|
169
|
-
|
192
|
+
- **Cookie** feature: `Page#set_cookie`, `Page#cookies`
|
170
193
|
|
171
194
|
### 0.0.23 [[diff](https://github.com/YusukeIwaki/puppeteer-ruby/compare/0.0.22...0.0.23)]
|
172
195
|
|
173
196
|
New feature:
|
174
197
|
|
175
|
-
|
176
|
-
|
198
|
+
- **GeoLocation** feature
|
199
|
+
- grant/clear permission
|
177
200
|
|
178
201
|
Bugfix/Improvement:
|
179
202
|
|
180
|
-
|
181
|
-
|
203
|
+
- Refactoring for events ([#31](https://github.com/YusukeIwaki/puppeteer-ruby/pull/31))
|
204
|
+
- Improve SEND/RECV handling in CDPSession ([#34](https://github.com/YusukeIwaki/puppeteer-ruby/pull/34))
|
182
205
|
|
183
206
|
### 0.0.22 [[diff](https://github.com/YusukeIwaki/puppeteer-ruby/compare/0.0.21...0.0.22)]
|
184
207
|
|
185
208
|
Bugfix
|
186
209
|
|
187
|
-
|
188
|
-
|
189
|
-
|
210
|
+
- Make `Puppeteer#default_args` to work
|
211
|
+
- Respect Firefox launch options
|
212
|
+
- Respect `default_viewport: nil`
|
190
213
|
|
191
214
|
### 0.0.21 [[diff](https://github.com/YusukeIwaki/puppeteer-ruby/compare/0.0.20...0.0.21)]
|
192
215
|
|
193
216
|
Bugfix/Improvement:
|
194
217
|
|
195
|
-
|
196
|
-
|
218
|
+
- Update DeviceDescriptors (list of emulatable devices)
|
219
|
+
- Fix bug on inputing "(" ([#25](https://github.com/YusukeIwaki/puppeteer-ruby/pull/25))
|
197
220
|
|
198
221
|
### 0.0.20 [[diff](https://github.com/YusukeIwaki/puppeteer-ruby/compare/0.0.19...0.0.20)]
|
199
222
|
|
200
223
|
New feature
|
201
224
|
|
202
|
-
|
225
|
+
- Dialog-handling feature
|
203
226
|
|
204
227
|
### 0.0.19 [[diff](https://github.com/YusukeIwaki/puppeteer-ruby/compare/0.0.18...0.0.19)]
|
205
228
|
|
206
229
|
New feature
|
207
230
|
|
208
|
-
|
231
|
+
- **Firefox support**
|
209
232
|
|
210
233
|
Bugfix/Improvement
|
211
234
|
|
212
|
-
|
235
|
+
- Allow `Page#keyboard` with block ([#18](https://github.com/YusukeIwaki/puppeteer-ruby/pull/18))
|
213
236
|
|
214
237
|
### 0.0.18 [[diff](https://github.com/YusukeIwaki/puppeteer-ruby/compare/0.0.17...0.0.18)]
|
215
238
|
|
216
239
|
New feature
|
217
240
|
|
218
|
-
|
241
|
+
- **Firefox support**
|
219
242
|
|
220
243
|
Bugfix/Improvement
|
221
244
|
|
222
|
-
|
245
|
+
- Allow `Page#keyboard` with block ([#18](https://github.com/YusukeIwaki/puppeteer-ruby/pull/18))
|
data/README.md
CHANGED
@@ -41,7 +41,7 @@ NOTE: `require 'puppeteer-ruby'` is not necessary in Rails.
|
|
41
41
|
```ruby
|
42
42
|
require 'puppeteer-ruby'
|
43
43
|
|
44
|
-
Puppeteer.launch(headless: false, slow_mo: 50, args: ['--
|
44
|
+
Puppeteer.launch(headless: false, slow_mo: 50, args: ['--window-size=1280,800']) do |browser|
|
45
45
|
page = browser.new_page
|
46
46
|
page.viewport = Puppeteer::Viewport.new(width: 1280, height: 800)
|
47
47
|
page.goto("https://github.com/", wait_until: 'domcontentloaded')
|
@@ -156,6 +156,75 @@ RSpec.describe 'hotel.testplanisphere.dev', type: :feature do
|
|
156
156
|
|
157
157
|
The detailed step of configuration can be found [here](https://github.com/YusukeIwaki/puppeteer-ruby-example/tree/master/_with_capybara-rspec).
|
158
158
|
|
159
|
+
## :bulb: Use Puppeteer methods simply without Capybara::DSL
|
160
|
+
|
161
|
+
We can also use puppeteer-ruby as it is without Capybara DSL. When you want to just test a Rails application simply with Puppeteer, refer this section.
|
162
|
+
|
163
|
+
Also, if you have trouble with handling flaky/unstable testcases in existing feature/system specs, consider replacing Capybara::DSL with raw puppeteer-ruby codes like `page.wait_for_selector(...)` or `page.wait_for_navigation { ... }`.
|
164
|
+
|
165
|
+
Capybara prepares test server even when Capybara DSL is not used.
|
166
|
+
|
167
|
+
Sample configuration is shown below. You can use it by putting the file at `spec/support/puppeteer_ruby.rb` or another location where RSpec loads on initialization.
|
168
|
+
|
169
|
+
```ruby
|
170
|
+
RSpec.configure do |config|
|
171
|
+
require 'capybara'
|
172
|
+
|
173
|
+
# This driver only requests Capybara to launch test server.
|
174
|
+
# Remark that no Capybara::DSL is available with this driver.
|
175
|
+
class CapybaraNullDriver < Capybara::Driver::Base
|
176
|
+
def needs_server?
|
177
|
+
true
|
178
|
+
end
|
179
|
+
end
|
180
|
+
|
181
|
+
Capybara.register_driver(:null) { CapybaraNullDriver.new }
|
182
|
+
|
183
|
+
config.around(driver: :null) do |example|
|
184
|
+
Capybara.current_driver = :null
|
185
|
+
|
186
|
+
# Rails server is launched here,
|
187
|
+
# (at the first time of accessing Capybara.current_session.server)
|
188
|
+
@base_url = Capybara.current_session.server.base_url
|
189
|
+
|
190
|
+
require 'puppeteer'
|
191
|
+
launch_options = {
|
192
|
+
# Use launch options as you like.
|
193
|
+
channel: :chrome,
|
194
|
+
headless: false,
|
195
|
+
}
|
196
|
+
Puppeteer.launch(**launch_options) do |browser|
|
197
|
+
@puppeteer_page = browser.new_page
|
198
|
+
example.run
|
199
|
+
end
|
200
|
+
|
201
|
+
Capybara.reset_sessions!
|
202
|
+
Capybara.use_default_driver
|
203
|
+
end
|
204
|
+
end
|
205
|
+
```
|
206
|
+
|
207
|
+
Now, we can work with integration test using `Puppeteer::Page` in puppeteer-ruby.
|
208
|
+
|
209
|
+
```ruby
|
210
|
+
RSpec.describe 'Sample integration tests', driver: :null do
|
211
|
+
let(:page) { @puppeteer_page }
|
212
|
+
let(:base_url) { @base_url }
|
213
|
+
|
214
|
+
it 'should work with Puppeteer' do
|
215
|
+
# null driver only launches server, and Capybara::DSL is unavailable.
|
216
|
+
expect { visit '/' }.to raise_error(/NotImplementedError/)
|
217
|
+
|
218
|
+
page.goto("#{base_url}/")
|
219
|
+
|
220
|
+
# Automation with Puppeteer
|
221
|
+
h1_text = page.eval_on_selector('h1', '(el) => el.textContent')
|
222
|
+
expect(h1_text).to eq('It works!')
|
223
|
+
end
|
224
|
+
end
|
225
|
+
```
|
226
|
+
|
227
|
+
|
159
228
|
## API
|
160
229
|
|
161
230
|
https://yusukeiwaki.github.io/puppeteer-ruby-docs/
|
data/docs/api_coverage.md
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
# API coverages
|
2
|
-
- Puppeteer version:
|
3
|
-
- puppeteer-ruby version: 0.
|
2
|
+
- Puppeteer version: v12.0.0
|
3
|
+
- puppeteer-ruby version: 0.37.3
|
4
4
|
|
5
5
|
## Puppeteer
|
6
6
|
|
@@ -134,8 +134,10 @@
|
|
134
134
|
* viewport
|
135
135
|
* ~~waitFor~~
|
136
136
|
* waitForFileChooser => `#wait_for_file_chooser`
|
137
|
+
* ~~waitForFrame~~
|
137
138
|
* waitForFunction => `#wait_for_function`
|
138
139
|
* waitForNavigation => `#wait_for_navigation`
|
140
|
+
* ~~waitForNetworkIdle~~
|
139
141
|
* waitForRequest => `#wait_for_request`
|
140
142
|
* waitForResponse => `#wait_for_response`
|
141
143
|
* waitForSelector => `#wait_for_selector`
|
@@ -225,6 +227,7 @@
|
|
225
227
|
* goto
|
226
228
|
* hover
|
227
229
|
* isDetached => `#detached?`
|
230
|
+
* ~~isOOPFrame~~
|
228
231
|
* name
|
229
232
|
* parentFrame => `#parent_frame`
|
230
233
|
* select
|
@@ -294,43 +297,44 @@
|
|
294
297
|
* type => `#type_text`
|
295
298
|
* uploadFile => `#upload_file`
|
296
299
|
|
297
|
-
##
|
298
|
-
|
299
|
-
*
|
300
|
-
*
|
301
|
-
*
|
302
|
-
*
|
303
|
-
*
|
304
|
-
*
|
305
|
-
*
|
306
|
-
*
|
307
|
-
*
|
308
|
-
* ~~
|
309
|
-
*
|
310
|
-
*
|
311
|
-
*
|
312
|
-
*
|
313
|
-
*
|
314
|
-
*
|
315
|
-
*
|
316
|
-
*
|
300
|
+
## HTTPRequest
|
301
|
+
|
302
|
+
* abort
|
303
|
+
* abortErrorReason => `#abort_error_reason`
|
304
|
+
* continue
|
305
|
+
* continueRequestOverrides => `#continue_request_overrides`
|
306
|
+
* enqueueInterceptAction => `#enqueue_intercept_action`
|
307
|
+
* failure
|
308
|
+
* finalizeInterceptions => `#finalize_interceptions`
|
309
|
+
* frame
|
310
|
+
* headers
|
311
|
+
* ~~initiator~~
|
312
|
+
* isNavigationRequest => `#navigation_request?`
|
313
|
+
* method
|
314
|
+
* postData => `#post_data`
|
315
|
+
* redirectChain => `#redirect_chain`
|
316
|
+
* resourceType => `#resource_type`
|
317
|
+
* respond
|
318
|
+
* response
|
319
|
+
* responseForRequest => `#response_for_request`
|
320
|
+
* url
|
317
321
|
|
318
|
-
##
|
322
|
+
## HTTPResponse
|
319
323
|
|
320
|
-
*
|
321
|
-
*
|
324
|
+
* buffer
|
325
|
+
* frame
|
322
326
|
* ~~fromCache~~
|
323
327
|
* ~~fromServiceWorker~~
|
324
|
-
*
|
325
|
-
*
|
328
|
+
* headers
|
329
|
+
* json
|
326
330
|
* ~~ok~~
|
327
|
-
*
|
328
|
-
*
|
329
|
-
*
|
330
|
-
*
|
331
|
-
*
|
332
|
-
*
|
333
|
-
*
|
331
|
+
* remoteAddress => `#remote_address`
|
332
|
+
* request
|
333
|
+
* securityDetails => `#security_details`
|
334
|
+
* status
|
335
|
+
* statusText => `#status_text`
|
336
|
+
* text
|
337
|
+
* url
|
334
338
|
|
335
339
|
## ~~SecurityDetails~~
|
336
340
|
|
@@ -356,6 +360,7 @@
|
|
356
360
|
|
357
361
|
* connection
|
358
362
|
* detach
|
363
|
+
* ~~id~~
|
359
364
|
* send
|
360
365
|
|
361
366
|
## Coverage
|
data/lib/puppeteer/browser.rb
CHANGED
@@ -223,7 +223,7 @@ class Puppeteer::Browser
|
|
223
223
|
# @param predicate [Proc(Puppeteer::Target -> Boolean)]
|
224
224
|
# @return [Puppeteer::Target]
|
225
225
|
def wait_for_target(predicate:, timeout: nil)
|
226
|
-
|
226
|
+
timeout_helper = Puppeteer::TimeoutHelper.new('target', timeout_ms: timeout, default_timeout_ms: 30000)
|
227
227
|
existing_target = targets.find { |target| predicate.call(target) }
|
228
228
|
return existing_target if existing_target
|
229
229
|
|
@@ -241,15 +241,9 @@ class Puppeteer::Browser
|
|
241
241
|
end
|
242
242
|
|
243
243
|
begin
|
244
|
-
|
245
|
-
Timeout.timeout(timeout_in_sec) do
|
246
|
-
target_promise.value!
|
247
|
-
end
|
248
|
-
else
|
244
|
+
timeout_helper.with_timeout do
|
249
245
|
target_promise.value!
|
250
246
|
end
|
251
|
-
rescue Timeout::Error
|
252
|
-
raise Puppeteer::TimeoutError.new("waiting for target failed: timeout #{timeout}ms exceeded")
|
253
247
|
ensure
|
254
248
|
remove_event_listener(*event_listening_ids)
|
255
249
|
end
|
@@ -74,6 +74,7 @@ class Puppeteer::BrowserContext
|
|
74
74
|
'clipboard-read' => 'clipboardReadWrite',
|
75
75
|
'clipboard-write' => 'clipboardReadWrite',
|
76
76
|
'payment-handler' => 'paymentHandler',
|
77
|
+
'persistent-storage' => 'durableStorage',
|
77
78
|
'idle-detection' => 'idleDetection',
|
78
79
|
# chrome-specific permissions we have.
|
79
80
|
'midi-sysex' => 'midiSysex',
|
data/lib/puppeteer/coverage.rb
CHANGED
@@ -5,10 +5,14 @@ class Puppeteer::Coverage
|
|
5
5
|
@css = Puppeteer::CSSCoverage.new(client)
|
6
6
|
end
|
7
7
|
|
8
|
-
def start_js_coverage(
|
8
|
+
def start_js_coverage(
|
9
|
+
reset_on_navigation: nil,
|
10
|
+
report_anonymous_scripts: nil,
|
11
|
+
include_raw_script_coverage: nil)
|
9
12
|
@js.start(
|
10
13
|
reset_on_navigation: reset_on_navigation,
|
11
14
|
report_anonymous_scripts: report_anonymous_scripts,
|
15
|
+
include_raw_script_coverage: include_raw_script_coverage,
|
12
16
|
)
|
13
17
|
end
|
14
18
|
|
@@ -16,7 +20,11 @@ class Puppeteer::Coverage
|
|
16
20
|
@js.stop
|
17
21
|
end
|
18
22
|
|
19
|
-
def js_coverage(
|
23
|
+
def js_coverage(
|
24
|
+
reset_on_navigation: nil,
|
25
|
+
report_anonymous_scripts: nil,
|
26
|
+
include_raw_script_coverage: nil,
|
27
|
+
&block)
|
20
28
|
unless block
|
21
29
|
raise ArgumentError.new('Block must be given')
|
22
30
|
end
|
@@ -24,6 +32,7 @@ class Puppeteer::Coverage
|
|
24
32
|
start_js_coverage(
|
25
33
|
reset_on_navigation: reset_on_navigation,
|
26
34
|
report_anonymous_scripts: report_anonymous_scripts,
|
35
|
+
include_raw_script_coverage: include_raw_script_coverage,
|
27
36
|
)
|
28
37
|
block.call
|
29
38
|
stop_js_coverage
|