scoutui 0.1.2 → 0.1.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 +71 -16
- data/bin/scoutui_driver.rb +22 -0
- data/examples/ex1/commands.yml +25 -0
- data/examples/ex1/test-example.sh +36 -0
- data/examples/ex1/test.config.json +16 -0
- data/examples/ex2/commands.yml +35 -0
- data/examples/ex2/page_model.json +18 -0
- data/examples/ex2/test-example.sh +38 -0
- data/examples/ex2/test.config.json +25 -0
- data/examples/ex6/commands.yml +53 -0
- data/examples/ex6/ex1.config.json +24 -0
- data/examples/ex6/test-example.sh +36 -0
- data/lib/scoutui/base/q_accounts.rb +8 -4
- data/lib/scoutui/base/q_browser.rb +22 -0
- data/lib/scoutui/base/test_scout.rb +3 -5
- data/lib/scoutui/base/test_settings.rb +1 -11
- data/lib/scoutui/base/user_vars.rb +42 -1
- data/lib/scoutui/base/visual_test_framework.rb +131 -24
- data/lib/scoutui/eyes/eye_factory.rb +21 -9
- data/lib/scoutui/eyes/eye_scout.rb +33 -9
- data/lib/scoutui/navigator.rb +1 -0
- data/lib/scoutui/utils/utils.rb +96 -32
- data/lib/scoutui/version.rb +1 -1
- metadata +13 -2
@@ -26,23 +26,32 @@ module Scoutui::Eyes
|
|
26
26
|
puts __FILE__ + (__LINE__).to_s + " create(#{use_eyes})" if Scoutui::Utils::TestUtils.instance.isDebug?
|
27
27
|
eyes=nil
|
28
28
|
|
29
|
+
|
29
30
|
if use_eyes
|
31
|
+
license_key=nil
|
30
32
|
|
31
33
|
licFile=Scoutui::Utils::TestUtils.instance.getLicenseFile()
|
32
34
|
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
35
|
+
if !licFile.empty?
|
36
|
+
|
37
|
+
valid_json=false
|
38
|
+
begin
|
39
|
+
jFile = File.read(licFile)
|
40
|
+
jLicense=jsonData=JSON.parse(jFile)
|
41
|
+
license_key=jLicense['api_key'].to_s
|
42
|
+
valid_json=true
|
43
|
+
rescue => ex
|
44
|
+
;
|
45
|
+
end
|
46
|
+
|
47
|
+
elsif ENV.has_key?('APPLITOOLS_API_KEY')
|
48
|
+
license_key=ENV['APPLITOOLS_API_KEY'].to_s
|
40
49
|
end
|
41
50
|
|
42
51
|
|
43
|
-
if
|
52
|
+
if !license_key.nil?
|
44
53
|
eyes=Applitools::Eyes.new()
|
45
|
-
eyes.api_key =
|
54
|
+
eyes.api_key = license_key
|
46
55
|
eyes.force_fullpage_screenshot = true
|
47
56
|
|
48
57
|
match_level = Scoutui::Base::UserVars.instance.getVar('eyes.match_level')
|
@@ -50,6 +59,9 @@ module Scoutui::Eyes
|
|
50
59
|
eyes.match_level = Applitools::Eyes::MATCH_LEVEL[match_level.to_sym]
|
51
60
|
end
|
52
61
|
|
62
|
+
## TBD - eyes.open()
|
63
|
+
|
64
|
+
|
53
65
|
end
|
54
66
|
|
55
67
|
# eyes
|
@@ -7,6 +7,7 @@ module Scoutui::Eyes
|
|
7
7
|
|
8
8
|
attr_accessor :drv
|
9
9
|
attr_accessor :eyes
|
10
|
+
attr_accessor :testResults
|
10
11
|
|
11
12
|
def teardown()
|
12
13
|
@drv.quit()
|
@@ -26,23 +27,43 @@ module Scoutui::Eyes
|
|
26
27
|
|
27
28
|
|
28
29
|
def closeOut()
|
29
|
-
|
30
|
+
return if !Scoutui::Utils::TestUtils.instance.eyesEnabled?
|
31
|
+
@testResults = eyes().close(false)
|
30
32
|
eyes().abort_if_not_closed if !eyes().nil?
|
31
33
|
end
|
32
34
|
|
33
|
-
def check_window(tag)
|
35
|
+
def check_window(tag, region=nil)
|
34
36
|
puts __FILE__ + (__LINE__).to_s + " check_window(#{tag.to_s})" if Scoutui::Utils::TestUtils.instance.isDebug?
|
35
37
|
|
36
38
|
return if !Scoutui::Utils::TestUtils.instance.eyesEnabled?
|
37
39
|
|
38
|
-
|
40
|
+
if region.nil?
|
41
|
+
eyes().check_window(tag.to_s)
|
42
|
+
else
|
43
|
+
f = eyes().force_fullpage_screenshot
|
44
|
+
eyes().check_region(:xpath, region, tag)
|
45
|
+
eyes().force_fullpage_screenshot = f
|
46
|
+
end
|
47
|
+
|
48
|
+
end
|
49
|
+
|
50
|
+
def generateReport()
|
51
|
+
puts " TestReport => #{@testResults}"
|
52
|
+
end
|
53
|
+
|
54
|
+
def getResults()
|
55
|
+
@testResults
|
39
56
|
end
|
40
57
|
|
41
58
|
def initialize(browserType)
|
59
|
+
@testResults=nil
|
60
|
+
|
42
61
|
browserType = Scoutui::Base::UserVars.instance.getBrowserType()
|
62
|
+
viewport_size = Scoutui::Base::UserVars.instance.getViewPort()
|
43
63
|
|
44
64
|
if Scoutui::Utils::TestUtils.instance.isDebug?
|
45
65
|
puts __FILE__ + (__LINE__).to_s + " setup() : #{browserType}"
|
66
|
+
puts __FILE__ + (__LINE__).to_s + " viewport => #{viewport_size}"
|
46
67
|
puts __FILE__ + (__LINE__).to_s + " eyes cfg => #{@eyesRecord}"
|
47
68
|
puts __FILE__ + (__LINE__).to_s + " title => " + Scoutui::Base::UserVars.instance.getVar('eyes.title')
|
48
69
|
puts __FILE__ + (__LINE__).to_s + " app => " + Scoutui::Base::UserVars.instance.getVar('eyes.app')
|
@@ -55,12 +76,15 @@ module Scoutui::Eyes
|
|
55
76
|
|
56
77
|
puts __FILE__ + (__LINE__).to_s + " eyes => #{eyes}" if Scoutui::Utils::TestUtils.instance.isDebug?
|
57
78
|
|
58
|
-
|
59
|
-
|
60
|
-
|
61
|
-
|
62
|
-
|
63
|
-
|
79
|
+
## TBD - move the following into eye_scout ??
|
80
|
+
if Scoutui::Utils::TestUtils.instance.eyesEnabled?
|
81
|
+
@driver = @eyes.open(
|
82
|
+
app_name: Scoutui::Base::UserVars.instance.getVar('eyes.app'), # @eyesRecord['app'],
|
83
|
+
test_name: Scoutui::Base::UserVars.instance.getVar('eyes.title'), # @eyesRecord['title'],
|
84
|
+
viewport_size: viewport_size,
|
85
|
+
# viewport_size: {width: 800, height: 600},
|
86
|
+
driver: @drv)
|
87
|
+
end
|
64
88
|
|
65
89
|
rescue => ex
|
66
90
|
puts ex.backtrace
|
data/lib/scoutui/navigator.rb
CHANGED
data/lib/scoutui/utils/utils.rb
CHANGED
@@ -11,21 +11,64 @@ module Scoutui::Utils
|
|
11
11
|
include Singleton
|
12
12
|
|
13
13
|
attr_accessor :options
|
14
|
+
attr_accessor :page_model
|
14
15
|
|
15
16
|
def initialize
|
16
17
|
|
18
|
+
@env_list={:accounts => 'SCOUTUI_ACCOUNTS', :browser => 'SCOUTUI_BROWSER', :applitools_api_key => 'APPLITOOLS_API_KEY'}
|
17
19
|
@options={}
|
18
20
|
|
19
|
-
[:
|
20
|
-
|
21
|
+
[:accounts, :browser, :test_file, :host, :loc, :title, :viewport,
|
22
|
+
:userid, :password, :json_config_file, :page_model, :test_config, :debug].each do |o|
|
23
|
+
@options[o]=nil
|
21
24
|
end
|
22
25
|
|
23
|
-
@options[:enable_eyes]=
|
24
|
-
@options[:match_level]='
|
26
|
+
@options[:enable_eyes]=false
|
27
|
+
@options[:match_level]='layout'
|
28
|
+
@options[:debug]=false
|
29
|
+
|
30
|
+
@page_model=nil
|
31
|
+
|
32
|
+
Scoutui::Base::UserVars.instance.set('eyes.viewport', '1024x768')
|
33
|
+
|
34
|
+
end
|
35
|
+
|
36
|
+
def loadPageModel()
|
37
|
+
if !@options[:page_model].nil?
|
38
|
+
_f = File.read(@options[:page_model].to_s)
|
39
|
+
@page_model = JSON.parse(_f)
|
40
|
+
|
41
|
+
puts __FILE__ + (__LINE__).to_s + " JSON-PageModel => #{@page_model}" if Scoutui::Utils::TestUtils.instance.isDebug?
|
42
|
+
end
|
43
|
+
end
|
44
|
+
|
45
|
+
|
46
|
+
def getPageElement(s)
|
47
|
+
hit=@page_model
|
48
|
+
|
49
|
+
nodes = s.split(/\./)
|
50
|
+
|
51
|
+
nodes.each { |elt|
|
52
|
+
getter = elt.split(/\(/)[0]
|
53
|
+
_obj = elt.match(/\((.*)\)/)[1]
|
54
|
+
|
55
|
+
puts __FILE__ + (__LINE__).to_s + " getter : #{getter} obj: #{_obj}" if Scoutui::Utils::TestUtils.instance.isDebug?
|
56
|
+
|
57
|
+
if getter.downcase=='page'
|
58
|
+
puts __FILE__ + (__LINE__).to_s + " -- process page --" if Scoutui::Utils::TestUtils.instance.isDebug?
|
59
|
+
hit=@page_model[_obj]
|
60
|
+
elsif getter.downcase=='get'
|
61
|
+
hit=hit[_obj]
|
62
|
+
end
|
63
|
+
puts __FILE__ + (__LINE__).to_s + " HIT => #{hit}" if Scoutui::Utils::TestUtils.instance.isDebug?
|
64
|
+
}
|
65
|
+
|
66
|
+
hit
|
67
|
+
|
25
68
|
end
|
26
69
|
|
70
|
+
|
27
71
|
def parseCommandLine()
|
28
|
-
# @options = {}
|
29
72
|
|
30
73
|
OptionParser.new do |opt|
|
31
74
|
opt.on('-c', '--config TESTFILE') { |o|
|
@@ -36,30 +79,30 @@ module Scoutui::Utils
|
|
36
79
|
@options[:test_config]=jsonData=JSON.parse(jFile)
|
37
80
|
end
|
38
81
|
}
|
39
|
-
opt.on('
|
82
|
+
opt.on('--accounts [Account]') { |o| @options[:accounts] = o }
|
83
|
+
opt.on('-b', '--browser [TYPE]', [:chrome, :firefox, :ie, :safari, :phantomjs], "Select browser (chrome, ie, firefox, safari)") { |o| @options[:browser] = o }
|
84
|
+
opt.on('-d', '--debug', 'Enable debug') { |o| @options[:debug] = true }
|
40
85
|
opt.on('-h', '--host HOST') { |o| @options[:host] = o }
|
41
86
|
opt.on('-l', '--lang LOCAL') { |o| @options[:loc] = o }
|
42
87
|
opt.on('-k', '--key EyesLicense') { |o| options[:license_file] = o }
|
43
88
|
opt.on('-a', '--app AppName') { |o| @options[:app] = o }
|
44
|
-
opt.on('--match [
|
89
|
+
opt.on('--match [LEVEL]', [:layout2, :layout, :strict, :exact, :content], "Select match level (layout, strict, exact, content)") { |o| @options[:match_level] = o }
|
90
|
+
|
91
|
+
opt.on('--pagemodel [PageModel]') { |o|
|
92
|
+
@options[:page_model] = o
|
93
|
+
loadPageModel()
|
94
|
+
}
|
45
95
|
opt.on('-t', '--title TITLE') { |o| @options[:title] = o }
|
46
|
-
|
96
|
+
|
47
97
|
opt.on('-u', '--user USER_ID') { |o|
|
48
98
|
@options[:userid] = o
|
49
99
|
Scoutui::Base::UserVars.instance.setVar(:user, @options[:userid].to_s)
|
50
100
|
}
|
51
101
|
opt.on('-p', '--password PASSWORD') { |o| @options[:password] = o }
|
52
|
-
opt.on('-e', '--eyes
|
53
|
-
@options[:
|
54
|
-
|
55
|
-
if !o.nil?
|
56
|
-
if !o.match(/true|1/i).nil?
|
57
|
-
@options[:enable_eyes]=true
|
58
|
-
end
|
59
|
-
|
60
|
-
end
|
61
|
-
|
102
|
+
opt.on('-e', '--eyes', "Toggle eyes") {
|
103
|
+
@options[:enable_eyes]=true
|
62
104
|
}
|
105
|
+
opt.on('--viewport [resolution]') { |o| options[:viewport] = o }
|
63
106
|
end.parse!
|
64
107
|
|
65
108
|
if Scoutui::Utils::TestUtils.instance.isDebug?
|
@@ -74,6 +117,10 @@ module Scoutui::Utils
|
|
74
117
|
puts "Eyes => #{@options[:enable_eyes]}"
|
75
118
|
puts "Test Cfg => #{@options[:json_config_file]}"
|
76
119
|
puts "Match Level => #{@options[:match_level]}"
|
120
|
+
puts "Accounts => #{@options[:accounts]}"
|
121
|
+
puts "Viewport => #{@options[:viewport]}"
|
122
|
+
puts "Viewport (Var) => #{Scoutui::Base::UserVars.instance.getViewPort().to_s}"
|
123
|
+
puts "PageModel file => #{@options[:page_model].to_s}"
|
77
124
|
end
|
78
125
|
|
79
126
|
@options
|
@@ -109,11 +156,14 @@ module Scoutui::Utils
|
|
109
156
|
# Returns JSON file contents/format
|
110
157
|
def getTestSettings()
|
111
158
|
|
112
|
-
[:browser, :host, :userid, :password].each do |k|
|
159
|
+
[:accounts, :browser, :host, :userid, :password].each do |k|
|
113
160
|
|
114
161
|
puts __FILE__ + (__LINE__).to_s + " opt[test_config].has_key(#{k.to_s}) => #{@options[:test_config].has_key?(k.to_s)}" if Scoutui::Utils::TestUtils.instance.isDebug?
|
115
162
|
|
116
|
-
|
163
|
+
puts __FILE__ + (__LINE__).to_s + " options[#{k}] : #{@options[k].to_s}" if Scoutui::Utils::TestUtils.instance.isDebug?
|
164
|
+
if @options.has_key?(k) && !@options[k].nil?
|
165
|
+
Scoutui::Base::UserVars.instance.set(k, @options[k].to_s)
|
166
|
+
elsif @options[:test_config].has_key?(k.to_s)
|
117
167
|
|
118
168
|
puts __FILE__ + (__LINE__).to_s + " opts[#{k}].nil => #{@options[k].nil?}" if Scoutui::Utils::TestUtils.instance.isDebug?
|
119
169
|
# Ensure commnand line takes precedence
|
@@ -124,34 +174,48 @@ module Scoutui::Utils
|
|
124
174
|
Scoutui::Base::UserVars.instance.set(k, @options[:test_config][k.to_s].to_s)
|
125
175
|
end
|
126
176
|
|
177
|
+
elsif @env_list.has_key?(k)
|
178
|
+
# If an ENV is available, use it.
|
179
|
+
puts __FILE__ + (__LINE__).to_s + " #{k} => ENV(#{@env_list[k]}) = #{ENV[@env_list[k].to_s]}" if Scoutui::Utils::TestUtils.instance.isDebug?
|
180
|
+
Scoutui::Base::UserVars.instance.set(k, ENV[@env_list[k].to_s])
|
127
181
|
end
|
128
182
|
end
|
129
183
|
|
130
184
|
puts __FILE__ + (__LINE__).to_s + " test_config => #{@options[:test_config]}" if Scoutui::Utils::TestUtils.instance.isDebug?
|
131
185
|
|
132
|
-
['match_level', 'title', 'app'].each do |k|
|
133
186
|
|
134
|
-
|
187
|
+
# Applitools Eyes settings
|
188
|
+
if @options[:test_config].has_key?('eyes')
|
135
189
|
|
136
|
-
|
137
|
-
_v=@options[:test_config]['eyes'][k].to_s
|
138
|
-
end
|
190
|
+
['match_level', 'title', 'app', 'viewport'].each do |k|
|
139
191
|
|
140
|
-
|
141
|
-
_v=@options[k.to_sym].to_s
|
142
|
-
end
|
192
|
+
_v=nil
|
143
193
|
|
144
|
-
|
145
|
-
|
146
|
-
|
194
|
+
if @options[:test_config]['eyes'].has_key?(k)
|
195
|
+
_v=@options[:test_config]['eyes'][k].to_s
|
196
|
+
end
|
147
197
|
|
148
|
-
|
198
|
+
if !@options[k.to_sym].nil?
|
199
|
+
_v=@options[k.to_sym].to_s
|
200
|
+
end
|
201
|
+
|
202
|
+
if Scoutui::Utils::TestUtils.instance.isDebug?
|
203
|
+
puts __FILE__ + (__LINE__).to_s + " #{k} => #{_v}"
|
204
|
+
end
|
149
205
|
|
206
|
+
Scoutui::Base::UserVars.instance.set('eyes.' + k, _v) if !_v.nil?
|
207
|
+
|
208
|
+
end
|
150
209
|
end
|
151
210
|
|
152
211
|
@options[:test_config]
|
153
212
|
end
|
154
213
|
|
214
|
+
|
215
|
+
def getTestConfig()
|
216
|
+
@options[:test_config]
|
217
|
+
end
|
218
|
+
|
155
219
|
def match_level()
|
156
220
|
@options[:match_level]
|
157
221
|
end
|
data/lib/scoutui/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: scoutui
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.3
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Peter Kim
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2015-10-
|
11
|
+
date: 2015-10-15 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -125,7 +125,18 @@ files:
|
|
125
125
|
- README.md
|
126
126
|
- Rakefile
|
127
127
|
- bin/console
|
128
|
+
- bin/scoutui_driver.rb
|
128
129
|
- bin/setup
|
130
|
+
- examples/ex1/commands.yml
|
131
|
+
- examples/ex1/test-example.sh
|
132
|
+
- examples/ex1/test.config.json
|
133
|
+
- examples/ex2/commands.yml
|
134
|
+
- examples/ex2/page_model.json
|
135
|
+
- examples/ex2/test-example.sh
|
136
|
+
- examples/ex2/test.config.json
|
137
|
+
- examples/ex6/commands.yml
|
138
|
+
- examples/ex6/ex1.config.json
|
139
|
+
- examples/ex6/test-example.sh
|
129
140
|
- lib/scoutui.rb
|
130
141
|
- lib/scoutui/base/q_accounts.rb
|
131
142
|
- lib/scoutui/base/q_applitools.rb
|