puppeteer-ruby 0.0.3 → 0.0.8

Sign up to get free protection for your applications and to get access to all the features.
Files changed (125) hide show
  1. checksums.yaml +4 -4
  2. data/.circleci/config.yml +30 -0
  3. data/.github/stale.yml +16 -0
  4. data/.rubocop.yml +4 -5
  5. data/README.md +4 -1
  6. data/docs/Puppeteer.html +2020 -0
  7. data/docs/Puppeteer/AsyncAwaitBehavior.html +105 -0
  8. data/docs/Puppeteer/Browser.html +2150 -0
  9. data/docs/Puppeteer/BrowserContext.html +809 -0
  10. data/docs/Puppeteer/BrowserFetcher.html +214 -0
  11. data/docs/Puppeteer/BrowserRunner.html +914 -0
  12. data/docs/Puppeteer/BrowserRunner/BrowserProcess.html +477 -0
  13. data/docs/Puppeteer/CDPSession.html +813 -0
  14. data/docs/Puppeteer/CDPSession/Error.html +124 -0
  15. data/docs/Puppeteer/ConcurrentRubyUtils.html +430 -0
  16. data/docs/Puppeteer/Connection.html +960 -0
  17. data/docs/Puppeteer/Connection/MessageCallback.html +434 -0
  18. data/docs/Puppeteer/Connection/ProtocolError.html +216 -0
  19. data/docs/Puppeteer/Connection/RequestDebugPrinter.html +217 -0
  20. data/docs/Puppeteer/Connection/ResponseDebugPrinter.html +244 -0
  21. data/docs/Puppeteer/ConsoleMessage.html +565 -0
  22. data/docs/Puppeteer/ConsoleMessage/Location.html +433 -0
  23. data/docs/Puppeteer/DOMWorld.html +2219 -0
  24. data/docs/Puppeteer/DOMWorld/DetachedError.html +124 -0
  25. data/docs/Puppeteer/DOMWorld/DocumentEvaluationError.html +124 -0
  26. data/docs/Puppeteer/DebugPrint.html +233 -0
  27. data/docs/Puppeteer/Device.html +470 -0
  28. data/docs/Puppeteer/Devices.html +139 -0
  29. data/docs/Puppeteer/ElementHandle.html +2224 -0
  30. data/docs/Puppeteer/ElementHandle/ElementNotFoundError.html +206 -0
  31. data/docs/Puppeteer/ElementHandle/ElementNotVisibleError.html +206 -0
  32. data/docs/Puppeteer/ElementHandle/Point.html +481 -0
  33. data/docs/Puppeteer/ElementHandle/ScrollIntoViewError.html +124 -0
  34. data/docs/Puppeteer/EmulationManager.html +454 -0
  35. data/docs/Puppeteer/EventCallbackable.html +433 -0
  36. data/docs/Puppeteer/EventCallbackable/EventListeners.html +435 -0
  37. data/docs/Puppeteer/ExecutionContext.html +998 -0
  38. data/docs/Puppeteer/ExecutionContext/EvaluationError.html +124 -0
  39. data/docs/Puppeteer/ExecutionContext/JavaScriptExpression.html +357 -0
  40. data/docs/Puppeteer/ExecutionContext/JavaScriptFunction.html +389 -0
  41. data/docs/Puppeteer/FileChooser.html +455 -0
  42. data/docs/Puppeteer/Frame.html +3677 -0
  43. data/docs/Puppeteer/FrameManager.html +2414 -0
  44. data/docs/Puppeteer/FrameManager/NavigationError.html +124 -0
  45. data/docs/Puppeteer/IfPresent.html +222 -0
  46. data/docs/Puppeteer/JSHandle.html +1352 -0
  47. data/docs/Puppeteer/Keyboard.html +1557 -0
  48. data/docs/Puppeteer/Keyboard/KeyDefinition.html +831 -0
  49. data/docs/Puppeteer/Keyboard/KeyDescription.html +603 -0
  50. data/docs/Puppeteer/Launcher.html +237 -0
  51. data/docs/Puppeteer/Launcher/Base.html +385 -0
  52. data/docs/Puppeteer/Launcher/Base/ExecutablePathNotFound.html +124 -0
  53. data/docs/Puppeteer/Launcher/BrowserOptions.html +441 -0
  54. data/docs/Puppeteer/Launcher/Chrome.html +669 -0
  55. data/docs/Puppeteer/Launcher/Chrome/DefaultArgs.html +382 -0
  56. data/docs/Puppeteer/Launcher/ChromeArgOptions.html +531 -0
  57. data/docs/Puppeteer/Launcher/LaunchOptions.html +893 -0
  58. data/docs/Puppeteer/LifecycleWatcher.html +834 -0
  59. data/docs/Puppeteer/LifecycleWatcher/ExpectedLifecycle.html +363 -0
  60. data/docs/Puppeteer/LifecycleWatcher/FrameDetachedError.html +206 -0
  61. data/docs/Puppeteer/LifecycleWatcher/TerminatedError.html +124 -0
  62. data/docs/Puppeteer/Mouse.html +1105 -0
  63. data/docs/Puppeteer/Mouse/Button.html +136 -0
  64. data/docs/Puppeteer/NetworkManager.html +901 -0
  65. data/docs/Puppeteer/NetworkManager/Credentials.html +385 -0
  66. data/docs/Puppeteer/Page.html +5970 -0
  67. data/docs/Puppeteer/Page/FileChooserTimeoutError.html +206 -0
  68. data/docs/Puppeteer/Page/ScreenshotOptions.html +845 -0
  69. data/docs/Puppeteer/Page/ScriptTag.html +555 -0
  70. data/docs/Puppeteer/Page/StyleTag.html +448 -0
  71. data/docs/Puppeteer/Page/TargetCrashedError.html +124 -0
  72. data/docs/Puppeteer/RemoteObject.html +1016 -0
  73. data/docs/Puppeteer/Target.html +1384 -0
  74. data/docs/Puppeteer/Target/InitializeFailure.html +124 -0
  75. data/docs/Puppeteer/Target/TargetInfo.html +729 -0
  76. data/docs/Puppeteer/TimeoutError.html +135 -0
  77. data/docs/Puppeteer/TimeoutSettings.html +496 -0
  78. data/docs/Puppeteer/TouchScreen.html +464 -0
  79. data/docs/Puppeteer/Viewport.html +757 -0
  80. data/docs/Puppeteer/WaitTask.html +637 -0
  81. data/docs/Puppeteer/WaitTask/TerminatedError.html +124 -0
  82. data/docs/Puppeteer/WaitTask/TimeoutError.html +206 -0
  83. data/docs/Puppeteer/WebSocket.html +673 -0
  84. data/docs/Puppeteer/WebSocket/DriverImpl.html +412 -0
  85. data/docs/Puppeteer/WebSocketTransport.html +600 -0
  86. data/docs/Puppeteer/WebSocktTransportError.html +124 -0
  87. data/docs/_index.html +809 -0
  88. data/docs/class_list.html +51 -0
  89. data/docs/css/common.css +1 -0
  90. data/docs/css/full_list.css +58 -0
  91. data/docs/css/style.css +496 -0
  92. data/docs/file.README.html +123 -0
  93. data/docs/file_list.html +56 -0
  94. data/docs/frames.html +17 -0
  95. data/docs/index.html +123 -0
  96. data/docs/js/app.js +314 -0
  97. data/docs/js/full_list.js +216 -0
  98. data/docs/js/jquery.js +4 -0
  99. data/docs/method_list.html +3979 -0
  100. data/docs/top-level-namespace.html +126 -0
  101. data/lib/puppeteer.rb +16 -8
  102. data/lib/puppeteer/async_await_behavior.rb +6 -0
  103. data/lib/puppeteer/browser.rb +21 -1
  104. data/lib/puppeteer/browser_runner.rb +1 -1
  105. data/lib/puppeteer/cdp_session.rb +33 -11
  106. data/lib/puppeteer/connection.rb +1 -1
  107. data/lib/puppeteer/dom_world.rb +142 -121
  108. data/lib/puppeteer/element_handle.rb +223 -181
  109. data/lib/puppeteer/execution_context.rb +41 -17
  110. data/lib/puppeteer/file_chooser.rb +29 -0
  111. data/lib/puppeteer/frame.rb +23 -15
  112. data/lib/puppeteer/frame_manager.rb +7 -9
  113. data/lib/puppeteer/js_handle.rb +3 -3
  114. data/lib/puppeteer/keyboard.rb +1 -1
  115. data/lib/puppeteer/keyboard/us_keyboard_layout.rb +4 -4
  116. data/lib/puppeteer/launcher.rb +0 -1
  117. data/lib/puppeteer/launcher/chrome.rb +48 -2
  118. data/lib/puppeteer/lifecycle_watcher.rb +9 -4
  119. data/lib/puppeteer/mouse.rb +10 -7
  120. data/lib/puppeteer/page.rb +134 -70
  121. data/lib/puppeteer/remote_object.rb +11 -1
  122. data/lib/puppeteer/version.rb +1 -1
  123. data/lib/puppeteer/wait_task.rb +183 -1
  124. data/puppeteer-ruby.gemspec +4 -1
  125. metadata +143 -4
