scoutui 2.0.3.18.pre → 2.0.3.19.pre
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/examples/ci_reporter/ci_example.rb +38 -0
- data/lib/scoutui/base/assertions.rb +1 -1
- data/lib/scoutui/base/q_browser.rb +24 -4
- data/lib/scoutui/base/test_scout.rb +1 -1
- data/lib/scoutui/base/user_vars.rb +2 -0
- data/lib/scoutui/base/visual_test_framework.rb +52 -3
- data/lib/scoutui/commands/click_object.rb +1 -1
- data/lib/scoutui/commands/command.rb +1 -1
- data/lib/scoutui/commands/commands.rb +1 -1
- data/lib/scoutui/commands/exists_alert.rb +1 -1
- data/lib/scoutui/commands/jsalert/action_jsalert.rb +2 -2
- data/lib/scoutui/commands/pause.rb +1 -1
- data/lib/scoutui/commands/select_object.rb +7 -1
- data/lib/scoutui/commands/type.rb +7 -1
- data/lib/scoutui/eyes/utils.rb +1 -1
- data/lib/scoutui/utils/utils.rb +2 -1
- data/lib/scoutui/version.rb +1 -1
- metadata +3 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 00a1acf77b739a88af187528513463e7da2ff1ac
|
4
|
+
data.tar.gz: c6159df60949f38ca5f7004af666cdce4b367394
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 3a89c30738f2407fffce2946428f5a3ef5ea20766b98dc34b575d26dc755adad9aea94341c1cb1bdc9888fe14129f56774f4e89f4cbce33fa3e60fa0343c3473
|
7
|
+
data.tar.gz: e82becf0c4a8cbda2f1e6963554c4bd2a38f14a67498b80cad2d50c45371fedb5235ad8111399e1e94baa5d7380785c63e6603f3ca912a99e6e6f3ec5088adbf
|
@@ -0,0 +1,38 @@
|
|
1
|
+
require 'nokogiri'
|
2
|
+
# http://stackoverflow.com/questions/10300095/how-to-add-child-nodes-in-nodeset-using-nokogiri
|
3
|
+
|
4
|
+
def addSkipped(node, doc)
|
5
|
+
skipped = Nokogiri::XML::Node.new('skipped', doc)
|
6
|
+
node.add_child skipped
|
7
|
+
end
|
8
|
+
|
9
|
+
doc = Nokogiri::XML("<testsuites></testsuites>")
|
10
|
+
|
11
|
+
## Add a node
|
12
|
+
ts = Nokogiri::XML::Node.new('testcase', doc)
|
13
|
+
|
14
|
+
#ts.content='pass'
|
15
|
+
ts.set_attribute('name', 'my testcase')
|
16
|
+
ts.set_attribute('classname', 'scoutui.assert')
|
17
|
+
ts.set_attribute('time', 29)
|
18
|
+
|
19
|
+
#skipped = Nokogiri::XML::Node.new('skipped', doc)
|
20
|
+
#ts.add_child skipped
|
21
|
+
addSkipped(ts, doc)
|
22
|
+
doc.root.add_child ts
|
23
|
+
|
24
|
+
|
25
|
+
node_set = Nokogiri::XML::NodeSet.new(doc)
|
26
|
+
|
27
|
+
|
28
|
+
sys_out = Nokogiri::XML::Node.new('system-out', doc)
|
29
|
+
sys_out.content='my STDOUT dump'
|
30
|
+
doc.root.add_child(sys_out)
|
31
|
+
|
32
|
+
sys_err = Nokogiri::XML::Node.new('system-err', doc)
|
33
|
+
sys_err.content='my STDERR dump'
|
34
|
+
doc.root.add_child(sys_err)
|
35
|
+
|
36
|
+
|
37
|
+
puts doc.to_s
|
38
|
+
|
@@ -187,7 +187,7 @@ module Scoutui::Base
|
|
187
187
|
end
|
188
188
|
|
189
189
|
|
190
|
-
def
|
190
|
+
def isEnabled(my_driver, page_elt, _req=nil, _immediate=false)
|
191
191
|
Scoutui::Logger::LogMgr.instance.debug __FILE__ + (__LINE__).to_s + " isEanbled(#{page_elt}"
|
192
192
|
end
|
193
193
|
|
@@ -1,7 +1,4 @@
|
|
1
1
|
|
2
|
-
#require 'eyes_selenium'
|
3
|
-
#require 'selenium-webdriver'
|
4
|
-
|
5
2
|
module Scoutui::Base
|
6
3
|
|
7
4
|
|
@@ -16,6 +13,23 @@ module Scoutui::Base
|
|
16
13
|
drv.browser.to_s.match(/chrome/i)
|
17
14
|
end
|
18
15
|
|
16
|
+
def self.wait_for_not_displayed(drv, locator, _timeout=30)
|
17
|
+
Scoutui::Logger::LogMgr.instance.debug __FILE__ + (__LINE__).to_s + " wait_for_not_displayed(#{xpath}"
|
18
|
+
rc=nil
|
19
|
+
begin
|
20
|
+
Selenium::WebDriver::Wait.new(timeout: _timeout).until {
|
21
|
+
rc=drv.find_element(:xpath => xpath).displayed?
|
22
|
+
|
23
|
+
obj=getObject(drv, obj, _timeout=nil)
|
24
|
+
|
25
|
+
|
26
|
+
}
|
27
|
+
rescue => ex
|
28
|
+
;
|
29
|
+
end
|
30
|
+
rc
|
31
|
+
end
|
32
|
+
|
19
33
|
def self.wait_for_displayed(drv, locator, _timeout=30)
|
20
34
|
Scoutui::Logger::LogMgr.instance.debug __FILE__ + (__LINE__).to_s + " wait_for_displayed(#{xpath}"
|
21
35
|
rc=nil
|
@@ -60,6 +74,12 @@ module Scoutui::Base
|
|
60
74
|
|
61
75
|
def self.getFirstObject(drv, _locator, _timeout=nil)
|
62
76
|
|
77
|
+
|
78
|
+
if existsAlert?(drv)
|
79
|
+
Scoutui::Logger::LogMgr.instance.info __FILE__ + (__LINE__).to_s + " ALERT currently exists!"; # STDIN.gets()
|
80
|
+
return nil
|
81
|
+
end
|
82
|
+
|
63
83
|
if _timeout.nil?
|
64
84
|
_timeout = Scoutui::Utils::TestUtils.instance.getDefaultWait
|
65
85
|
end
|
@@ -86,7 +106,7 @@ module Scoutui::Base
|
|
86
106
|
Selenium::WebDriver::Wait.new(timeout: _timeout).until { drv.find_elements(locateBy => locator).size > 0 }
|
87
107
|
rc=drv.find_elements(locateBy => locator)[0]
|
88
108
|
rescue => ex
|
89
|
-
Scoutui::Logger::LogMgr.instance.debug __FILE__ + (__LINE__).to_s + " getFirstObject.Exception: #{locator.to_s} - #{ex}"
|
109
|
+
Scoutui::Logger::LogMgr.instance.debug __FILE__ + (__LINE__).to_s + " #{$!} - #{ex.message} getFirstObject.Exception: #{locator.to_s} - #{ex}"
|
90
110
|
;
|
91
111
|
end
|
92
112
|
|
@@ -101,7 +101,7 @@ module Scoutui::Base
|
|
101
101
|
teardown()
|
102
102
|
|
103
103
|
rescue => ex
|
104
|
-
Scoutui::Logger::LogMgr.instance.warn __FILE__ + (__LINE__).to_s + " Error during processing: #{ex}"
|
104
|
+
Scoutui::Logger::LogMgr.instance.warn __FILE__ + (__LINE__).to_s + " #{ex.class.to_s} Error during processing: #{ex}"
|
105
105
|
Scoutui::Logger::LogMgr.instance.warn ex.backtrace
|
106
106
|
ensure
|
107
107
|
Scoutui::Logger::LogMgr.instance.debug __FILE__ + (__LINE__ ).to_s + " Close Eyes" if Scoutui::Utils::TestUtils.instance.isDebug?
|
@@ -470,8 +470,7 @@ module Scoutui::Base
|
|
470
470
|
|
471
471
|
expected_list.each_pair do |link_name, xpath|
|
472
472
|
|
473
|
-
Scoutui::Logger::LogMgr.instance.info __FILE__ + (__LINE__).to_s + "\t\t#{link_name} => #{xpath}"
|
474
|
-
|
473
|
+
Scoutui::Logger::LogMgr.instance.info __FILE__ + (__LINE__).to_s + "\t\t#{link_name} => #{xpath}"
|
475
474
|
|
476
475
|
# Check if the verification is a "windows.*" verification
|
477
476
|
|
@@ -493,6 +492,50 @@ module Scoutui::Base
|
|
493
492
|
next
|
494
493
|
end
|
495
494
|
|
495
|
+
# Not Visible
|
496
|
+
if !xpath.match(/^\s*!visible\(.*\)$/).nil?
|
497
|
+
_rc = false
|
498
|
+
_e=nil
|
499
|
+
_timeout=10
|
500
|
+
|
501
|
+
if xpath.match(/^\s*!visible\((.*,\s*\d+\s*)\)$/)
|
502
|
+
_e = xpath.match(/^\s*!visible\((.*),\s*\d+\s*\)$/)[1].to_s.strip
|
503
|
+
_timeout=xpath.match(/^\s*!visible\((.*),\s*(\d+)\s*\)$/)[2].to_i
|
504
|
+
else
|
505
|
+
_e = xpath.match(/^\s*!visible\((.*)\)$/)[1].to_s.strip
|
506
|
+
end
|
507
|
+
|
508
|
+
_obj = Scoutui::Base::QBrowser.getObject(my_driver, _e, Scoutui::Commands::Utils.instance.getTimeout)
|
509
|
+
|
510
|
+
puts __FILE__ + (__LINE__).to_s + " Wait until element #{xpath} => #{_e} is not visible #{_obj}.class.to_s"
|
511
|
+
|
512
|
+
if _obj.nil?
|
513
|
+
_rc = true
|
514
|
+
else
|
515
|
+
puts __FILE__ + (__LINE__).to_s + " _obj => #{_obj} : exists: #{!_obj.nil?}"
|
516
|
+
|
517
|
+
begin
|
518
|
+
Selenium::WebDriver::Wait.new(timeout: _timeout).until {
|
519
|
+
_obj = Scoutui::Base::QBrowser.getObject(my_driver, _e, 5)
|
520
|
+
puts __FILE__ + (__LINE__).to_s + " waiting .. => #{_obj.class.to_s}"
|
521
|
+
|
522
|
+
_obj.nil?
|
523
|
+
}
|
524
|
+
|
525
|
+
rescue Selenium::WebDriver::Error::TimeOutError
|
526
|
+
_rc=_obj.nil?
|
527
|
+
end
|
528
|
+
|
529
|
+
|
530
|
+
end
|
531
|
+
|
532
|
+
Scoutui::Logger::LogMgr.instance.asserts.info __FILE__ + (__LINE__).to_s + " Verify #{_e} - is not visible - #{_rc}"
|
533
|
+
if Scoutui::Utils::TestUtils.instance.assertExpected?
|
534
|
+
Testmgr::TestReport.instance.getReq(_req).get_child('visible_when').add(_rc, "Verify #{_e} - is not visible")
|
535
|
+
end
|
536
|
+
|
537
|
+
next
|
538
|
+
end
|
496
539
|
|
497
540
|
if !xpath.match(/\$\{.*\}/).nil?
|
498
541
|
# xpath = Scoutui::Base::UserVars.instance.get(xpath)
|
@@ -833,14 +876,20 @@ module Scoutui::Base
|
|
833
876
|
if !_command.wasExecuted?
|
834
877
|
processCommand(_action, e, my_driver)
|
835
878
|
else
|
836
|
-
Scoutui::Logger::LogMgr.instance.warn __FILE__ + (__LINE__).to_s + " Command #{_action} was
|
879
|
+
Scoutui::Logger::LogMgr.instance.warn __FILE__ + (__LINE__).to_s + " Command #{_action} was already executed"
|
837
880
|
end
|
838
881
|
|
839
882
|
processExpected(my_driver, e)
|
883
|
+
|
840
884
|
processAssertions(my_driver, e)
|
841
885
|
|
842
886
|
|
843
887
|
if isSnapIt(e)
|
888
|
+
|
889
|
+
if QBrowser.existsAlert?(my_driver)
|
890
|
+
puts __FILE__ + (__LINE__).to_s + " Snapit with existing Alert"
|
891
|
+
end
|
892
|
+
|
844
893
|
if !_region.nil?
|
845
894
|
eyeScout.check_window(_name, _region)
|
846
895
|
else
|
@@ -145,7 +145,7 @@ module Scoutui::Commands
|
|
145
145
|
end
|
146
146
|
|
147
147
|
Scoutui::Logger::LogMgr.instance.asserts.info "Verify object to click exists #{_locator} : #{obj.class.to_s} - #{!obj.nil?.to_s}"
|
148
|
-
Scoutui::Logger::LogMgr.instance.asserts.info "Verify clicked #{_locator} - #{_clicked.to_s}"
|
148
|
+
Scoutui::Logger::LogMgr.instance.asserts.info __FILE__ + (__LINE__).to_s + " Verify clicked #{_locator} - #{_clicked.to_s}"
|
149
149
|
|
150
150
|
Testmgr::TestReport.instance.getReq(_req).testcase('click').add(!obj.nil?, "Verify object to click exists #{_locator} : #{obj.class.to_s}")
|
151
151
|
Testmgr::TestReport.instance.getReq(_req).testcase('click').add(_clicked, "Verify clicked #{_locator}")
|
@@ -30,7 +30,7 @@ module Scoutui::Commands
|
|
30
30
|
end
|
31
31
|
|
32
32
|
def setResult(r)
|
33
|
-
Scoutui::Logger::LogMgr.instance.commands.debug " setResult(#{r.to_s})"
|
33
|
+
Scoutui::Logger::LogMgr.instance.commands.debug " #{@cmd.to_s} : setResult(#{r.to_s})"
|
34
34
|
@executed=true
|
35
35
|
@executed_result=r
|
36
36
|
end
|
@@ -162,7 +162,7 @@ module Scoutui::Commands
|
|
162
162
|
|
163
163
|
Testmgr::TestReport.instance.getReq(_req).get_child(_cmd.downcase).add(!_aborted, "Verify command #{_cmd} did not abort")
|
164
164
|
|
165
|
-
Scoutui::Logger::LogMgr.instance.commands.debug __FILE__ + (__LINE__).to_s + " exit [processCommand(#{_action})"
|
165
|
+
Scoutui::Logger::LogMgr.instance.commands.debug __FILE__ + (__LINE__).to_s + " exit [processCommand(#{_action}) => #{_c}"
|
166
166
|
|
167
167
|
_c
|
168
168
|
end
|
@@ -20,6 +20,7 @@ module Scoutui::Commands
|
|
20
20
|
alert=@drv.switch_to.alert
|
21
21
|
|
22
22
|
Scoutui::Logger::LogMgr.instance.debug __FILE__ + (__LINE__).to_s + " | alert => #{alert.class.to_s}" if Scoutui::Utils::TestUtils.instance.isDebug?
|
23
|
+
Scoutui::Logger::LogMgr.instance.debug __FILE__ + (__LINE__).to_s + " | alert.text => #{alert.text.to_s}"
|
23
24
|
|
24
25
|
if alert.is_a?(Selenium::WebDriver::Alert)
|
25
26
|
if _action.match(/accept/i)
|
@@ -31,7 +32,6 @@ module Scoutui::Commands
|
|
31
32
|
rc=true
|
32
33
|
end
|
33
34
|
|
34
|
-
|
35
35
|
rescue Selenium::WebDriver::Error::NoSuchAlertError
|
36
36
|
;
|
37
37
|
end
|
@@ -21,7 +21,7 @@ module Scoutui::Commands::JsAlert
|
|
21
21
|
|
22
22
|
begin
|
23
23
|
alert=@drv.switch_to.alert
|
24
|
-
Scoutui::Logger::LogMgr.instance.debug __FILE__ + (__LINE__).to_s + " | alert => #{alert.class.to_s}"
|
24
|
+
Scoutui::Logger::LogMgr.instance.debug __FILE__ + (__LINE__).to_s + " | alert => #{alert.class.to_s}"
|
25
25
|
|
26
26
|
_alertExists = alert.is_a?(Selenium::WebDriver::Alert)
|
27
27
|
if _alertExists && !(_action.nil? && _action.empty?)
|
@@ -45,7 +45,7 @@ module Scoutui::Commands::JsAlert
|
|
45
45
|
setResult(_rc)
|
46
46
|
end
|
47
47
|
|
48
|
-
Scoutui::Logger::LogMgr.instance.debug __FILE__ + (__LINE__).to_s + " ExistsAlert() => #{alert.class.to_s} rc:#{_rc.to_s}"
|
48
|
+
Scoutui::Logger::LogMgr.instance.debug __FILE__ + (__LINE__).to_s + " ExistsAlert() => #{alert.class.to_s} rc:#{_rc.to_s}"
|
49
49
|
|
50
50
|
|
51
51
|
end
|
@@ -77,7 +77,13 @@ module Scoutui::Commands
|
|
77
77
|
if !obj.nil? && obj.tag_name.downcase.match(/(select)/)
|
78
78
|
|
79
79
|
_opt = Selenium::WebDriver::Support::Select.new(obj)
|
80
|
-
|
80
|
+
|
81
|
+
if _val.match(/\s*value:(.+)$/)
|
82
|
+
_tVal = _val.match(/\s*value:(.+)$/)[1].to_s
|
83
|
+
_opt.select_by(:value, Scoutui::Base::UserVars.instance.get(_tVal))
|
84
|
+
else
|
85
|
+
_opt.select_by(:text, Scoutui::Base::UserVars.instance.get(_val))
|
86
|
+
end
|
81
87
|
|
82
88
|
_rc=true
|
83
89
|
|
@@ -1,4 +1,4 @@
|
|
1
|
-
|
1
|
+
require 'date'
|
2
2
|
|
3
3
|
module Scoutui::Commands
|
4
4
|
|
@@ -54,6 +54,11 @@ module Scoutui::Commands
|
|
54
54
|
@drv.action.send_keys(:tab).perform
|
55
55
|
_rc=true
|
56
56
|
_isKb=true
|
57
|
+
elsif @cmd.strip.match(/^\s*type\s*\(\s*__ENTER__\s*\)\s*$/)
|
58
|
+
Scoutui::Logger::LogMgr.instance.debug __FILE__ + (__LINE__).to_s + " ENTER"
|
59
|
+
@drv.action.send_keys(:enter).perform
|
60
|
+
_rc=true
|
61
|
+
_isKb=true
|
57
62
|
else
|
58
63
|
_xpath = @cmd.match(/^\s*type[\!]*\(([^,]*),\s*/)[1].to_s
|
59
64
|
_val = @cmd.match(/^\s*type[\!]*\([^,]*,\s*(.*)\)/)[1].to_s
|
@@ -112,6 +117,7 @@ module Scoutui::Commands
|
|
112
117
|
|
113
118
|
transList={
|
114
119
|
'__DATE__' => lambda { Time.now().to_s },
|
120
|
+
'__DDMMYY__' => lambda { Date.parse(Time.now.to_s).strftime("%d%m%Y") },
|
115
121
|
'__CITY__' => lambda { Faker::Address.city.to_s },
|
116
122
|
'__ZIP__' => lambda { Faker::Address.zip_code.to_s },
|
117
123
|
'__STREET__' => lambda { Faker::Address.street_address.to_s},
|
data/lib/scoutui/eyes/utils.rb
CHANGED
@@ -87,8 +87,8 @@ module Scoutui::Eyes
|
|
87
87
|
index = 1
|
88
88
|
data['actualAppOutput'].each do |elem|
|
89
89
|
puts __FILE__ + (__LINE__).to_s + " elem => #{elem}"
|
90
|
-
puts __FILE__ + (__LINE__).to_s + " | o isMatching : #{elem['isMatching']}"
|
91
90
|
if (!elem.nil?)
|
91
|
+
puts __FILE__ + (__LINE__).to_s + " | o isMatching : #{elem['isMatching']}"
|
92
92
|
# diff_urls[index] = diff_template % [index]
|
93
93
|
diff_urls[index] = { :tag => elem['tag'].to_s, :isMatching => elem['isMatching'], :url => diff_template % [index], :index => index }
|
94
94
|
end
|
data/lib/scoutui/utils/utils.rb
CHANGED
@@ -230,7 +230,7 @@ module Scoutui::Utils
|
|
230
230
|
}
|
231
231
|
|
232
232
|
opt.on('--sauce:run NAME', [:true, :false]) { |o|
|
233
|
-
@options[:
|
233
|
+
@options[:enable_sauce] = !o.match(/true/i).nil?
|
234
234
|
}
|
235
235
|
opt.on('--sauce_name NAME') { |o| @options[:sauce_name] = o }
|
236
236
|
opt.on('--sauce:name NAME') { |o| @options[:sauce_name] = o }
|
@@ -263,6 +263,7 @@ module Scoutui::Utils
|
|
263
263
|
Scoutui::Logger::LogMgr.instance.info "Viewport => #{@options[:viewport]}"
|
264
264
|
Scoutui::Logger::LogMgr.instance.info "Viewport (Var) => #{Scoutui::Base::UserVars.instance.getViewPort().to_s}"
|
265
265
|
Scoutui::Logger::LogMgr.instance.info "PageModel file => #{@options[:page_model].to_s}"
|
266
|
+
Scoutui::Logger::LogMgr.instance.info "Sauce.Run => #{@options[:sauce_run].to_s}"
|
266
267
|
Scoutui::Logger::LogMgr.instance.info "Sauce.Platform => #{@options[:sauce_platform].to_s}"
|
267
268
|
end
|
268
269
|
|
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: 2.0.3.
|
4
|
+
version: 2.0.3.19.pre
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Peter Kim
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2016-07-
|
11
|
+
date: 2016-07-07 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -188,6 +188,7 @@ files:
|
|
188
188
|
- examples/carmax/appmodel/search_results.json
|
189
189
|
- examples/carmax/commands/commands.yml
|
190
190
|
- examples/carmax/tests/test-carmax.sh
|
191
|
+
- examples/ci_reporter/ci_example.rb
|
191
192
|
- examples/ex1/commands.holidays.yml
|
192
193
|
- examples/ex1/commands.yml
|
193
194
|
- examples/ex1/test-example.sh
|