lib/scoutui/eyes/eye_scout.rb in scoutui-2.0.3.15.pre vs lib/scoutui/eyes/eye_scout.rb in scoutui-2.0.3.16.pre
- old
+ new
@@ -1,8 +1,10 @@
#require 'eyes_selenium'
#require 'testmgr'
require 'httparty'
+#require 'uri'
+#require 'cgi'
module Scoutui::Eyes
class EyeScout
@@ -34,14 +36,31 @@
#---- 5150 -----
def get_session_id(url)
Scoutui::Logger::LogMgr.instance.info __FILE__ + (__LINE__).to_s + " -- get_session_id(#{url}) =="
_s=/sessions\/(?<session>\d+)/.match(url)[1]
+ end
+ def get_accountid(url)
+ Scoutui::Logger::LogMgr.instance.info __FILE__ + (__LINE__).to_s + " -- get_account_id(#{url}) =="
+
+ uri = URI(url)
+ queryString = CGI::parse(uri.query)
+
+ accountid = queryString['accountId'] || queryString['accountid']
+
+ Scoutui::Logger::LogMgr.instance.info __FILE__ + (__LINE__).to_s + " => accountId : #{accountid}"
+
+# _s=/sessions\/(?<accountid>\d+)/.match(url)[1]
+
+ accountid.is_a?(Array) ? accountid[0] : accountid
end
- def get_diff_urls(session_id, view_key)
+ def Legacyget_diff_urls(session_id, view_key)
+
+ Scoutui::Logger::LogMgr.instance.debug __FILE__ + (__LINE__).to_s + "=== get_diffs_url(#{session_id} ==="
+
info = "https://eyes.applitools.com/api/sessions/#{session_id}/?ApiKey=#{view_key}&format=json"
diff_template = "https://eyes.applitools.com/api/sessions/#{session_id}/steps/%s/diff?ApiKey=#{view_key}"
diff_urls = Hash.new
Scoutui::Logger::LogMgr.instance.info __FILE__ + (__LINE__).to_s + " info => #{info}"
@@ -68,10 +87,49 @@
;
end
end
+
+ def get_diff_urls(session_id, account_id, view_key)
+
+ Scoutui::Logger::LogMgr.instance.debug __FILE__ + (__LINE__).to_s + " == get_diffs_url(#{session_id} =="
+
+ info = "https://eyes.applitools.com/api/sessions/#{session_id}?ApiKey=#{view_key}&format=json"
+ #info = "https://eyes.applitools.com/api/sessions/#{session_id}?accountId=#{account_id}&format=json"
+ diff_template = "https://eyes.applitools.com/api/sessions/#{session_id}/steps/%s/diff?ApiKey=#{view_key}"
+ diff_template = "https://eyes.applitools.com/api/sessions/#{session_id}?accountId=#{account_id}&format=json"
+
+ Scoutui::Logger::LogMgr.instance.debug __FILE__ + (__LINE__).to_s + " diff_template => #{diff_template}"
+ diff_urls = Hash.new
+
+ Scoutui::Logger::LogMgr.instance.info __FILE__ + (__LINE__).to_s + " info => #{info}"
+ response = HTTParty.get(info)
+
+ Scoutui::Logger::LogMgr.instance.info __FILE__ + (__LINE__).to_s + " RESP => #{response.to_s}"
+
+ begin
+ data = JSON.parse(response.body)
+ index = 1
+ data['actualOutput'].each do |elem|
+ if !elem.nil? && (elem['isMatching'] == false)
+ #diff_urls[index] = diff_template % [index]
+ Scoutui::Logger::LogMgr.instance.info __FILE__ + (__LINE__).to_s + " #{index.to_s} :#{elem['tag'].to_s}"
+ #diff_urls[index] = diff_template % [index]
+ diff_urls[index] = { :tag => elem['tag'].to_s, :url => diff_template % [index] }
+ index+=1
+ end
+ end
+
+ diff_urls
+
+ rescue JSON::ParserError
+ ;
+ end
+
+ end
+
def sanitize_filename(filename)
# Split the name when finding a period which is preceded by some
# character, and is followed by some character other than a period,
# if there is no following period that is followed by something
# other than a period
@@ -85,25 +143,53 @@
# Finally, join the parts with a period and return the result
return fn.join '.'
end
def download_images(diff_urls, destination)
+ Scoutui::Logger::LogMgr.instance.debug __FILE__ + (__LINE__).to_s + " download_images(#{diff_urls}, #{destination}"
+
diff_urls.each do |index, elem|
save_name = sanitize_filename(elem[:tag]) + ".step_#{index}_diff.png"
+ Scoutui::Logger::LogMgr.instance.debug __FILE__ + (__LINE__).to_s + " => download : #{save_name}"
+
File.open("#{destination}/#{save_name}", 'wb') do |file|
file.write HTTParty.get(elem[:url])
end
end
end
+ def Legacy_saveDiffs(_eyes, results, outdir, view_key)
+ Scoutui::Logger::LogMgr.instance.info __FILE__ + (__LINE__).to_s + " saveDiffs(#{outdir.to_s})"
+ Scoutui::Logger::LogMgr.instance.debug __FILE__ + (__LINE__).to_s + " | eyesResults => #{results.to_s}"
+
+ Scoutui::Logger::LogMgr.instance.info __FILE__ + (__LINE__).to_s + " | steps : #{results.steps.to_s}"
+ session_id = get_session_id(results.url)
+ Scoutui::Logger::LogMgr.instance.info __FILE__ + (__LINE__).to_s + " session => #{session_id}"
+
+ diffs = Legacyget_diff_urls(session_id, view_key)
+
+ Scoutui::Logger::LogMgr.instance.debug __FILE__ + (__LINE__).to_s + " diffs => #{diffs}"
+ if diffs.is_a?(Array)
+ diffs.each do |d|
+ Scoutui::Logger::LogMgr.instance.info __FILE__ + (__LINE__).to_s + " #{d.to_s}"
+ end
+
+ download_images(diffs, outdir)
+ end
+
+ end
+
def saveDiffs(_eyes, results, outdir, view_key)
Scoutui::Logger::LogMgr.instance.info __FILE__ + (__LINE__).to_s + " saveDiffs(#{outdir.to_s})"
+ Scoutui::Logger::LogMgr.instance.debug __FILE__ + (__LINE__).to_s + " results => #{results.to_s}"
Scoutui::Logger::LogMgr.instance.info __FILE__ + (__LINE__).to_s + " | steps : #{results.steps.to_s}"
session_id = get_session_id(results.url)
Scoutui::Logger::LogMgr.instance.info __FILE__ + (__LINE__).to_s + " session => #{session_id}"
+ account_id = get_accountid(results.url)
+
diffs = get_diff_urls(session_id, view_key)
diffs.each do |d|
Scoutui::Logger::LogMgr.instance.info __FILE__ + (__LINE__).to_s + " #{d.to_s}"
end
@@ -119,18 +205,29 @@
# Scoutui::Base::QHarMgr.instance.stop('/tmp/scoutui.har')
return if !Scoutui::Utils::TestUtils.instance.eyesEnabled?
@testResults = eyes().close(false)
+ Scoutui::Logger::LogMgr.instance.debug __FILE__ + (__LINE__).to_s + " @eyes => #{eyes().to_s}"
+
+
+ Scoutui::Logger::LogMgr.instance.debug __FILE__ + (__LINE__).to_s + "| app_name : #{eyes().app_name}"
+ Scoutui::Logger::LogMgr.instance.debug __FILE__ + (__LINE__).to_s + "| match_level: #{eyes().match_level}"
+ Scoutui::Logger::LogMgr.instance.debug __FILE__ + (__LINE__).to_s + "| viewport_size: #{eyes().viewport_size.to_s}"
+
+ eyes().viewport_size.to_hash.each_pair do |k, v|
+ Scoutui::Logger::LogMgr.instance.debug " o " + k.to_s + " : " + v.to_s
+ end
+
Testmgr::TestReport.instance.getReq("EYES").testcase('Images').add(@testResults.steps.to_i > 0, "Verify at least 1 shot taken (#{@testResults.steps.to_s} shots)")
Testmgr::TestReport.instance.getReq("EYES").testcase('Images').add(@testResults.missing.to_i==0, "Verify Eyes did not miss any screens (#{@testResults.missing.to_s} screens)")
# 5150
_diffdir=Scoutui::Utils::TestUtils.instance.getDiffDir()
if ENV.has_key?('APPLITOOLS_VIEW_KEY') && !_diffdir.nil?
if Dir.exists?(_diffdir)
- saveDiffs(eyes(), @testResults, _diffdir, ENV['APPLITOOLS_VIEW_KEY'])
+ Legacy_saveDiffs(eyes(), @testResults, _diffdir, ENV['APPLITOOLS_VIEW_KEY'])
else
Scoutui::Logger::LogMgr.instance.warn " Specified Visual Diff folder does not exist - #{_diffdir.to_s}. Unable to download diffs"
end
else
\ No newline at end of file