@@ -52,11 +52,16 @@ class Puppeteer::RemoteObject
52
52
  client.send_message('Runtime.getProperties', objectId: @object_id, ownProperties: true)
53
53
  end
54
54
 
55
- # used in ElementHandle#content_frame
55
+ # used in ElementHandle#content_frame, ElementHandle#upload_file
56
56
  def node_info(client)
57
57
  client.send_message('DOM.describeNode', objectId: @object_id)
58
58
  end
59
59
 
60
+ # used in ElementHandle#clickable_point
61
+ def content_quads(client)
62
+ client.send_message('DOM.getContentQuads', objectId: @object_id)
63
+ end
64
+
60
65
  # helper#valueFromRemoteObject
61
66
  def value
62
67
  if @unserializable_value
@@ -121,4 +126,9 @@ class Puppeteer::RemoteObject
121
126
  { value: value }
122
127
  end
123
128
  end
129
+
130
+ # used in ElementHandle#upload_file
131
+ def set_file_input_files(client, files, backend_node_id)
132
+ client.send_message('DOM.setFileInputFiles', objectId: @object_id, files: files, backendNodeId: backend_node_id)
133
+ end
124
134
  end
@@ -1,3 +1,3 @@
1
1
  class Puppeteer
2
- VERSION = '0.0.3'
2
+ VERSION = '0.0.8'
3
3
  end
