isomorfeus-puppetmaster 0.2.2 → 0.2.3

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: 269550731b8d7281a53e106e2bc4cc53b49e95a0e76a7133aac4c2b5f5588f9a
4
- data.tar.gz: d7f0c5efc32325a03b4bd30cf6c1c0603935a1c104233d7c2e8a037a465db148
3
+ metadata.gz: 4f93b2a8c272d241cdc8b2acbe45d8e9b894f2fd667699490474cd9489b00ff9
4
+ data.tar.gz: 02a64a1ccc84b206526ec90c855aea65191469287b6866d7b6058292dd821486
5
5
  SHA512:
6
- metadata.gz: ac398c1d1a32b7df39b4e081f8f120e61076f0708641f11b0d246cb7fe1293337e6c4b23510e913c256e5d669f1a1a0982bdedb9c8fafeed1e64c2e2cdab5634
7
- data.tar.gz: 92e2477578449cfce8ac2152834038cc4fe198bc03eee7b21994fa019c832edd4cc3143df33314097cb967253be25d759aa80cf335b1a28c0d432494d0b681b0
6
+ metadata.gz: bb93ec516a523403299a96b6cf961dafcca7e33153348fe5bde2a593f9a66f8a4a717520bd4cb701cbf4744aed16b2ec4e3e9785d5332b467115a9ef0b4c69ac
7
+ data.tar.gz: 54ce3d4966f83112ff5999c39c827210b072656bdaf3f9cf2bda8197f257316854a64263fc6d6314eddc3b3ed1028989d0e07f6da4a9aaf6728180211fc54cd2
data/README.md CHANGED
@@ -19,10 +19,10 @@ In Gemfile:
19
19
 
20
20
  Also requires the following npm modules with recommended versions:
21
21
 
