isomorfeus-puppetmaster 0.3.5 → 0.4.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/README.md +3 -9
- data/lib/isomorfeus/puppetmaster/document.rb +13 -10
- data/lib/isomorfeus/puppetmaster/driver/puppeteer.rb +5 -4
- data/lib/isomorfeus/puppetmaster/driver_registration.rb +2 -4
- data/lib/isomorfeus/puppetmaster/self_forwardable.rb +8 -0
- data/lib/isomorfeus/puppetmaster/version.rb +1 -1
- metadata +29 -43
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 2d453a12b9cc8f801e1e81fdda6e615d7d256253eec19b60c7c969c8bf08bd72
|
4
|
+
data.tar.gz: cbef053148c753b2b03c6b15e1bb815af51dfdc7821a10d422c803862ac57dcd
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 42dd469ad600d330aa8904a31d638c8915bd6f49aba4990ff76c3bc92886d662f08d483128be27ffc6fdb4cf136a552b6f9a648c4609c1f4e50a0a61fa664ca8
|
7
|
+
data.tar.gz: 5dc01c153258ca15823abaa9ad535869cebc5aced2b5e5af6c1346b64b73a4666b68969320e06a589ce9b0064e8b1889657da5742e3f39699d2505798a7865e3
|
data/README.md
CHANGED
@@ -19,9 +19,7 @@ In Gemfile:
|
|
19
19
|
|
20
20
|
Also requires the following npm modules with recommended versions:
|
21
21
|
|
22
|
-
- [puppeteer
|
23
|
-
- [jsdom 15.2.1](https://github.com/jsdom/jsdom#readme) - for the jsdom driver
|
24
|
-
- [canvas 2.6.0](https://github.com/Automattic/node-canvas) - for the jsdom driver (optional)
|
22
|
+
- [puppeteer 9.1.x](https://github.com/GoogleChrome/puppeteer#readme) - for the chromium driver
|
25
23
|
|
26
24
|
Simply install them in your projects root. Puppetmaster also depends on isomorfeus-speednode, which will be installed automatically.
|
27
25
|
Speednode will pickup the node modules then from the projects root node_modules directory.
|
@@ -30,15 +28,11 @@ Speednode will pickup the node modules then from the projects root node_modules
|
|
30
28
|
|
31
29
|
Puppetmaster provides these drivers:
|
32
30
|
- chromium - a real browser, headless, fast
|
33
|
-
- chromium_wsl - as above but with options so it can execute within the Windows Linux WSL
|
34
31
|
- chromium_debug - opens a chromium browser window with devtools enabled, useful for debugging tests
|
35
|
-
- jsdom - provides a dom implementation in javascript, can execute javascript in the document, super fast, headless, has certain limitations,
|
36
|
-
especially because its not rendering anything (no element bounding box, etc.)
|
37
|
-
- jsdom_canvas - jsdom driver with additional support for 'canvas', requires certain libraries to be installed, see: [canvas at github](https://github.com/Automattic/node-canvas)
|
38
32
|
|
39
|
-
Chromium is the default driver. Selecting another driver, for example
|
33
|
+
Chromium is the default driver. Selecting another driver, for example firefox:
|
40
34
|
```ruby
|
41
|
-
Isomorfeus::Puppetmaster.driver = :
|
35
|
+
Isomorfeus::Puppetmaster.driver = :chromium_debug
|
42
36
|
```
|
43
37
|
|
44
38
|
Puppetmaster provides support for these rack servers:
|
@@ -15,7 +15,6 @@ module Isomorfeus
|
|
15
15
|
clear_cookies
|
16
16
|
clear_extra_headers
|
17
17
|
clear_url_blacklist
|
18
|
-
click
|
19
18
|
close
|
20
19
|
cookies
|
21
20
|
console
|
@@ -34,15 +33,11 @@ module Isomorfeus
|
|
34
33
|
html
|
35
34
|
open_new_document
|
36
35
|
remove_cookie
|
37
|
-
render_base64
|
38
36
|
reset_user_agent
|
39
37
|
right_click
|
40
|
-
save_pdf
|
41
|
-
save_screenshot
|
42
38
|
scroll_by
|
43
39
|
scroll_to
|
44
40
|
set_authentication_credentials
|
45
|
-
set_cookie
|
46
41
|
set_extra_headers
|
47
42
|
set_url_blacklist
|
48
43
|
set_user_agent
|
@@ -56,6 +51,14 @@ module Isomorfeus
|
|
56
51
|
wait_for_xpath
|
57
52
|
]
|
58
53
|
|
54
|
+
document_forward_kwargs %i[
|
55
|
+
click
|
56
|
+
render_base64
|
57
|
+
save_pdf
|
58
|
+
save_screenshot
|
59
|
+
set_cookie
|
60
|
+
]
|
61
|
+
|
59
62
|
attr_reader :handle, :response
|
60
63
|
|
61
64
|
def initialize(driver, handle, response)
|
@@ -175,11 +178,11 @@ module Isomorfeus
|
|
175
178
|
alias_method :visit, :goto
|
176
179
|
|
177
180
|
def has_content?(content, **options)
|
178
|
-
body.has_content?(content, options)
|
181
|
+
body.has_content?(content, **options)
|
179
182
|
end
|
180
183
|
|
181
184
|
def has_css?(selector, **options)
|
182
|
-
body.has_css?(selector, options)
|
185
|
+
body.has_css?(selector, **options)
|
183
186
|
end
|
184
187
|
|
185
188
|
def has_current_path?(other_path)
|
@@ -187,11 +190,11 @@ module Isomorfeus
|
|
187
190
|
end
|
188
191
|
|
189
192
|
def has_text?(text, **options)
|
190
|
-
body.has_text?(text, options)
|
193
|
+
body.has_text?(text, **options)
|
191
194
|
end
|
192
195
|
|
193
196
|
def has_xpath?(query, **options)
|
194
|
-
body.has_xpath?(query, options)
|
197
|
+
body.has_xpath?(query, **options)
|
195
198
|
end
|
196
199
|
|
197
200
|
def isomorphic(ruby_source = '', &block)
|
@@ -260,7 +263,7 @@ module Isomorfeus
|
|
260
263
|
protected
|
261
264
|
|
262
265
|
def compile_ruby_source(source_code)
|
263
|
-
# TODO maybe use compile server
|
266
|
+
# TODO maybe use compile server, which can cache code
|
264
267
|
Opal.compile(source_code, parse_comments: false)
|
265
268
|
end
|
266
269
|
end
|
@@ -36,10 +36,11 @@ module Isomorfeus
|
|
36
36
|
|
37
37
|
def initialize(options = {})
|
38
38
|
# https://pptr.dev/#?product=Puppeteer&version=v1.12.2&show=api-puppeteerlaunchoptions
|
39
|
-
# init
|
39
|
+
# init ExecJS context
|
40
40
|
@app = options.delete(:app)
|
41
41
|
@options = options.dup
|
42
42
|
@browser_type = @options.delete(:browser_type) { :chromium }
|
43
|
+
@options[:product] = "'#{@browser_type}'" unless @options.key?(:product)
|
43
44
|
@max_width = @options.delete(:max_width) { VIEWPORT_MAX_WIDTH }
|
44
45
|
@max_height = @options.delete(:max_height) { VIEWPORT_MAX_HEIGHT }
|
45
46
|
@width = @options.delete(:width) { VIEWPORT_DEFAULT_WIDTH > @max_width ? @max_width : VIEWPORT_DEFAULT_WIDTH }
|
@@ -218,7 +219,7 @@ module Isomorfeus
|
|
218
219
|
get_result
|
219
220
|
end
|
220
221
|
|
221
|
-
def
|
222
|
+
def default_require
|
222
223
|
<<~JAVASCRIPT
|
223
224
|
const MasterPuppeteer = require('puppeteer');
|
224
225
|
JAVASCRIPT
|
@@ -277,8 +278,8 @@ module Isomorfeus
|
|
277
278
|
def puppeteer_launch
|
278
279
|
# todo target_handle, puppeteer save path
|
279
280
|
puppeteer_require = case @browser_type
|
280
|
-
when :chrome then
|
281
|
-
when :chromium then
|
281
|
+
when :chrome then default_require
|
282
|
+
when :chromium then default_require
|
282
283
|
else
|
283
284
|
raise "Browser type #{@browser_type} not supported!"
|
284
285
|
end
|
@@ -1,11 +1,9 @@
|
|
1
|
+
require 'tty-which'
|
2
|
+
|
1
3
|
Isomorfeus::Puppetmaster.register_driver(:chromium) do |app|
|
2
4
|
Isomorfeus::Puppetmaster::Driver::Puppeteer.new(browser_type: :chromium, headless: true, app: app)
|
3
5
|
end
|
4
6
|
|
5
|
-
Isomorfeus::Puppetmaster.register_driver(:chromium_wsl) do |app|
|
6
|
-
Isomorfeus::Puppetmaster::Driver::Puppeteer.new(browser_type: :chromium, headless: true, app: app, args: ['--no-sandbox'])
|
7
|
-
end
|
8
|
-
|
9
7
|
Isomorfeus::Puppetmaster.register_driver(:chromium_debug) do |app|
|
10
8
|
Isomorfeus::Puppetmaster::Driver::Puppeteer.new(browser_type: :chromium, headless: false, devtools: true, app: app)
|
11
9
|
end
|
@@ -10,6 +10,14 @@ module Isomorfeus
|
|
10
10
|
end
|
11
11
|
end
|
12
12
|
|
13
|
+
base.define_singleton_method(:document_forward_kwargs) do |methods|
|
14
|
+
methods.each do |method|
|
15
|
+
define_method(method) do |*args, **kwargs, &block|
|
16
|
+
@driver.send("document_#{method}", self, *args, **kwargs, &block)
|
17
|
+
end
|
18
|
+
end
|
19
|
+
end
|
20
|
+
|
13
21
|
base.define_singleton_method(:frame_forward) do |methods|
|
14
22
|
methods.each do |method|
|
15
23
|
define_method(method) do |*args|
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: isomorfeus-puppetmaster
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.4.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Jan Biedermann
|
8
|
-
autorequire:
|
8
|
+
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2021-05-14 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: activesupport
|
@@ -30,14 +30,14 @@ dependencies:
|
|
30
30
|
requirements:
|
31
31
|
- - "~>"
|
32
32
|
- !ruby/object:Gem::Version
|
33
|
-
version: 0.
|
33
|
+
version: 0.3.1
|
34
34
|
type: :runtime
|
35
35
|
prerelease: false
|
36
36
|
version_requirements: !ruby/object:Gem::Requirement
|
37
37
|
requirements:
|
38
38
|
- - "~>"
|
39
39
|
- !ruby/object:Gem::Version
|
40
|
-
version: 0.
|
40
|
+
version: 0.3.1
|
41
41
|
- !ruby/object:Gem::Dependency
|
42
42
|
name: method_source
|
43
43
|
requirement: !ruby/object:Gem::Requirement
|
@@ -58,14 +58,14 @@ dependencies:
|
|
58
58
|
requirements:
|
59
59
|
- - ">="
|
60
60
|
- !ruby/object:Gem::Version
|
61
|
-
version: 3.
|
61
|
+
version: 3.11.1
|
62
62
|
type: :runtime
|
63
63
|
prerelease: false
|
64
64
|
version_requirements: !ruby/object:Gem::Requirement
|
65
65
|
requirements:
|
66
66
|
- - ">="
|
67
67
|
- !ruby/object:Gem::Version
|
68
|
-
version: 3.
|
68
|
+
version: 3.11.1
|
69
69
|
- !ruby/object:Gem::Dependency
|
70
70
|
name: opal
|
71
71
|
requirement: !ruby/object:Gem::Requirement
|
@@ -109,7 +109,7 @@ dependencies:
|
|
109
109
|
- !ruby/object:Gem::Version
|
110
110
|
version: '0'
|
111
111
|
- !ruby/object:Gem::Dependency
|
112
|
-
name:
|
112
|
+
name: tty-which
|
113
113
|
requirement: !ruby/object:Gem::Requirement
|
114
114
|
requirements:
|
115
115
|
- - ">="
|
@@ -123,19 +123,19 @@ dependencies:
|
|
123
123
|
- !ruby/object:Gem::Version
|
124
124
|
version: '0'
|
125
125
|
- !ruby/object:Gem::Dependency
|
126
|
-
name:
|
126
|
+
name: unparser
|
127
127
|
requirement: !ruby/object:Gem::Requirement
|
128
128
|
requirements:
|
129
|
-
- - "
|
129
|
+
- - ">="
|
130
130
|
- !ruby/object:Gem::Version
|
131
|
-
version:
|
132
|
-
type: :
|
131
|
+
version: '0'
|
132
|
+
type: :runtime
|
133
133
|
prerelease: false
|
134
134
|
version_requirements: !ruby/object:Gem::Requirement
|
135
135
|
requirements:
|
136
|
-
- - "
|
136
|
+
- - ">="
|
137
137
|
- !ruby/object:Gem::Version
|
138
|
-
version:
|
138
|
+
version: '0'
|
139
139
|
- !ruby/object:Gem::Dependency
|
140
140
|
name: chunky_png
|
141
141
|
requirement: !ruby/object:Gem::Requirement
|
@@ -156,14 +156,14 @@ dependencies:
|
|
156
156
|
requirements:
|
157
157
|
- - "~>"
|
158
158
|
- !ruby/object:Gem::Version
|
159
|
-
version: 0.
|
159
|
+
version: 0.38.0
|
160
160
|
type: :development
|
161
161
|
prerelease: false
|
162
162
|
version_requirements: !ruby/object:Gem::Requirement
|
163
163
|
requirements:
|
164
164
|
- - "~>"
|
165
165
|
- !ruby/object:Gem::Version
|
166
|
-
version: 0.
|
166
|
+
version: 0.38.0
|
167
167
|
- !ruby/object:Gem::Dependency
|
168
168
|
name: fastimage
|
169
169
|
requirement: !ruby/object:Gem::Requirement
|
@@ -178,20 +178,6 @@ dependencies:
|
|
178
178
|
- - ">="
|
179
179
|
- !ruby/object:Gem::Version
|
180
180
|
version: '0'
|
181
|
-
- !ruby/object:Gem::Dependency
|
182
|
-
name: iodine
|
183
|
-
requirement: !ruby/object:Gem::Requirement
|
184
|
-
requirements:
|
185
|
-
- - "~>"
|
186
|
-
- !ruby/object:Gem::Version
|
187
|
-
version: 0.7.38
|
188
|
-
type: :development
|
189
|
-
prerelease: false
|
190
|
-
version_requirements: !ruby/object:Gem::Requirement
|
191
|
-
requirements:
|
192
|
-
- - "~>"
|
193
|
-
- !ruby/object:Gem::Version
|
194
|
-
version: 0.7.38
|
195
181
|
- !ruby/object:Gem::Dependency
|
196
182
|
name: irb
|
197
183
|
requirement: !ruby/object:Gem::Requirement
|
@@ -212,28 +198,28 @@ dependencies:
|
|
212
198
|
requirements:
|
213
199
|
- - "~>"
|
214
200
|
- !ruby/object:Gem::Version
|
215
|
-
version: '2.
|
201
|
+
version: '2.5'
|
216
202
|
type: :development
|
217
203
|
prerelease: false
|
218
204
|
version_requirements: !ruby/object:Gem::Requirement
|
219
205
|
requirements:
|
220
206
|
- - "~>"
|
221
207
|
- !ruby/object:Gem::Version
|
222
|
-
version: '2.
|
208
|
+
version: '2.5'
|
223
209
|
- !ruby/object:Gem::Dependency
|
224
210
|
name: nokogiri
|
225
211
|
requirement: !ruby/object:Gem::Requirement
|
226
212
|
requirements:
|
227
213
|
- - "~>"
|
228
214
|
- !ruby/object:Gem::Version
|
229
|
-
version: 1.
|
215
|
+
version: 1.11.0
|
230
216
|
type: :development
|
231
217
|
prerelease: false
|
232
218
|
version_requirements: !ruby/object:Gem::Requirement
|
233
219
|
requirements:
|
234
220
|
- - "~>"
|
235
221
|
- !ruby/object:Gem::Version
|
236
|
-
version: 1.
|
222
|
+
version: 1.11.0
|
237
223
|
- !ruby/object:Gem::Dependency
|
238
224
|
name: os
|
239
225
|
requirement: !ruby/object:Gem::Requirement
|
@@ -254,28 +240,28 @@ dependencies:
|
|
254
240
|
requirements:
|
255
241
|
- - ">="
|
256
242
|
- !ruby/object:Gem::Version
|
257
|
-
version:
|
243
|
+
version: 2.4.0
|
258
244
|
type: :development
|
259
245
|
prerelease: false
|
260
246
|
version_requirements: !ruby/object:Gem::Requirement
|
261
247
|
requirements:
|
262
248
|
- - ">="
|
263
249
|
- !ruby/object:Gem::Version
|
264
|
-
version:
|
250
|
+
version: 2.4.0
|
265
251
|
- !ruby/object:Gem::Dependency
|
266
252
|
name: puma
|
267
253
|
requirement: !ruby/object:Gem::Requirement
|
268
254
|
requirements:
|
269
255
|
- - "~>"
|
270
256
|
- !ruby/object:Gem::Version
|
271
|
-
version:
|
257
|
+
version: 5.3.0
|
272
258
|
type: :development
|
273
259
|
prerelease: false
|
274
260
|
version_requirements: !ruby/object:Gem::Requirement
|
275
261
|
requirements:
|
276
262
|
- - "~>"
|
277
263
|
- !ruby/object:Gem::Version
|
278
|
-
version:
|
264
|
+
version: 5.3.0
|
279
265
|
- !ruby/object:Gem::Dependency
|
280
266
|
name: rake
|
281
267
|
requirement: !ruby/object:Gem::Requirement
|
@@ -310,14 +296,14 @@ dependencies:
|
|
310
296
|
requirements:
|
311
297
|
- - "~>"
|
312
298
|
- !ruby/object:Gem::Version
|
313
|
-
version:
|
299
|
+
version: 2.1.0
|
314
300
|
type: :development
|
315
301
|
prerelease: false
|
316
302
|
version_requirements: !ruby/object:Gem::Requirement
|
317
303
|
requirements:
|
318
304
|
- - "~>"
|
319
305
|
- !ruby/object:Gem::Version
|
320
|
-
version:
|
306
|
+
version: 2.1.0
|
321
307
|
description: Acceptance testing for isomorfeus.
|
322
308
|
email: jan@kursator.de
|
323
309
|
executables: []
|
@@ -372,7 +358,7 @@ licenses:
|
|
372
358
|
- MIT
|
373
359
|
metadata:
|
374
360
|
github_repo: ssh://github.com/isomorfeus/gems
|
375
|
-
post_install_message:
|
361
|
+
post_install_message:
|
376
362
|
rdoc_options: []
|
377
363
|
require_paths:
|
378
364
|
- lib
|
@@ -387,8 +373,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
387
373
|
- !ruby/object:Gem::Version
|
388
374
|
version: '0'
|
389
375
|
requirements: []
|
390
|
-
rubygems_version: 3.
|
391
|
-
signing_key:
|
376
|
+
rubygems_version: 3.2.15
|
377
|
+
signing_key:
|
392
378
|
specification_version: 4
|
393
379
|
summary: Acceptance testing for isomorfeus.
|
394
380
|
test_files: []
|