@@ -1,6 +1,188 @@
1
1
  class Puppeteer::WaitTask
2
+ using Puppeteer::AsyncAwaitBehavior
3
+
2
4
  class TerminatedError < StandardError; end
3
5
 
4
- def initialize
6
+ class TimeoutError < StandardError
7
+ def initialize(title:, timeout:)
8
+ super("waiting for #{title} failed: timeout #{timeout}ms exceeded")
9
+ end
10
+ end
11
+
12
+ def initialize(dom_world:, predicate_body:, title:, polling:, timeout:, args: [])
13
+ if polling.is_a?(String)
14
+ if polling != 'raf' && polling != 'mutation'
15
+ raise ArgumentError.new("Unknown polling option: #{polling}")
16
+ end
17
+ elsif polling.is_a?(Numeric)
18
+ unless polling.positive?
19
+ raise ArgumentError.new("Cannot poll with non-positive interval: #{polling}")
20
+ end
21
+ else
22
+ raise ArgumentError.new("Unknown polling options: #{polling}")
23
+ end
24
+
25
+ @dom_world = dom_world
26
+ @polling = polling
27
+ @timeout = timeout
28
+ @predicate_body = predicate_body
29
+ @args = args
30
+ @run_count = 0
31
+ @dom_world._wait_tasks.add(self)
32
+ @promise = resolvable_future
33
+
34
+ # Since page navigation requires us to re-install the pageScript, we should track
35
+ # timeout on our end.
36
+ if timeout
37
+ timeout_error = TimeoutError.new(title: title, timeout: timeout)
38
+ Concurrent::Promises.schedule(timeout / 1000.0) { terminate(timeout_error) unless @timeout_cleared }
39
+ end
40
+ async_rerun
41
+ end
42
+
43
+ # @return [Puppeteer::JSHandle]
44
+ def await_promise
45
+ @promise.value!
46
+ end
47
+
48
+ def terminate(error)
49
+ @terminated = true
50
+ @promise.reject(error)
51
+ cleanup
52
+ end
53
+
54
+ def rerun
55
+ run_count = (@run_count += 1)
56
+ begin
57
+ success = @dom_world.execution_context.evaluate_handle(
58
+ WAIT_FOR_PREDICATE_PAGE_FUNCTION,
59
+ @predicate_body,
60
+ @polling,
61
+ @timeout,
62
+ *@args,
63
+ )
64
+ rescue => err
65
+ error = err
66
+ end
67
+
68
+ if @terminated || run_count != @run_count
69
+ if success
70
+ success.dispose
71
+ end
72
+ return
73
+ end
74
+
75
+ # Ignore timeouts in pageScript - we track timeouts ourselves.
76
+ # If the frame's execution context has already changed, `frame.evaluate` will
77
+ # throw an error - ignore this predicate run altogether.
78
+ if !error && (@dom_world.evaluate("s => !s", success) rescue true)
79
+ success.dispose
80
+ return
81
+ end
82
+
83
+ # When the page is navigated, the promise is rejected.
84
+ # We will try again in the new execution context.
85
+ if error && error.message.include?('Execution context was destroyed')
86
+ return
87
+ end
88
+
89
+ # We could have tried to evaluate in a context which was already
90
+ # destroyed.
91
+ if error && error.message.include?('Cannot find context with specified id')
92
+ return
93
+ end
94
+
95
+ if error
96
+ @promise.reject(error)
97
+ else
98
+ @promise.fulfill(success)
99
+ end
100
+
101
+ cleanup
5
102
  end