22
- - puppeteer 1.13.0 - for the chromium driver
23
- - puppeteer-firefox 0.5.0 - for the firefox driver
24
- - jsdom 14.0.0 - for the jsdom driver
25
- - canvas 2.4.1 - for the jsdom driver
22
+ - [puppeteer 1.16.0](https://github.com/GoogleChrome/puppeteer#readme) - for the chromium driver
23
+ - [puppeteer-firefox 0.5.0](https://www.npmjs.com/package/puppeteer-firefox) - for the firefox driver
24
+ - [jsdom 14.0.0](https://github.com/jsdom/jsdom#readme) - for the jsdom driver
25
+ - [canvas 2.4.1](https://github.com/Automattic/node-canvas) - for the jsdom driver (optional)
26
26
 
27
27
  Simply install them in your projects root. Puppetmaster also depends on isomorfeus-speednode, which will be installed automatically.
28
28
  Speednode will pickup the node modules then from the projects root node_modules directory.
@@ -31,18 +31,29 @@ Speednode will pickup the node modules then from the projects root node_modules
31
31
 
32
32
  Puppetmaster provides these drivers:
33
33
  - chromium - a real browser, headless, fast
34
+ - chromium_wsl - as above but with options so it can execute within the Windows Linux WSL
34
35
  - chromium_debug - opens a chromium browser window with devtools enabled, useful for debugging tests
35
36
  - firefox - real firefox, running headless, not so fast
36
37
  - firefox_debug - opens a firefox browser window with devtools enabled, useful for debugging tests
37
38
  - jsdom - provides a dom implementation in javascript, can execute javascript in the document, super fast, headless, has certain limitations,
38
39
  especially because its not rendering anything (no element bounding box, etc.)
40
+ - 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)
39
41
 
40
- Selecting a driver, for example jsdom:
42
+ Chromium is the default driver. Selecting another driver, for example jsdom:
41
43
  ```ruby
42
44
  Isomorfeus::Puppetmaster.driver = :jsdom
43
45
  ```
44
- (chromium is the default driver)
45
46
 
47
+ Puppetmaster provides support for these rack servers:
48
+ - [agoo](https://github.com/ohler55/agoo)
49
+ - [falcon](https://github.com/socketry/falcon)
50
+ - [iodine](https://github.com/boazsegev/iodine)
51
+ - [puma](https://github.com/puma/puma)
52
+
53
+ Puma is the default rack server. To assign another rack server:
54
+ ```ruby
55
+ Isomorfeus::Puppetmaster.server = :agoo
56
+ ```
46
57
 
47
58
  Getting the app ready and running:
48
59
  1. Assign a rack app
@@ -76,7 +76,21 @@ module Isomorfeus
76
76
  start_of_code = compiled_ruby.index('*/') + 3
77
77
  compiled_ruby = compiled_ruby[start_of_code..-1]
78
78
  end
79
- javascript = <<~JAVASCRIPT
79
+ evaluate_script <<~JAVASCRIPT
80
+ (function(){
81
+ return #{compiled_ruby}
82
+ })()
83
+ JAVASCRIPT
84
+ end
85
+
86
+ def evaluate_with_opal(ruby_source = '', &block)
87
+ ruby_source = Isomorfeus::Puppetmaster.block_source_code(&block) if block_given?
88
+ compiled_ruby = compile_ruby_source(ruby_source)
89
+ if compiled_ruby.start_with?('/*')
90
+ start_of_code = compiled_ruby.index('*/') + 3
91
+ compiled_ruby = compiled_ruby[start_of_code..-1]
92
+ end
93
+ evaluate_script <<~JAVASCRIPT
80
94
  (function(){
81
95
  if (typeof Opal === "undefined") {
82
96
  #{Isomorfeus::Puppetmaster.opal_prelude}
@@ -84,7 +98,6 @@ module Isomorfeus
84
98
  return #{compiled_ruby}
85
99
  })()
86
100
  JAVASCRIPT
87
- evaluate_script(javascript)
88
101
  end
89
102
 
90
103
  def go_back
@@ -129,6 +142,12 @@ module Isomorfeus
129
142
  evaluate_ruby(ruby_source)
130
143
  end
131
144
 
145
+ def isomorphic_with_opal(ruby_source = '', &block)
146
+ ruby_source = Isomorfeus::Puppetmaster.block_source_code(&block) if block_given?
147
+ Isomorfeus::Puppetmaster.served_app.on_server(ruby_source)
148
+ evaluate_with_opal(ruby_source)
149
+ end
150
+
132
151
  def method_missing(name, *args)
133
152
  method_name = name.to_s
134
153
  if method_name.start_with?('find_by_')
@@ -37,6 +37,7 @@ module Isomorfeus
37
37
  def initialize(options = {})
38
38
  @app = options.delete(:app)
39
39
  @options = options.dup
40
+ @canvas = @options.delete(:canvas) { false }
40
41
  @ignore_https_errors = !!@options.delete(:ignore_https_errors)
41
42
  @max_width = @options.delete(:max_width) { VIEWPORT_MAX_WIDTH }
42
43
  @max_height = @options.delete(:max_height) { VIEWPORT_MAX_HEIGHT }
@@ -248,7 +249,7 @@ module Isomorfeus
248
249
 
249
250
  def jsdom_launch
250
251
  <<~JAVASCRIPT
251
- const canvas = require('canvas')
252
+ #{"const canvas = require('canvas');" if @canvas}
252
253
  const jsdom = require('jsdom');
253
254
  const Cookie = jsdom.toughCookie.Cookie;
254
255
  const MemoryCookieStore = jsdom.toughCookie.MemoryCookieStore;
@@ -2,6 +2,10 @@ Isomorfeus::Puppetmaster.register_driver(:chromium) do |app|
2
2
  Isomorfeus::Puppetmaster::Driver::Puppeteer.new(browser_type: :chromium, headless: true, app: app)
3
3
  end
4
4
 
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
+
5
9
  Isomorfeus::Puppetmaster.register_driver(:chromium_debug) do |app|
6
10
  Isomorfeus::Puppetmaster::Driver::Puppeteer.new(browser_type: :chromium, headless: false, devtools: true, app: app)
7
11
  end
@@ -17,3 +21,7 @@ end
17
21
  Isomorfeus::Puppetmaster.register_driver(:jsdom) do |app|
18
22
  Isomorfeus::Puppetmaster::Driver::Jsdom.new(app: app)
19
23
  end
24
+
25
+ Isomorfeus::Puppetmaster.register_driver(:jsdom_canvas) do |app|
26
+ Isomorfeus::Puppetmaster::Driver::Jsdom.new(app: app, canvas: true)
27
+ end
@@ -145,7 +145,21 @@ module Isomorfeus
145
145
  start_of_code = compiled_ruby.index('*/') + 3
146
146
  compiled_ruby = compiled_ruby[start_of_code..-1]
147
147
  end
148
- javascript = <<~JAVASCRIPT
148
+ evaluate_script <<~JAVASCRIPT
149
+ (function(){
150
+ return #{compiled_ruby}
151
+ })()
152
+ JAVASCRIPT
153
+ end
154
+
155
+ def evaluate_with_opal(ruby_source = '', &block)
156
+ ruby_source = Isomorfeus::Puppetmaster.block_source_code(&block) if block_given?
157
+ compiled_ruby = compile_ruby_source(ruby_source)
158
+ if compiled_ruby.start_with?('/*')
159
+ start_of_code = compiled_ruby.index('*/') + 3
160
+ compiled_ruby = compiled_ruby[start_of_code..-1]
161
+ end
162
+ evaluate_script <<~JAVASCRIPT
149
163
  (function(){
150
164
  if (typeof Opal === "undefined") {
151
165
  #{Isomorfeus::Puppetmaster.opal_prelude}
@@ -153,7 +167,6 @@ module Isomorfeus
153
167
  return #{compiled_ruby}
154
168
  })()
155
169
  JAVASCRIPT
156
- evaluate_script(javascript)
157
170
  end
158
171
 
159
172
  def get_attribute(attribute)
@@ -1,5 +1,6 @@
1
1
  Isomorfeus::Puppetmaster.register_server :agoo do |app, port, _host, **options|
2
2
  begin
3
+ require 'agoo/version'
3
4
  require 'rack/handler/agoo'
4
5
  rescue LoadError
5
6
  raise LoadError, "Unable to load 'agoo' as server."
@@ -11,8 +12,37 @@ Isomorfeus::Puppetmaster.register_server :agoo do |app, port, _host, **options|
11
12
  Rack::Handler::Agoo.run(app, { port: port }.merge(options)).join
12
13
  end
13
14
 
15
+ Isomorfeus::Puppetmaster.register_server :falcon do |app, port, host, **options|
16
+ begin
17
+ require 'falcon/version'
18
+ require 'rack/handler/falcon'
19
+ rescue LoadError
20
+ raise LoadError, "Unable to load 'falcon' as server."
21
+ end
22
+
23
+ events.log 'Puppetmaster starting Falcon...'
24
+ events.log "* Version #{Falcon::VERSION}"
25
+
26
+ Rack::Handler::Falcon.run(app, { Host: host, Port: port }.merge(options)).join
27
+ end
28
+
29
+ Isomorfeus::Puppetmaster.register_server :iodine do |app, port, _host, **options|
30
+ begin
31
+ require 'iodine/version'
32
+ require 'rack/handler/iodine'
33
+ rescue LoadError
34
+ raise LoadError, "Unable to load 'iodine' as server."
35
+ end
36
+
37
+ events.log 'Puppetmaster starting Iodine...'
38
+ events.log "* Version #{Iodine::VERSION}"
39
+
40
+ Rack::Handler::Iodine.run(app, { Host: host, Port: port }.merge(options)).join
41
+ end
42
+
14
43
  Isomorfeus::Puppetmaster.register_server :puma do |app, port, host, **options|
15
44
  begin
45
+ require 'puma/const'
16
46
  require 'rack/handler/puma'
17
47
  rescue LoadError
18
48
  raise LoadError, "Unable to load 'puma' as server."
@@ -1,3 +1,3 @@
1
1
  module Isomorfeus
2
- PUPPETMASTER_VERSION = '0.2.2'
2
+ PUPPETMASTER_VERSION = '0.2.3'
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.2.2
4
+ version: 0.2.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Jan Biedermann
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2019-05-11 00:00:00.000000000 Z
11
+ date: 2019-05-23 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activesupport
@@ -136,6 +136,20 @@ dependencies:
136
136
  - - ">="
137
137
  - !ruby/object:Gem::Version
138
138
  version: '0'
139
+ - !ruby/object:Gem::Dependency
140
+ name: falcon
141
+ requirement: !ruby/object:Gem::Requirement
142
+ requirements:
143
+ - - "~>"
144
+ - !ruby/object:Gem::Version
145
+ version: 0.30.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.30.0
139
153
  - !ruby/object:Gem::Dependency
140
154
  name: fastimage
141
155
  requirement: !ruby/object:Gem::Requirement
@@ -150,6 +164,20 @@ dependencies:
150
164
  - - ">="
151
165
  - !ruby/object:Gem::Version
152
166
  version: '0'
167
+ - !ruby/object:Gem::Dependency
168
+ name: iodine
169
+ requirement: !ruby/object:Gem::Requirement
170
+ requirements:
171
+ - - "~>"
172
+ - !ruby/object:Gem::Version
173
+ version: 0.7.31
174
+ type: :development
175
+ prerelease: false
176
+ version_requirements: !ruby/object:Gem::Requirement
177
+ requirements:
178
+ - - "~>"
179
+ - !ruby/object:Gem::Version
180
+ version: 0.7.31
153
181
  - !ruby/object:Gem::Dependency
154
182
  name: irb
155
183
  requirement: !ruby/object:Gem::Requirement
@@ -224,14 +252,14 @@ dependencies:
224
252
  name: puma
225
253
  requirement: !ruby/object:Gem::Requirement
226
254
  requirements:
227
- - - '='
255
+ - - "~>"
228
256
  - !ruby/object:Gem::Version
229
257
  version: 3.12.0
230
258
  type: :development
231
259
  prerelease: false
232
260
  version_requirements: !ruby/object:Gem::Requirement
233
261
  requirements:
234
- - - '='
262
+ - - "~>"
235
263
  - !ruby/object:Gem::Version
236
264
  version: 3.12.0
237
265
  - !ruby/object:Gem::Dependency