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 +4 -4
- data/README.md +17 -6
- data/lib/isomorfeus/puppetmaster/document.rb +21 -2
- data/lib/isomorfeus/puppetmaster/driver/jsdom.rb +2 -1
- data/lib/isomorfeus/puppetmaster/driver_registration.rb +8 -0
- data/lib/isomorfeus/puppetmaster/node.rb +15 -2
- data/lib/isomorfeus/puppetmaster/server_registration.rb +30 -0
- data/lib/isomorfeus/puppetmaster/version.rb +1 -1
- metadata +32 -4
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 4f93b2a8c272d241cdc8b2acbe45d8e9b894f2fd667699490474cd9489b00ff9
|
4
|
+
data.tar.gz: 02a64a1ccc84b206526ec90c855aea65191469287b6866d7b6058292dd821486
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
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.
|
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
|
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
|
-
|
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
|
-
|
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."
|
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.
|
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
|
+
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
|