103
+
104
+ private def cleanup
105
+ @timeout_cleared = true
106
+ @dom_world._wait_tasks.delete(self)
107
+ end
108
+
109
+ private async def async_rerun
110
+ rerun
111
+ end
112
+
113
+ WAIT_FOR_PREDICATE_PAGE_FUNCTION = <<~JAVASCRIPT
114
+ async function _(predicateBody, polling, timeout, ...args) {
115
+ const predicate = new Function('...args', predicateBody);
116
+ let timedOut = false;
117
+ if (timeout)
118
+ setTimeout(() => (timedOut = true), timeout);
119
+ if (polling === 'raf')
120
+ return await pollRaf();
121
+ if (polling === 'mutation')
122
+ return await pollMutation();
123
+ if (typeof polling === 'number')
124
+ return await pollInterval(polling);
125
+ /**
126
+ * @return {!Promise<*>}
127
+ */
128
+ function pollMutation() {
129
+ const success = predicate(...args);
130
+ if (success)
131
+ return Promise.resolve(success);
132
+ let fulfill;
133
+ const result = new Promise((x) => (fulfill = x));
134
+ const observer = new MutationObserver(() => {
135
+ if (timedOut) {
136
+ observer.disconnect();
137
+ fulfill();
138
+ }
139
+ const success = predicate(...args);
140
+ if (success) {
141
+ observer.disconnect();
142
+ fulfill(success);
143
+ }
144
+ });
145
+ observer.observe(document, {
146
+ childList: true,
147
+ subtree: true,
148
+ attributes: true,
149
+ });
150
+ return result;
151
+ }
152
+ function pollRaf() {
153
+ let fulfill;
154
+ const result = new Promise((x) => (fulfill = x));
155
+ onRaf();
156
+ return result;
157
+ function onRaf() {
158
+ if (timedOut) {
159
+ fulfill();
160
+ return;
161
+ }
162
+ const success = predicate(...args);
163
+ if (success)
164
+ fulfill(success);
165
+ else
166
+ requestAnimationFrame(onRaf);
167
+ }
168
+ }
169
+ function pollInterval(pollInterval) {
170
+ let fulfill;
171
+ const result = new Promise((x) => (fulfill = x));
172
+ onTimeout();
173
+ return result;
174
+ function onTimeout() {
175
+ if (timedOut) {
176
+ fulfill();
177
+ return;
178
+ }
179
+ const success = predicate(...args);
180
+ if (success)
181
+ fulfill(success);
182
+ else
183
+ setTimeout(onTimeout, pollInterval);
184
+ }
185
+ }
186
+ }
187
+ JAVASCRIPT
6
188
  end
@@ -25,5 +25,8 @@ Gem::Specification.new do |spec|
25
25
  spec.add_development_dependency 'pry-byebug'
26
26
  spec.add_development_dependency 'rake', '~> 10.0'
27
27
  spec.add_development_dependency 'rspec', '~> 3.0'
28
- spec.add_development_dependency 'rubocop', '~> 0.80.0'
28
+ spec.add_development_dependency 'rspec_junit_formatter' # for CircleCI.
29
+ spec.add_development_dependency 'rubocop', '~> 0.82.0'
30
+ spec.add_development_dependency 'rubocop-rspec'
31
+ spec.add_development_dependency 'yard'
29
32
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: puppeteer-ruby
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.3
4
+ version: 0.0.8
5
5
  platform: ruby
6
6
  authors:
7
7
  - YusukeIwaki
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2020-04-12 00:00:00.000000000 Z
11
+ date: 2020-06-05 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: concurrent-ruby
@@ -108,20 +108,62 @@ dependencies:
108
108
  - - "~>"
109
109
  - !ruby/object:Gem::Version
110
110
  version: '3.0'
