scoutui 2.0.3.18.pre → 2.0.3.19.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/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
|