scoutui 2.0.3.16.pre → 2.0.3.17.pre
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/examples/carmax/tests/test-carmax.sh +53 -6
- data/examples/eyes/diff.rb +114 -0
- data/lib/scoutui/base/user_vars.rb +6 -0
- data/lib/scoutui/base/visual_test_framework.rb +0 -2
- data/lib/scoutui/commands/strategy.rb +0 -7
- data/lib/scoutui/eyes/eye_scout.rb +6 -8
- data/lib/scoutui/eyes/utils.rb +105 -0
- data/lib/scoutui/utils/utils.rb +53 -8
- data/lib/scoutui/version.rb +1 -1
- data/scoutui.gemspec +2 -2
- metadata +6 -5
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 1acb71487e22a33316185331740adf1e43f7c959
|
4
|
+
data.tar.gz: 934261e9b5eaf05481640f8a94aa7dfe7447ffb2
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 0b70b8385211cac1c52a04218c72fd45c237a746b38a8ff006e5e72c767169dac197325c93fe056ffae5238ec34032b57eaa8443683300ca47a5a63e6763a9f2
|
7
|
+
data.tar.gz: 6b27526d6917b81ac5d71e696512282f39e0ed08a898c1797bc69126f40eb211242c360f36068c9819267a2d0a52b881b29672c055b183cbb81ec0444784765f
|
@@ -9,8 +9,9 @@ setup()
|
|
9
9
|
{
|
10
10
|
HOST="https://www.carmax.com"
|
11
11
|
CAPS="--capabilities ../../common/capabilities/win10.chrome50.json"
|
12
|
-
CAPS="--capabilities
|
13
|
-
CAPS=
|
12
|
+
CAPS="--capabilities ../capabilities/win10.ff46.json"
|
13
|
+
# CAPS=
|
14
|
+
# CAPS="--sauce:browser chrome --sauce:platform \"Windows 10\" --sauce:version 46.0 --sauce:resolution 1024x768"
|
14
15
|
|
15
16
|
USER_ID="terrybrown@commasavvy.com"
|
16
17
|
PASSWORD="password1"
|
@@ -23,10 +24,10 @@ setup()
|
|
23
24
|
MODEL="../appmodel/main.nav.json,../appmodel/search_results.json"
|
24
25
|
|
25
26
|
EYES="--eyes --app ${TITLE} --title ${TITLE} --match layout2"
|
26
|
-
|
27
|
+
EYES=
|
27
28
|
|
28
29
|
SAUCE="--sauce --sauce_name ${TITLE}"
|
29
|
-
SAUCE="--browser chrome"
|
30
|
+
# SAUCE="--browser chrome"
|
30
31
|
|
31
32
|
CMD="../commands/commands.yml"
|
32
33
|
CMD="../commands/basic_search.yml"
|
@@ -37,10 +38,43 @@ setup()
|
|
37
38
|
|
38
39
|
|
39
40
|
|
41
|
+
run1()
|
42
|
+
{
|
40
43
|
|
41
|
-
|
44
|
+
EYES=
|
45
|
+
EYES="--eyes --app ${TITLE}.1280 --title ${TITLE} --match layout2"
|
46
|
+
VIEWPORT="--viewport 1024x670"
|
47
|
+
# VIEWPORT="--viewport 1024x722"
|
48
|
+
VIEWPORT=
|
49
|
+
# --sauce:platform "Windows 10" --sauce:build SmokeEx --sauce:name Smokes --sauce:browsername "MicrosoftEdge" --sauce:browser "MS Edge 13.10586" --sauce:version "13.10586" --sauce:resolution "1280x1024" \
|
42
50
|
|
43
|
-
|
51
|
+
ruby $SCOUTUI_BIN \
|
52
|
+
--config ${TESTCFG} \
|
53
|
+
--user "expense.admin@scoutui.com" --password password1 \
|
54
|
+
${EYES} ${VIEWPORT} \
|
55
|
+
--diff /tmp/vt \
|
56
|
+
--eyes:run true \
|
57
|
+
--eyes:viewport 1024x670 \
|
58
|
+
--eyes:app "CarMaxTestApp" \
|
59
|
+
--eyes:title "CarMaxTitle" \
|
60
|
+
--sauce:run false \
|
61
|
+
--sauce:platform "Windows 10" \
|
62
|
+
--sauce:build SmokeEx \
|
63
|
+
--sauce:name Smokes \
|
64
|
+
--sauce:browser "chrome" \
|
65
|
+
--sauce:version "beta" \
|
66
|
+
--sauce:resolution "1280x1024" \
|
67
|
+
--host ${HOST} \
|
68
|
+
--pages ${MODEL} \
|
69
|
+
--debug \
|
70
|
+
--dut "${CMD}"
|
71
|
+
|
72
|
+
}
|
73
|
+
|
74
|
+
run2()
|
75
|
+
{
|
76
|
+
|
77
|
+
CAPS="--capabilities ../capabilities/win10.ff46.json"
|
44
78
|
|
45
79
|
ruby $SCOUTUI_BIN \
|
46
80
|
--config ${TESTCFG} \
|
@@ -50,8 +84,21 @@ ruby $SCOUTUI_BIN \
|
|
50
84
|
--viewport ${VIEWPORT} \
|
51
85
|
${SAUCE} \
|
52
86
|
${CAPS} \
|
87
|
+
--sauce:platform PETER.0 \
|
53
88
|
--host ${HOST} \
|
54
89
|
--pages ${MODEL} \
|
55
90
|
--debug \
|
56
91
|
--dut "${CMD}"
|
57
92
|
|
93
|
+
}
|
94
|
+
|
95
|
+
# --sauce:browser chrome --sauce:platform "Windows 10" \
|
96
|
+
|
97
|
+
setup
|
98
|
+
|
99
|
+
mkdir -p /tmp/vt
|
100
|
+
run1
|
101
|
+
|
102
|
+
|
103
|
+
|
104
|
+
|
@@ -0,0 +1,114 @@
|
|
1
|
+
##
|
2
|
+
# rspec diff.rb
|
3
|
+
##
|
4
|
+
|
5
|
+
require 'test/unit'
|
6
|
+
require 'eyes_selenium'
|
7
|
+
require 'httparty'
|
8
|
+
#require 'selenium-webdriver'
|
9
|
+
|
10
|
+
class MyTest < Test::Unit::TestCase
|
11
|
+
|
12
|
+
def setup
|
13
|
+
@eyes = Applitools::Eyes.new
|
14
|
+
# This is your api key, make sure you use it in all your tests.
|
15
|
+
@eyes.api_key = ENV['APPLITOOLS_API_KEY']
|
16
|
+
@viewKey = ENV['APPLITOOLS_VIEW_KEY']
|
17
|
+
|
18
|
+
# Get a selenium web driver object.
|
19
|
+
@driver = Selenium::WebDriver.for :chrome
|
20
|
+
#Eyes.log_handler = Logger.new(STDOUT)
|
21
|
+
end
|
22
|
+
|
23
|
+
# Called after every test method runs. Can be used to tear
|
24
|
+
# down fixture information.
|
25
|
+
|
26
|
+
def teardown
|
27
|
+
@eyes.abort_if_not_closed
|
28
|
+
@driver.quit
|
29
|
+
end
|
30
|
+
|
31
|
+
# Fake test
|
32
|
+
def test_1
|
33
|
+
#@eyes.baseline_name='my_test_name'
|
34
|
+
|
35
|
+
wrapped_driver = @eyes.open(
|
36
|
+
app_name: 'Applitools website',
|
37
|
+
test_name: 'Example test',
|
38
|
+
viewport_size: {width: 900, height: 650},
|
39
|
+
driver: @driver)
|
40
|
+
wrapped_driver.get 'https://www.applitools.com'
|
41
|
+
# Visual validation point #1
|
42
|
+
@eyes.check_window('Main Page')
|
43
|
+
|
44
|
+
wrapped_driver.find_element(:css, ".features>a").click
|
45
|
+
# Visual validation point #2
|
46
|
+
@eyes.check_window('Features Page')
|
47
|
+
results = @eyes.close(false)
|
48
|
+
|
49
|
+
download_diffs(results, @viewKey, '/tmp/vt')
|
50
|
+
print_results(results, @viewKey)
|
51
|
+
end
|
52
|
+
|
53
|
+
def print_results(results, view_key)
|
54
|
+
if results.is_passed
|
55
|
+
print "Your test was passed!\n"
|
56
|
+
elsif results.is_new
|
57
|
+
print "Created new baseline, this is a new test or/and new configuration!"
|
58
|
+
else
|
59
|
+
print "Your test was failed!\n"
|
60
|
+
print "#{results.mismatches} out of #{results.steps} steps failed \n"
|
61
|
+
print "Here are the failed steps:\n"
|
62
|
+
session_id = get_session_id(results.url)
|
63
|
+
batch_id = get_batch_id(results.url)
|
64
|
+
diff_urls = get_diff_urls(batch_id, session_id, view_key)
|
65
|
+
diff_urls.each do |index, diff_url|
|
66
|
+
print "Step #{index} --> #{diff_url} \n"
|
67
|
+
end
|
68
|
+
print "For more details please go to #{results.url} to review the differences! \n"
|
69
|
+
end
|
70
|
+
end
|
71
|
+
|
72
|
+
def download_diffs(results, view_key, destination)
|
73
|
+
session_id = get_session_id(results.url)
|
74
|
+
batch_id = get_batch_id(results.url)
|
75
|
+
diff_urls = get_diff_urls(batch_id, session_id, view_key)
|
76
|
+
download_images(diff_urls, destination)
|
77
|
+
end
|
78
|
+
|
79
|
+
def download_images(diff_urls, destination)
|
80
|
+
diff_urls.each do |index, url|
|
81
|
+
File.open("#{destination}/step_#{index}_diff.png", 'wb') do |file|
|
82
|
+
file.write HTTParty.get(url)
|
83
|
+
end
|
84
|
+
end
|
85
|
+
end
|
86
|
+
|
87
|
+
def get_diff_urls(batch_id, session_id, view_key)
|
88
|
+
info = "https://eyes.applitools.com/api/sessions/batches/#{batch_id}/#{session_id}/?ApiKey=#{view_key}&format=json"
|
89
|
+
print "\r\n info:" + info + "\r\n"
|
90
|
+
diff_template = "https://eyes.applitools.com/api/sessions/batches/#{batch_id}/#{session_id}/steps/%s/diff?ApiKey=#{view_key}"
|
91
|
+
print "\r\n Template:" + diff_template + "\r\n"
|
92
|
+
diff_urls = Hash.new
|
93
|
+
response = HTTParty.get(info)
|
94
|
+
data = JSON.parse(response.body)
|
95
|
+
print (data)
|
96
|
+
index = 1
|
97
|
+
data['actualAppOutput'].each do |elem|
|
98
|
+
if (elem['isMatching'] == false)
|
99
|
+
diff_urls[index] = diff_template % [index]
|
100
|
+
index+=1
|
101
|
+
end
|
102
|
+
end
|
103
|
+
|
104
|
+
diff_urls
|
105
|
+
end
|
106
|
+
|
107
|
+
def get_session_id(url)
|
108
|
+
/sessions\/\d+\/(?<sessionId>\d+)/.match(url)[1]
|
109
|
+
end
|
110
|
+
|
111
|
+
def get_batch_id(url)
|
112
|
+
/sessions\/(?<batchId>\d+)/.match(url)[1]
|
113
|
+
end
|
114
|
+
end
|
@@ -28,6 +28,12 @@ module Scoutui::Base
|
|
28
28
|
end
|
29
29
|
|
30
30
|
def getViewPort()
|
31
|
+
_viewport = Scoutui::Base::UserVars.instance.getVar('eyes.viewport')
|
32
|
+
|
33
|
+
if _viewport.nil? || _viewport.empty?
|
34
|
+
return nil
|
35
|
+
end
|
36
|
+
|
31
37
|
arr=Scoutui::Base::UserVars.instance.getVar('eyes.viewport').match(/^\s*(\d+)\s*x\s*(\d+)\s*$/i)
|
32
38
|
_sz={}
|
33
39
|
if arr.size==3
|
@@ -220,13 +220,6 @@ module Scoutui::Commands
|
|
220
220
|
|
221
221
|
sauce_endpoint = "http://#{ENV['SAUCE_USERNAME']}:#{ENV['SAUCE_ACCESS_KEY']}@ondemand.saucelabs.com:80/wd/hub"
|
222
222
|
|
223
|
-
caps[:name]=Scoutui::Utils::TestUtils.instance.getSauceName()
|
224
|
-
caps[:tags]=[caps[:name], "ScoutUI"]
|
225
|
-
|
226
|
-
if !Scoutui::Utils::TestUtils.instance.getSauceBuild().nil?
|
227
|
-
caps[:build] = Scoutui::Utils::TestUtils.instance.getSauceBuild()
|
228
|
-
end
|
229
|
-
|
230
223
|
begin
|
231
224
|
if client.nil?
|
232
225
|
puts __FILE__ + (__LINE__).to_s + " caps => #{caps}"
|
@@ -1,8 +1,5 @@
|
|
1
|
-
#require 'eyes_selenium'
|
2
|
-
#require 'testmgr'
|
3
1
|
require 'httparty'
|
4
|
-
|
5
|
-
#require 'cgi'
|
2
|
+
|
6
3
|
|
7
4
|
module Scoutui::Eyes
|
8
5
|
|
@@ -18,7 +15,7 @@ module Scoutui::Eyes
|
|
18
15
|
end
|
19
16
|
|
20
17
|
def navigate(url)
|
21
|
-
|
18
|
+
@strategy.navigate(url)
|
22
19
|
end
|
23
20
|
|
24
21
|
def drv()
|
@@ -226,7 +223,8 @@ module Scoutui::Eyes
|
|
226
223
|
if ENV.has_key?('APPLITOOLS_VIEW_KEY') && !_diffdir.nil?
|
227
224
|
|
228
225
|
if Dir.exists?(_diffdir)
|
229
|
-
|
226
|
+
# Legacy_saveDiffs(eyes(), @testResults, _diffdir, ENV['APPLITOOLS_VIEW_KEY'])
|
227
|
+
Scoutui::Eyes::Utils.instance.download_diffs(@testResults, ENV['APPLITOOLS_VIEW_KEY'], _diffdir)
|
230
228
|
else
|
231
229
|
Scoutui::Logger::LogMgr.instance.warn " Specified Visual Diff folder does not exist - #{_diffdir.to_s}. Unable to download diffs"
|
232
230
|
end
|
@@ -271,14 +269,14 @@ module Scoutui::Eyes
|
|
271
269
|
|
272
270
|
if Scoutui::Utils::TestUtils.instance.eyesEnabled?
|
273
271
|
Scoutui::Logger::LogMgr.instance.debug " testResults.methods = #{@testResults.methods.sort.to_s}"
|
274
|
-
Scoutui::Logger::LogMgr.instance.info " Eyes.TestResults.
|
272
|
+
Scoutui::Logger::LogMgr.instance.info " Eyes.TestResults.isNew : #{@testResults.is_new.to_s}"
|
275
273
|
Scoutui::Logger::LogMgr.instance.info " Eyes.TestResults.Matches : #{@testResults.matches.to_s}"
|
276
274
|
Scoutui::Logger::LogMgr.instance.info " Eyes.TestResults.Mismatches : #{@testResults.mismatches.to_s}"
|
277
275
|
Scoutui::Logger::LogMgr.instance.info " Eyes.TestResults.Passed : #{@testResults.passed?.to_s}"
|
278
276
|
Scoutui::Logger::LogMgr.instance.info " Eyes.TestResults.Steps : #{@testResults.steps.to_s}"
|
279
277
|
end
|
280
278
|
|
281
|
-
Scoutui::Logger::LogMgr.instance.info " TestReport => #{@testResults}"
|
279
|
+
Scoutui::Logger::LogMgr.instance.info " TestReport.Tap => #{@testResults.to_json}"
|
282
280
|
|
283
281
|
Testmgr::TestReport.instance.report()
|
284
282
|
|
@@ -0,0 +1,105 @@
|
|
1
|
+
|
2
|
+
require 'singleton'
|
3
|
+
require 'pp'
|
4
|
+
require 'optparse'
|
5
|
+
|
6
|
+
|
7
|
+
module Scoutui::Eyes
|
8
|
+
|
9
|
+
|
10
|
+
class Utils
|
11
|
+
include Singleton
|
12
|
+
|
13
|
+
def sanitize_filename(filename)
|
14
|
+
# Split the name when finding a period which is preceded by some
|
15
|
+
# character, and is followed by some character other than a period,
|
16
|
+
# if there is no following period that is followed by something
|
17
|
+
# other than a period
|
18
|
+
fn = filename.split /(?<=.)\.(?=[^.])(?!.*\.[^.])/m
|
19
|
+
|
20
|
+
# We now have one or two parts (depending on whether we could find
|
21
|
+
# a suitable period). For each of these parts, replace any unwanted
|
22
|
+
# sequence of characters with an underscore
|
23
|
+
fn.map! { |s| s.gsub /[^a-z0-9\-]+/i, '_' }
|
24
|
+
|
25
|
+
# Finally, join the parts with a period and return the result
|
26
|
+
return fn.join '.'
|
27
|
+
end
|
28
|
+
|
29
|
+
|
30
|
+
def get_session_id(url)
|
31
|
+
/sessions\/\d+\/(?<sessionId>\d+)/.match(url)[1]
|
32
|
+
end
|
33
|
+
|
34
|
+
def get_batch_id(url)
|
35
|
+
/sessions\/(?<batchId>\d+)/.match(url)[1]
|
36
|
+
end
|
37
|
+
|
38
|
+
def print_results(results, view_key)
|
39
|
+
if results.is_passed
|
40
|
+
print "Your test was passed!\n"
|
41
|
+
elsif results.is_new
|
42
|
+
print "Created new baseline, this is a new test or/and new configuration!"
|
43
|
+
else
|
44
|
+
print "Your test was failed!\n"
|
45
|
+
print "#{results.mismatches} out of #{results.steps} steps failed \n"
|
46
|
+
print "Here are the failed steps:\n"
|
47
|
+
session_id = get_session_id(results.url)
|
48
|
+
batch_id = get_batch_id(results.url)
|
49
|
+
diff_urls = get_diff_urls(batch_id, session_id, view_key)
|
50
|
+
diff_urls.each do |index, diff_url|
|
51
|
+
print "Step #{index} --> #{diff_url} \n"
|
52
|
+
end
|
53
|
+
print "For more details please go to #{results.url} to review the differences! \n"
|
54
|
+
end
|
55
|
+
end
|
56
|
+
|
57
|
+
def download_diffs(results, view_key, destination)
|
58
|
+
Scoutui::Logger::LogMgr.instance.debug __FILE__ + (__LINE__).to_s + " download_diffs(#{destination}"
|
59
|
+
session_id = get_session_id(results.url)
|
60
|
+
batch_id = get_batch_id(results.url)
|
61
|
+
diff_urls = get_diff_urls(batch_id, session_id, view_key)
|
62
|
+
|
63
|
+
Scoutui::Logger::LogMgr.instance.debug __FILE__ + (__LINE__).to_s + " session_id : #{session_id}, batch_id : #{batch_id}"
|
64
|
+
|
65
|
+
download_images(diff_urls, destination)
|
66
|
+
end
|
67
|
+
|
68
|
+
def download_images(diff_urls, destination)
|
69
|
+
diff_urls.each do |index, elem|
|
70
|
+
save_name = sanitize_filename(elem[:tag]) + ".#{elem[:isMatching].to_s}.step_#{elem[:index]}_diff.png"
|
71
|
+
File.open("#{destination}/#{save_name}", 'wb') do |file|
|
72
|
+
file.write HTTParty.get(elem[:url])
|
73
|
+
end
|
74
|
+
end
|
75
|
+
end
|
76
|
+
|
77
|
+
def get_diff_urls(batch_id, session_id, view_key)
|
78
|
+
info = "https://eyes.applitools.com/api/sessions/batches/#{batch_id}/#{session_id}/?ApiKey=#{view_key}&format=json"
|
79
|
+
print "\r\n info:" + info + "\r\n"
|
80
|
+
diff_template = "https://eyes.applitools.com/api/sessions/batches/#{batch_id}/#{session_id}/steps/%s/diff?ApiKey=#{view_key}"
|
81
|
+
print "\r\n Template:" + diff_template + "\r\n"
|
82
|
+
diff_urls = Hash.new
|
83
|
+
response = HTTParty.get(info)
|
84
|
+
data = JSON.parse(response.body)
|
85
|
+
print (data)
|
86
|
+
|
87
|
+
index = 1
|
88
|
+
data['actualAppOutput'].each do |elem|
|
89
|
+
puts __FILE__ + (__LINE__).to_s + " elem => #{elem}"
|
90
|
+
puts __FILE__ + (__LINE__).to_s + " | o isMatching : #{elem['isMatching']}"
|
91
|
+
if (!elem.nil?)
|
92
|
+
# diff_urls[index] = diff_template % [index]
|
93
|
+
diff_urls[index] = { :tag => elem['tag'].to_s, :isMatching => elem['isMatching'], :url => diff_template % [index], :index => index }
|
94
|
+
end
|
95
|
+
index+=1
|
96
|
+
|
97
|
+
end
|
98
|
+
|
99
|
+
diff_urls
|
100
|
+
end
|
101
|
+
|
102
|
+
end
|
103
|
+
|
104
|
+
|
105
|
+
end
|
data/lib/scoutui/utils/utils.rb
CHANGED
@@ -4,7 +4,6 @@ require 'pp'
|
|
4
4
|
require 'optparse'
|
5
5
|
|
6
6
|
|
7
|
-
|
8
7
|
module Scoutui::Utils
|
9
8
|
|
10
9
|
|
@@ -32,7 +31,7 @@ module Scoutui::Utils
|
|
32
31
|
|
33
32
|
[:accounts, :browser, :capabilities, :diffs_dir, :test_file, :host, :loc, :title, :viewport,
|
34
33
|
:userid, :password, :json_config_file, :page_model, :test_config,
|
35
|
-
:
|
34
|
+
:debug].each do |o|
|
36
35
|
@options[o]=nil
|
37
36
|
end
|
38
37
|
|
@@ -49,6 +48,7 @@ module Scoutui::Utils
|
|
49
48
|
@app_model=nil
|
50
49
|
|
51
50
|
Scoutui::Base::UserVars.instance.set('eyes.viewport', '1024x768')
|
51
|
+
Scoutui::Base::UserVars.instance.set('eyes.viewport', nil)
|
52
52
|
|
53
53
|
end
|
54
54
|
|
@@ -186,7 +186,9 @@ module Scoutui::Utils
|
|
186
186
|
}
|
187
187
|
opt.on('-k', '--key EyesLicense') { |o| options[:license_file] = o }
|
188
188
|
opt.on('-a', '--app AppName') { |o| @options[:app] = o }
|
189
|
+
|
189
190
|
opt.on('--match [LEVEL]', [:layout2, :layout, :strict, :exact, :content], "Select match level (layout, strict, exact, content)") { |o| @options[:match_level] = o }
|
191
|
+
opt.on('--eyes:match [LEVEL]', [:layout2, :layout, :strict, :exact, :content], "Select match level (layout, strict, exact, content)") { |o| @options[:match_level] = o }
|
190
192
|
|
191
193
|
opt.on("--pages a,b,c", Array, "List of page models") do |list|
|
192
194
|
Scoutui::Logger::LogMgr.instance.info __FILE__ + (__LINE__).to_s + " list => #{list}"
|
@@ -215,18 +217,34 @@ module Scoutui::Utils
|
|
215
217
|
opt.on('-e', '--eyes', "Toggle eyes") {
|
216
218
|
@options[:enable_eyes]=true
|
217
219
|
}
|
220
|
+
opt.on('--eyes:run Bool', [:true, :false]) { |o| @options[:enable_eyes] = !o.match(/true/i).nil? }
|
221
|
+
opt.on('--eyes:app AppName') { |o| @options[:app] = o }
|
222
|
+
opt.on('--eyes:title Title') { |o| @options[:title] = o }
|
223
|
+
opt.on('--eyes:viewport [resolution]') { |o| @options[:viewport] = o }
|
224
|
+
|
218
225
|
|
219
226
|
opt.on('--role ROLE') { |o| @options[:role]=o }
|
220
227
|
|
221
228
|
opt.on('-s', '--sauce', "Toggle SauceLabs") {
|
222
229
|
@options[:enable_sauce]=true
|
223
230
|
}
|
231
|
+
|
232
|
+
opt.on('--sauce:run NAME', [:true, :false]) { |o|
|
233
|
+
@options[:sauce_run] = !o.match(/true/i).nil?
|
234
|
+
}
|
224
235
|
opt.on('--sauce_name NAME') { |o| @options[:sauce_name] = o }
|
236
|
+
opt.on('--sauce:name NAME') { |o| @options[:sauce_name] = o }
|
225
237
|
opt.on('--sauce:build id') { |o| @options[:sauce_build] = o }
|
226
|
-
opt.on('--sauce:
|
227
|
-
opt.on('--sauce:
|
228
|
-
|
229
|
-
opt.on('--
|
238
|
+
opt.on('--sauce:browser Browser') { |o| @options[:sauce_browser] = o }
|
239
|
+
opt.on('--sauce:browsername BrowserName') { |o| @options[:sauce_browsername] = o }
|
240
|
+
opt.on('--sauce:platform Platform') { |o| @options[:sauce_platform] = o }
|
241
|
+
opt.on('--sauce:resolution Resolution') { |o| @options[:sauce_resolution] = o }
|
242
|
+
opt.on('--sauce:version Version') { |o| @options[:sauce_version] = o }
|
243
|
+
|
244
|
+
opt.on('--viewport [resolution]') { |o|
|
245
|
+
@options[:viewport] = o
|
246
|
+
Scoutui::Base::UserVars.instance.set('eyes.viewport', @options[:viewport])
|
247
|
+
}
|
230
248
|
end.parse!
|
231
249
|
|
232
250
|
if Scoutui::Utils::TestUtils.instance.isDebug?
|
@@ -245,20 +263,47 @@ module Scoutui::Utils
|
|
245
263
|
Scoutui::Logger::LogMgr.instance.info "Viewport => #{@options[:viewport]}"
|
246
264
|
Scoutui::Logger::LogMgr.instance.info "Viewport (Var) => #{Scoutui::Base::UserVars.instance.getViewPort().to_s}"
|
247
265
|
Scoutui::Logger::LogMgr.instance.info "PageModel file => #{@options[:page_model].to_s}"
|
266
|
+
Scoutui::Logger::LogMgr.instance.info "Sauce.Platform => #{@options[:sauce_platform].to_s}"
|
248
267
|
end
|
249
268
|
|
250
269
|
@options
|
251
270
|
end
|
252
271
|
|
253
272
|
def getCapabilities()
|
254
|
-
if
|
255
|
-
|
273
|
+
@options[:capabilities]=Hash.new if @options.has_key?(:capabilities) && @options[:capabilities].nil?
|
274
|
+
|
275
|
+
if @options.has_key?(:sauce_platform) && !@options[:sauce_platform].nil?
|
276
|
+
@options[:capabilities][:platform]=@options[:sauce_platform]
|
256
277
|
end
|
257
278
|
|
258
279
|
if !sauceResolution().nil?
|
259
280
|
@options[:capabilities][:screenResolution]=sauceResolution()
|
260
281
|
end
|
261
282
|
|
283
|
+
if @options.has_key?(:sauce_browser)
|
284
|
+
@options[:capabilities][:browser] = @options[:sauce_browser]
|
285
|
+
end
|
286
|
+
|
287
|
+
if @options.has_key?(:sauce_version)
|
288
|
+
@options[:capabilities][:version] = @options[:sauce_version]
|
289
|
+
end
|
290
|
+
|
291
|
+
if @options.has_key?(:sauce_name)
|
292
|
+
@options[:capabilities][:name] = @options[:sauce_name]
|
293
|
+
end
|
294
|
+
|
295
|
+
if @options.has_key?(:sauce_build)
|
296
|
+
@options[:capabilities][:build] = @options[:sauce_build]
|
297
|
+
end
|
298
|
+
|
299
|
+
if @options.has_key?(:sauce_browsername)
|
300
|
+
@options[:capabilities][:browserName] = @options[:sauce_browsername]
|
301
|
+
end
|
302
|
+
|
303
|
+
Scoutui::Logger::LogMgr.instance.debug __FILE__ + (__LINE__).to_s + " caps => #{@options[:capabilities].to_s}"
|
304
|
+
|
305
|
+
@options[:capabilities][:tags]=[@options[:sauce_name], "ScoutUI"]
|
306
|
+
|
262
307
|
@options[:capabilities]
|
263
308
|
end
|
264
309
|
|
data/lib/scoutui/version.rb
CHANGED
data/scoutui.gemspec
CHANGED
@@ -6,7 +6,7 @@ require 'scoutui/version'
|
|
6
6
|
Gem::Specification.new do |spec|
|
7
7
|
spec.name = "scoutui"
|
8
8
|
spec.version = Scoutui::VERSION
|
9
|
-
spec.authors = ["Peter Kim"
|
9
|
+
spec.authors = ["Peter Kim"]
|
10
10
|
spec.email = ["h20dragon@outlook.com"]
|
11
11
|
|
12
12
|
spec.summary = %q{Simple yet powerful application model based automation framework.}
|
@@ -26,7 +26,7 @@ Gem::Specification.new do |spec|
|
|
26
26
|
spec.add_development_dependency "rake"
|
27
27
|
spec.add_development_dependency "rspec"
|
28
28
|
spec.add_development_dependency "eyes_selenium", ">= 2.28"
|
29
|
-
spec.add_development_dependency "selenium-webdriver", ">= 2.
|
29
|
+
spec.add_development_dependency "selenium-webdriver", ">= 2.53.4"
|
30
30
|
spec.add_development_dependency "httparty", ">=0.13.7"
|
31
31
|
spec.add_development_dependency "json", ">= 1.8.3"
|
32
32
|
spec.add_development_dependency "faker"
|
metadata
CHANGED
@@ -1,15 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: scoutui
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 2.0.3.
|
4
|
+
version: 2.0.3.17.pre
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Peter Kim
|
8
|
-
- Joshua Peeling
|
9
8
|
autorequire:
|
10
9
|
bindir: exe
|
11
10
|
cert_chain: []
|
12
|
-
date: 2016-
|
11
|
+
date: 2016-07-02 00:00:00.000000000 Z
|
13
12
|
dependencies:
|
14
13
|
- !ruby/object:Gem::Dependency
|
15
14
|
name: bundler
|
@@ -73,14 +72,14 @@ dependencies:
|
|
73
72
|
requirements:
|
74
73
|
- - ">="
|
75
74
|
- !ruby/object:Gem::Version
|
76
|
-
version:
|
75
|
+
version: 2.53.4
|
77
76
|
type: :development
|
78
77
|
prerelease: false
|
79
78
|
version_requirements: !ruby/object:Gem::Requirement
|
80
79
|
requirements:
|
81
80
|
- - ">="
|
82
81
|
- !ruby/object:Gem::Version
|
83
|
-
version:
|
82
|
+
version: 2.53.4
|
84
83
|
- !ruby/object:Gem::Dependency
|
85
84
|
name: httparty
|
86
85
|
requirement: !ruby/object:Gem::Requirement
|
@@ -219,6 +218,7 @@ files:
|
|
219
218
|
- examples/ex2/tests/test-example2.sh
|
220
219
|
- examples/ex2/tests/test-example3.sauce.sh
|
221
220
|
- examples/ex2/tests/test-example3.sh
|
221
|
+
- examples/eyes/diff.rb
|
222
222
|
- examples/eyes/ex2.rb
|
223
223
|
- examples/eyes_results/response.json
|
224
224
|
- lib/scoutui.rb
|
@@ -254,6 +254,7 @@ files:
|
|
254
254
|
- lib/scoutui/commands/verify_form.rb
|
255
255
|
- lib/scoutui/eyes/eye_factory.rb
|
256
256
|
- lib/scoutui/eyes/eye_scout.rb
|
257
|
+
- lib/scoutui/eyes/utils.rb
|
257
258
|
- lib/scoutui/logger/log_mgr.rb
|
258
259
|
- lib/scoutui/navigator.rb
|
259
260
|
- lib/scoutui/utils/utils.rb
|