111
+ - !ruby/object:Gem::Dependency
112
+ name: rspec_junit_formatter
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'
111
125
  - !ruby/object:Gem::Dependency
112
126
  name: rubocop
113
127
  requirement: !ruby/object:Gem::Requirement
114
128
  requirements:
115
129
  - - "~>"
116
130
  - !ruby/object:Gem::Version
117
- version: 0.80.0
131
+ version: 0.82.0
118
132
  type: :development
119
133
  prerelease: false
120
134
  version_requirements: !ruby/object:Gem::Requirement
121
135
  requirements:
122
136
  - - "~>"
123
137
  - !ruby/object:Gem::Version
124
- version: 0.80.0
138
+ version: 0.82.0
139
+ - !ruby/object:Gem::Dependency
140
+ name: rubocop-rspec
141
+ requirement: !ruby/object:Gem::Requirement
142
+ requirements:
143
+ - - ">="
144
+ - !ruby/object:Gem::Version
145
+ version: '0'
146
+ type: :development
147
+ prerelease: false
148
+ version_requirements: !ruby/object:Gem::Requirement
149
+ requirements:
150
+ - - ">="
151
+ - !ruby/object:Gem::Version
152
+ version: '0'
153
+ - !ruby/object:Gem::Dependency
154
+ name: yard
155
+ requirement: !ruby/object:Gem::Requirement
156
+ requirements:
157
+ - - ">="
158
+ - !ruby/object:Gem::Version
159
+ version: '0'
160
+ type: :development
161
+ prerelease: false
162
+ version_requirements: !ruby/object:Gem::Requirement
163
+ requirements:
164
+ - - ">="
165
+ - !ruby/object:Gem::Version
166
+ version: '0'
125
167
  description:
126
168
  email:
127
169
  - q7w8e9w8q7w8e9@yahoo.co.jp
@@ -130,6 +172,7 @@ extensions: []
130
172
  extra_rdoc_files: []
131
173
  files:
132
174
  - ".circleci/config.yml"
175
+ - ".github/stale.yml"
133
176
  - ".gitignore"
134
177
  - ".rspec"
135
178
  - ".rubocop.yml"
@@ -141,6 +184,101 @@ files:
141
184
  - bin/console
142
185
  - bin/setup
143
186
  - docker-compose.yml
