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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: b561df47e49a821a455d0034483297f2ef7623ba837dc61cca99bd5b3dd033d6
4
- data.tar.gz: 409d3e25bb92e5686ec76ec91dd415ef7caedb8a90042c161721755d565ab35c
3
+ metadata.gz: 2d453a12b9cc8f801e1e81fdda6e615d7d256253eec19b60c7c969c8bf08bd72
4
+ data.tar.gz: cbef053148c753b2b03c6b15e1bb815af51dfdc7821a10d422c803862ac57dcd
5
5
  SHA512:
6
- metadata.gz: 950ecc09d8988b7355ee5e1f61b4d30c6ac390226c43415a0267d8c84e575c2fa93b08612e213a7945235228a1220c8b81d02fc22d2e173ad7ca74d6d7b8160e
7
- data.tar.gz: 77cecab7b46eadef0f9692cf61bd02b67039896b1de1a597c23a671b6f4eed4d31f5c66fab2b41aeb2fff3f04be18041b09343bf64bb771b3251b694dd46105c
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 2.0.0](https://github.com/GoogleChrome/puppeteer#readme) - for the chromium driver
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 jsdom:
33
+ Chromium is the default driver. Selecting another driver, for example firefox:
40
34
  ```ruby
41
- Isomorfeus::Puppetmaster.driver = :jsdom
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 ExecJs context
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 chromium_require
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 chromium_require
281
- when :chromium then chromium_require
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|
@@ -1,3 +1,3 @@
1
1
  module Isomorfeus
2
- PUPPETMASTER_VERSION = '0.3.5'
2
+ PUPPETMASTER_VERSION = '0.4.0'
3
3
  end
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.3.5
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: 2020-01-26 00:00:00.000000000 Z
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.2.11
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.2.11
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.10.1
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.10.1
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: unparser
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: agoo
126
+ name: unparser
127
127
  requirement: !ruby/object:Gem::Requirement
128
128
  requirements:
129
- - - "~>"
129
+ - - ">="
130
130
  - !ruby/object:Gem::Version
131
- version: 2.11.7
132
- type: :development
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: 2.11.7
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.30.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.30.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.0'
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.0'
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.10.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.10.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: 1.3.3
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: 1.3.3
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: 4.3.1
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: 4.3.1
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: '2.0'
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: '2.0'
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.0.6
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: []