scoutui 2.0.3.16.pre → 2.0.3.17.pre
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/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
|