187
+ - docs/Puppeteer.html
188
+ - docs/Puppeteer/AsyncAwaitBehavior.html
189
+ - docs/Puppeteer/Browser.html
190
+ - docs/Puppeteer/BrowserContext.html
191
+ - docs/Puppeteer/BrowserFetcher.html
192
+ - docs/Puppeteer/BrowserRunner.html
193
+ - docs/Puppeteer/BrowserRunner/BrowserProcess.html
194
+ - docs/Puppeteer/CDPSession.html
195
+ - docs/Puppeteer/CDPSession/Error.html
196
+ - docs/Puppeteer/ConcurrentRubyUtils.html
197
+ - docs/Puppeteer/Connection.html
198
+ - docs/Puppeteer/Connection/MessageCallback.html
199
+ - docs/Puppeteer/Connection/ProtocolError.html
200
+ - docs/Puppeteer/Connection/RequestDebugPrinter.html
201
+ - docs/Puppeteer/Connection/ResponseDebugPrinter.html
202
+ - docs/Puppeteer/ConsoleMessage.html
203
+ - docs/Puppeteer/ConsoleMessage/Location.html
204
+ - docs/Puppeteer/DOMWorld.html
205
+ - docs/Puppeteer/DOMWorld/DetachedError.html
206
+ - docs/Puppeteer/DOMWorld/DocumentEvaluationError.html
207
+ - docs/Puppeteer/DebugPrint.html
208
+ - docs/Puppeteer/Device.html
209
+ - docs/Puppeteer/Devices.html
210
+ - docs/Puppeteer/ElementHandle.html
211
+ - docs/Puppeteer/ElementHandle/ElementNotFoundError.html
212
+ - docs/Puppeteer/ElementHandle/ElementNotVisibleError.html
213
+ - docs/Puppeteer/ElementHandle/Point.html
214
+ - docs/Puppeteer/ElementHandle/ScrollIntoViewError.html
215
+ - docs/Puppeteer/EmulationManager.html
216
+ - docs/Puppeteer/EventCallbackable.html
217
+ - docs/Puppeteer/EventCallbackable/EventListeners.html
218
+ - docs/Puppeteer/ExecutionContext.html
219
+ - docs/Puppeteer/ExecutionContext/EvaluationError.html
220
+ - docs/Puppeteer/ExecutionContext/JavaScriptExpression.html
221
+ - docs/Puppeteer/ExecutionContext/JavaScriptFunction.html
222
+ - docs/Puppeteer/FileChooser.html
223
+ - docs/Puppeteer/Frame.html
224
+ - docs/Puppeteer/FrameManager.html
225
+ - docs/Puppeteer/FrameManager/NavigationError.html
226
+ - docs/Puppeteer/IfPresent.html
227
+ - docs/Puppeteer/JSHandle.html
228
+ - docs/Puppeteer/Keyboard.html
229
+ - docs/Puppeteer/Keyboard/KeyDefinition.html
230
+ - docs/Puppeteer/Keyboard/KeyDescription.html
231
+ - docs/Puppeteer/Launcher.html
232
+ - docs/Puppeteer/Launcher/Base.html
233
+ - docs/Puppeteer/Launcher/Base/ExecutablePathNotFound.html
234
+ - docs/Puppeteer/Launcher/BrowserOptions.html
235
+ - docs/Puppeteer/Launcher/Chrome.html
236
+ - docs/Puppeteer/Launcher/Chrome/DefaultArgs.html
237
+ - docs/Puppeteer/Launcher/ChromeArgOptions.html
238
+ - docs/Puppeteer/Launcher/LaunchOptions.html
239
+ - docs/Puppeteer/LifecycleWatcher.html
240
+ - docs/Puppeteer/LifecycleWatcher/ExpectedLifecycle.html
241
+ - docs/Puppeteer/LifecycleWatcher/FrameDetachedError.html
242
+ - docs/Puppeteer/LifecycleWatcher/TerminatedError.html
243
+ - docs/Puppeteer/Mouse.html
244
+ - docs/Puppeteer/Mouse/Button.html
245
+ - docs/Puppeteer/NetworkManager.html
246
+ - docs/Puppeteer/NetworkManager/Credentials.html
247
+ - docs/Puppeteer/Page.html
248
+ - docs/Puppeteer/Page/FileChooserTimeoutError.html
249
+ - docs/Puppeteer/Page/ScreenshotOptions.html
250
+ - docs/Puppeteer/Page/ScriptTag.html
251
+ - docs/Puppeteer/Page/StyleTag.html
252
+ - docs/Puppeteer/Page/TargetCrashedError.html
253
+ - docs/Puppeteer/RemoteObject.html
254
+ - docs/Puppeteer/Target.html
255
+ - docs/Puppeteer/Target/InitializeFailure.html
256
+ - docs/Puppeteer/Target/TargetInfo.html
257
+ - docs/Puppeteer/TimeoutError.html
258
+ - docs/Puppeteer/TimeoutSettings.html
259
+ - docs/Puppeteer/TouchScreen.html
260
+ - docs/Puppeteer/Viewport.html
261
+ - docs/Puppeteer/WaitTask.html
262
+ - docs/Puppeteer/WaitTask/TerminatedError.html
263
+ - docs/Puppeteer/WaitTask/TimeoutError.html
264
+ - docs/Puppeteer/WebSocket.html
265
+ - docs/Puppeteer/WebSocket/DriverImpl.html
266
+ - docs/Puppeteer/WebSocketTransport.html
267
+ - docs/Puppeteer/WebSocktTransportError.html
268
+ - docs/_index.html
269
+ - docs/class_list.html
270
+ - docs/css/common.css
271
+ - docs/css/full_list.css
272
+ - docs/css/style.css
273
+ - docs/file.README.html
274
+ - docs/file_list.html
275
+ - docs/frames.html
276
+ - docs/index.html
277
+ - docs/js/app.js
278
+ - docs/js/full_list.js
279
+ - docs/js/jquery.js
280
+ - docs/method_list.html
281
+ - docs/top-level-namespace.html
144
282
  - lib/puppeteer.rb
145
283
  - lib/puppeteer/async_await_behavior.rb
146
284
  - lib/puppeteer/browser.rb
@@ -160,6 +298,7 @@ files:
160
298
  - lib/puppeteer/errors.rb
161
299
  - lib/puppeteer/event_callbackable.rb
162
300
  - lib/puppeteer/execution_context.rb
301
+ - lib/puppeteer/file_chooser.rb
163
302
  - lib/puppeteer/frame.rb
164
303
  - lib/puppeteer/frame_manager.rb
165
304
  - lib/puppeteer/if_present.rb