hollandaise 0.1.0 → 0.1.1
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.
- data/bin/hollandaise +1 -4
- data/hollandaise.gemspec +2 -0
- data/lib/hollandaise.rb +13 -0
- data/lib/hollandaise/browser/base.rb +2 -2
- data/lib/hollandaise/browser/sauce.rb +23 -1
- data/lib/hollandaise/browser/selenium.rb +4 -0
- data/lib/hollandaise/project.rb +63 -6
- data/lib/hollandaise/railtie.rb +12 -0
- data/lib/hollandaise/version.rb +1 -1
- metadata +34 -1
data/bin/hollandaise
CHANGED
data/hollandaise.gemspec
CHANGED
data/lib/hollandaise.rb
CHANGED
@@ -3,6 +3,8 @@ require 'hollandaise/browsers'
|
|
3
3
|
require 'hollandaise/project'
|
4
4
|
require 'hollandaise/browser'
|
5
5
|
|
6
|
+
require 'hollandaise/railtie' if defined?(Rails::Railtie)
|
7
|
+
|
6
8
|
module Hollandaise
|
7
9
|
class << self
|
8
10
|
attr_accessor :url, :browsers, :delay
|
@@ -12,6 +14,17 @@ module Hollandaise
|
|
12
14
|
yield self
|
13
15
|
end
|
14
16
|
|
17
|
+
def self.load_config!
|
18
|
+
begin
|
19
|
+
load File.join(Dir.pwd, 'hollandaise.rb')
|
20
|
+
rescue LoadError => e
|
21
|
+
begin
|
22
|
+
load File.join(Dir.pwd, 'config/hollandaise.rb')
|
23
|
+
rescue LoadError => e
|
24
|
+
end
|
25
|
+
end
|
26
|
+
end
|
27
|
+
|
15
28
|
def self.project(name)
|
16
29
|
project = Project.new(name)
|
17
30
|
projects << project
|
@@ -3,12 +3,12 @@ module Hollandaise
|
|
3
3
|
class Base
|
4
4
|
attr_reader :browser
|
5
5
|
|
6
|
-
def run_and_take_screenshot(url)
|
6
|
+
def run_and_take_screenshot(url, screen_size = [ 1280, 1024 ])
|
7
7
|
@url = url
|
8
8
|
|
9
9
|
selenium.navigate.to url
|
10
10
|
sleep @options[:delay].to_i
|
11
|
-
selenium.
|
11
|
+
selenium.manage.window.resize_to(*screen_size)
|
12
12
|
take_screenshot
|
13
13
|
end
|
14
14
|
|
@@ -12,8 +12,30 @@ module Hollandaise
|
|
12
12
|
@selenium ||= ::Sauce::Selenium2.new(info)
|
13
13
|
end
|
14
14
|
|
15
|
+
def run_and_take_screenshot(url, *args)
|
16
|
+
self.class.start_tunnel if URI(url).host == 'localhost'
|
17
|
+
|
18
|
+
super
|
19
|
+
end
|
20
|
+
|
21
|
+
def self.start_tunnel
|
22
|
+
return @tunnel if @tunnel
|
23
|
+
|
24
|
+
@tunnel = ::Sauce::Connect.new
|
25
|
+
@tunnel.connect
|
26
|
+
@tunnel.wait_until_ready
|
27
|
+
|
28
|
+
at_exit do
|
29
|
+
@tunnel.disconnect
|
30
|
+
end
|
31
|
+
end
|
32
|
+
|
15
33
|
def target
|
16
|
-
dir.join(@os.to_s).join("#{@browser} #{@version}.png")
|
34
|
+
dir.join(@os.to_s).join("#{@browser} #{@version || 'latest'}.png")
|
35
|
+
end
|
36
|
+
|
37
|
+
def name
|
38
|
+
"#{@browser} #{@version} #{@os}"
|
17
39
|
end
|
18
40
|
|
19
41
|
def info
|
data/lib/hollandaise/project.rb
CHANGED
@@ -1,4 +1,7 @@
|
|
1
1
|
require 'uri'
|
2
|
+
require 'rainbow'
|
3
|
+
require 'rack/proxy'
|
4
|
+
require 'base64'
|
2
5
|
|
3
6
|
module Hollandaise
|
4
7
|
class Project
|
@@ -7,7 +10,51 @@ module Hollandaise
|
|
7
10
|
end
|
8
11
|
|
9
12
|
def root(root)
|
10
|
-
@root =
|
13
|
+
@root = root
|
14
|
+
end
|
15
|
+
|
16
|
+
def port
|
17
|
+
32516
|
18
|
+
end
|
19
|
+
|
20
|
+
def proxy_root(root)
|
21
|
+
uri = URI(root)
|
22
|
+
|
23
|
+
@userinfo = uri.userinfo
|
24
|
+
@host = uri.host
|
25
|
+
@port = uri.port
|
26
|
+
|
27
|
+
@root = "http://localhost:#{port}#{uri.path}"
|
28
|
+
end
|
29
|
+
|
30
|
+
def with_proxy
|
31
|
+
if !@host
|
32
|
+
yield
|
33
|
+
else
|
34
|
+
proxy = Class.new(Rack::Proxy) do
|
35
|
+
def initialize(userinfo, host, port)
|
36
|
+
@userinfo, @host, @port = userinfo, host, port
|
37
|
+
end
|
38
|
+
|
39
|
+
def rewrite_env(env)
|
40
|
+
env['HTTP_HOST'] = @host
|
41
|
+
env['SERVER_PORT'] = @port
|
42
|
+
env['HTTP_AUTHORIZATION'] = "Basic #{Base64.encode64(@userinfo)}"
|
43
|
+
|
44
|
+
env
|
45
|
+
end
|
46
|
+
end
|
47
|
+
|
48
|
+
server = Thread.new do
|
49
|
+
Rack::Handler.default.run(proxy.new(@userinfo, @host, @port), :Port => port) do |server|
|
50
|
+
Thread.current[:server] = server
|
51
|
+
end
|
52
|
+
end
|
53
|
+
|
54
|
+
yield
|
55
|
+
|
56
|
+
server[:server].stop
|
57
|
+
end
|
11
58
|
end
|
12
59
|
|
13
60
|
def screenshot(name, uri)
|
@@ -20,11 +67,21 @@ module Hollandaise
|
|
20
67
|
@browsers = browsers
|
21
68
|
end
|
22
69
|
|
70
|
+
def screen_size(size)
|
71
|
+
@screen_size = size.split('x').collect(&:to_i)
|
72
|
+
end
|
73
|
+
|
23
74
|
def run
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
75
|
+
puts "Running #{@project_name}".foreground(:green)
|
76
|
+
with_proxy do
|
77
|
+
urls.each do |url, name|
|
78
|
+
puts "... #{name} (#{url})".foreground(:yellow)
|
79
|
+
|
80
|
+
Hollandaise.chdir "#{@project_name}/#{name}" do
|
81
|
+
browser_objects.run do |browser|
|
82
|
+
puts " ... #{browser.name}".foreground(:white)
|
83
|
+
browser.run_and_take_screenshot(url, @screen_size)
|
84
|
+
end
|
28
85
|
end
|
29
86
|
end
|
30
87
|
end
|
@@ -33,7 +90,7 @@ module Hollandaise
|
|
33
90
|
private
|
34
91
|
def urls
|
35
92
|
@screenshots.collect do |name, uri|
|
36
|
-
[ @root
|
93
|
+
[ File.join(@root, uri), name ]
|
37
94
|
end
|
38
95
|
end
|
39
96
|
|
data/lib/hollandaise/version.rb
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: hollandaise
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.1
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -75,6 +75,38 @@ dependencies:
|
|
75
75
|
- - ! '>='
|
76
76
|
- !ruby/object:Gem::Version
|
77
77
|
version: '0'
|
78
|
+
- !ruby/object:Gem::Dependency
|
79
|
+
name: rainbow
|
80
|
+
requirement: !ruby/object:Gem::Requirement
|
81
|
+
none: false
|
82
|
+
requirements:
|
83
|
+
- - ! '>='
|
84
|
+
- !ruby/object:Gem::Version
|
85
|
+
version: '0'
|
86
|
+
type: :runtime
|
87
|
+
prerelease: false
|
88
|
+
version_requirements: !ruby/object:Gem::Requirement
|
89
|
+
none: false
|
90
|
+
requirements:
|
91
|
+
- - ! '>='
|
92
|
+
- !ruby/object:Gem::Version
|
93
|
+
version: '0'
|
94
|
+
- !ruby/object:Gem::Dependency
|
95
|
+
name: rack-proxy
|
96
|
+
requirement: !ruby/object:Gem::Requirement
|
97
|
+
none: false
|
98
|
+
requirements:
|
99
|
+
- - ! '>='
|
100
|
+
- !ruby/object:Gem::Version
|
101
|
+
version: '0'
|
102
|
+
type: :runtime
|
103
|
+
prerelease: false
|
104
|
+
version_requirements: !ruby/object:Gem::Requirement
|
105
|
+
none: false
|
106
|
+
requirements:
|
107
|
+
- - ! '>='
|
108
|
+
- !ruby/object:Gem::Version
|
109
|
+
version: '0'
|
78
110
|
description: Get delicious screenshots from Sauce Labs, easily
|
79
111
|
email:
|
80
112
|
- john@coswellproductions.com
|
@@ -99,6 +131,7 @@ files:
|
|
99
131
|
- lib/hollandaise/browsers.rb
|
100
132
|
- lib/hollandaise/cli.rb
|
101
133
|
- lib/hollandaise/project.rb
|
134
|
+
- lib/hollandaise/railtie.rb
|
102
135
|
- lib/hollandaise/version.rb
|
103
136
|
- skel/hollandaise.rb.tt
|
104
137
|
homepage: ''
|