scoutui 2.0.3.31.pre → 2.0.3.32.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/lib/scoutui/base/assertions.rb +118 -8
- data/lib/scoutui/base/q_browser.rb +12 -0
- data/lib/scoutui/base/requirements.rb +33 -0
- data/lib/scoutui/base/visual_test_framework.rb +46 -7
- data/lib/scoutui/commands/click_object.rb +10 -3
- data/lib/scoutui/commands/commands.rb +38 -0
- data/lib/scoutui/commands/highlight.rb +20 -0
- data/lib/scoutui/commands/load_requirements.rb +58 -0
- data/lib/scoutui/commands/type.rb +20 -13
- data/lib/scoutui/commands/upload_files.rb +75 -0
- data/lib/scoutui/commands/utils.rb +21 -1
- data/lib/scoutui/version.rb +1 -1
- metadata +5 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 94cd87322cf8c91d5ac519bc749a6e96d8984b9c
|
4
|
+
data.tar.gz: 8f0b560c94101065a3785987d4c55e2ca85726a0
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 37cdcff948a33c1ca3e754d38dafcf61f1ecd90350f6d6ab5ec917d307383412ece1bae34c9999913afc07cbed0be53901124e4980bf171aafebb2f30295f777
|
7
|
+
data.tar.gz: 69cc7c0745d6fd6d30b12b4c7bfd94c39bd2730c5745e4850dab7090d4cd9568b8a8894ca99cdbc6dd7fa386064446bc6abdb9e94a168a2c4a96c3f0b2a4e8f5
|
@@ -15,7 +15,8 @@ module Scoutui::Base
|
|
15
15
|
@assertionTypes=[
|
16
16
|
{ :cmd => 'isEnabled', :pattern => '^\s*[!]*isEnabled\((.*)\)\s*$', :parse => lambda { |_a| _parseFrameLoc('isEnabled', _a) } },
|
17
17
|
{ :cmd => 'isSelected', :pattern => '^\s*[!]*isSelected\((.*)\)\s*$', :parse => lambda { |_a| _parseFrameLoc('isSelected', _a) } },
|
18
|
-
{ :cmd => '
|
18
|
+
{ :cmd => 'isText', :pattern => '^\s*[!]*(isText)\s*\(.*\)\s*\=\s*(.*)\s*$', :parse => lambda { |_a| _parseWith('isText', _a) } },
|
19
|
+
{ :cmd => 'isValue', :pattern => '^\s*[!]*(isValue)\s*\(.*\)\s*\=\s*(.*)\s*$', :parse => lambda { |_a| _parseWith('isValue', _a) } },
|
19
20
|
{ :cmd => 'visible', :pattern => '^\s*[!]*visible\((.*)\)\s*$', :parse => nil }
|
20
21
|
]
|
21
22
|
|
@@ -88,6 +89,38 @@ module Scoutui::Base
|
|
88
89
|
rc
|
89
90
|
end
|
90
91
|
|
92
|
+
|
93
|
+
# Returns
|
94
|
+
#
|
95
|
+
# if frame exists
|
96
|
+
# {
|
97
|
+
# 'frame' => <frame>,
|
98
|
+
# 'locator' => 'locator'
|
99
|
+
# }
|
100
|
+
#
|
101
|
+
# otherwise,
|
102
|
+
#
|
103
|
+
# { 'locator => <locator> '}
|
104
|
+
def _parseFrameLocator(_a)
|
105
|
+
puts __FILE__ + (__LINE__).to_s + " _parseFrameLocator(#{_a})"
|
106
|
+
_pattern='(frame\(.*\)[\.frame\(.*\)]*)\s*,\s*(.*)\s*$'
|
107
|
+
_fMatch = _a.match(/#{_pattern}/)
|
108
|
+
puts __FILE__ + (__LINE__).to_s + " === _fMatch : #{_fMatch}"
|
109
|
+
rc=nil
|
110
|
+
if _fMatch
|
111
|
+
rc = {
|
112
|
+
'frame' => _fMatch[1].strip,
|
113
|
+
'locator' => _fMatch[2].strip }
|
114
|
+
else
|
115
|
+
rc = {
|
116
|
+
'locator' => _a
|
117
|
+
}
|
118
|
+
end
|
119
|
+
|
120
|
+
puts __FILE__ + (__LINE__).to_s + " _parseFrameLocator(#{_a}) => #{rc}"
|
121
|
+
rc
|
122
|
+
end
|
123
|
+
|
91
124
|
# _a : frame(xyz).frame(123), <locator>
|
92
125
|
def _parseFrameLoc(_cmd, _a)
|
93
126
|
|
@@ -179,7 +212,7 @@ module Scoutui::Base
|
|
179
212
|
;
|
180
213
|
end
|
181
214
|
|
182
|
-
puts __FILE__ + (__LINE__).to_s + "
|
215
|
+
puts __FILE__ + (__LINE__).to_s + " isVisibleFrameCmd?(#{_a}) : #{rc}"
|
183
216
|
rc
|
184
217
|
end
|
185
218
|
|
@@ -257,7 +290,7 @@ module Scoutui::Base
|
|
257
290
|
end
|
258
291
|
|
259
292
|
|
260
|
-
def isEnabled?(my_driver, _execute_when)
|
293
|
+
def isEnabled?(my_driver, _execute_when, _enableAsserts=true)
|
261
294
|
|
262
295
|
rc=true
|
263
296
|
_locator=nil
|
@@ -278,7 +311,7 @@ module Scoutui::Base
|
|
278
311
|
Scoutui::Commands::Utils.instance.setEnableFrameSearch(_t['frame'])
|
279
312
|
end
|
280
313
|
|
281
|
-
_obj = Scoutui::Base::QBrowser.findElement(my_driver, _locator, Scoutui::Commands::Utils.instance.getFrameSearch(), Scoutui::Commands::Utils.instance.getTimeout)
|
314
|
+
_obj = Scoutui::Base::QBrowser.findElement(my_driver, Scoutui::Base::UserVars.instance.normalize(_locator), Scoutui::Commands::Utils.instance.getFrameSearch(), Scoutui::Commands::Utils.instance.getTimeout)
|
282
315
|
else
|
283
316
|
Scoutui::Logger::LogMgr.instance.warn __FILE__ + (__LINE__).to_s + " invalid assertion cmd: #{_execute_when}"
|
284
317
|
end
|
@@ -305,19 +338,58 @@ module Scoutui::Base
|
|
305
338
|
puts __FILE__ + (__LINE__).to_s + " _obj.enabled? => #{_enabled}"
|
306
339
|
|
307
340
|
if _execute_when.match(/^\s*!isEnabled/i) && _enabled
|
308
|
-
|
309
|
-
|
341
|
+
|
342
|
+
if _enableAsserts
|
343
|
+
Scoutui::Logger::LogMgr.instance.debug __FILE__ + (__LINE__).to_s + " !isEnabled(#{_locator}) : false"
|
344
|
+
rc=false
|
345
|
+
else
|
346
|
+
|
347
|
+
begin
|
348
|
+
Selenium::WebDriver::Wait.new(timeout: 15).until {
|
349
|
+
_obj = Scoutui::Base::QBrowser.findElement(my_driver, _locator, Scoutui::Commands::Utils.instance.getFrameSearch(), Scoutui::Commands::Utils.instance.getTimeout)
|
350
|
+
puts __FILE__ + (__LINE__).to_s + " waiting .. => #{_obj.class.to_s} : enabled - #{_obj.enabled?}"
|
351
|
+
|
352
|
+
!_obj.enabled?
|
353
|
+
}
|
354
|
+
|
355
|
+
rescue Selenium::WebDriver::Error::TimeOutError
|
356
|
+
rc=!_obj.enabled?
|
357
|
+
|
358
|
+
Scoutui::Logger::LogMgr.instance.debug __FILE__ + (__LINE__).to_s + " TimeOutError waiting for !enabled - #{_locator} => #{rc}"
|
359
|
+
end
|
360
|
+
|
361
|
+
Scoutui::Logger::LogMgr.instance.debug __FILE__ + (__LINE__).to_s + " wait #{_locator} to be !enabled => #{rc}"
|
362
|
+
end
|
363
|
+
|
310
364
|
elsif _execute_when.match(/^\s*isEnabled/i) && !_enabled
|
311
365
|
Scoutui::Logger::LogMgr.instance.debug __FILE__ + (__LINE__).to_s + " isEnabled(#{_locator}) : false"
|
312
366
|
rc=false
|
313
367
|
end
|
314
368
|
|
369
|
+
|
370
|
+
|
371
|
+
elsif _t.has_key?('cmd') && !_t['cmd'].empty? && _t['cmd'].match(/[!]*isText/i)
|
372
|
+
rc=false
|
373
|
+
|
374
|
+
if _obj.is_a?(Selenium::WebDriver::Element)
|
375
|
+
_v = _obj.text.to_s
|
376
|
+
rc=!_v.match(/#{_t['expected_value']}/).nil?
|
377
|
+
|
378
|
+
if _t['cmd'].match(/^!\s*isText/i)
|
379
|
+
rc=!rc
|
380
|
+
end
|
381
|
+
end
|
382
|
+
|
315
383
|
elsif _t.has_key?('cmd') && !_t['cmd'].empty? && _t['cmd'].match(/[!]*isValue/i)
|
316
384
|
rc=false
|
317
385
|
|
318
386
|
if _obj.is_a?(Selenium::WebDriver::Element)
|
319
387
|
_v = _obj.attribute('value')
|
320
388
|
rc=!_v.match(/#{_t['expected_value']}/).nil?
|
389
|
+
|
390
|
+
if _t['cmd'].match(/^!\s*isValue/i)
|
391
|
+
rc=!rc
|
392
|
+
end
|
321
393
|
end
|
322
394
|
|
323
395
|
Scoutui::Logger::LogMgr.instance.debug __FILE__ + (__LINE__).to_s + " assert #{_t['locator']} expected: #{_t['expected_value']} with actual: #{_v} => #{rc}"
|
@@ -353,7 +425,7 @@ module Scoutui::Base
|
|
353
425
|
end
|
354
426
|
|
355
427
|
|
356
|
-
def isVisible?(my_driver, _execute_when)
|
428
|
+
def isVisible?(my_driver, _execute_when, _enableAsserts=true)
|
357
429
|
rc=true
|
358
430
|
|
359
431
|
begin
|
@@ -361,7 +433,9 @@ module Scoutui::Base
|
|
361
433
|
_t = isVisibleFrameCmd?(_execute_when)
|
362
434
|
|
363
435
|
if !_t.nil?
|
364
|
-
|
436
|
+
# 5150 _locator = _t['locator']
|
437
|
+
_locator = Scoutui::Base::UserVars.instance.normalize(_locator)
|
438
|
+
|
365
439
|
Scoutui::Commands::Utils.instance.setEnableFrameSearch(_t['frame'])
|
366
440
|
elsif isVisibleCmd?(_execute_when)
|
367
441
|
_locator = _execute_when.match(/^\s*[!]*visible\((.*)\)\s*$/i)[1].to_s
|
@@ -382,6 +456,42 @@ module Scoutui::Base
|
|
382
456
|
end
|
383
457
|
|
384
458
|
|
459
|
+
if !_enableAsserts
|
460
|
+
_rc=false
|
461
|
+
|
462
|
+
begin
|
463
|
+
if _execute_when.match(/^\s*!visible/)
|
464
|
+
|
465
|
+
Selenium::WebDriver::Wait.new(timeout: 15).until {
|
466
|
+
_obj = Scoutui::Base::QBrowser.findElement(my_driver, _locator, Scoutui::Commands::Utils.instance.getFrameSearch(), Scoutui::Commands::Utils.instance.getTimeout)
|
467
|
+
puts __FILE__ + (__LINE__).to_s + " waiting .. => #{_obj.class.to_s}"
|
468
|
+
_rc = (_obj.is_a?(Selenium::WebDriver::Element) && !_obj.displayed?) || _obj.nil?
|
469
|
+
}
|
470
|
+
|
471
|
+
elsif _execute_when.match(/^\s*visible/)
|
472
|
+
|
473
|
+
Selenium::WebDriver::Wait.new(timeout: 15).until {
|
474
|
+
_obj = Scoutui::Base::QBrowser.findElement(my_driver, _locator, Scoutui::Commands::Utils.instance.getFrameSearch(), Scoutui::Commands::Utils.instance.getTimeout)
|
475
|
+
puts __FILE__ + (__LINE__).to_s + " waiting .. => #{_obj.class.to_s}"
|
476
|
+
|
477
|
+
if _obj.is_a?(Selenium::WebDriver::Element)
|
478
|
+
puts "***** displayed? : #{_obj.displayed?}"
|
479
|
+
end
|
480
|
+
|
481
|
+
_rc = !_obj.nil? && _obj.displayed?
|
482
|
+
_rc
|
483
|
+
}
|
484
|
+
end
|
485
|
+
|
486
|
+
rescue Selenium::WebDriver::Error::TimeOutError
|
487
|
+
;
|
488
|
+
end
|
489
|
+
|
490
|
+
puts __FILE__ + (__LINE__).to_s + " waitFor : #{_rc}"
|
491
|
+
return _rc
|
492
|
+
end
|
493
|
+
|
494
|
+
|
385
495
|
puts __FILE__ + (__LINE__).to_s + " _obj.displayed? => #{_state}"
|
386
496
|
|
387
497
|
if _execute_when.match(/^\s*!visible/i) && _state
|
@@ -53,6 +53,18 @@ module Scoutui::Base
|
|
53
53
|
rc
|
54
54
|
end
|
55
55
|
|
56
|
+
def self.isFileType?(obj)
|
57
|
+
rc=false
|
58
|
+
begin
|
59
|
+
if obj.is_a?(Selenium::WebDriver::Element)
|
60
|
+
rc=!obj.attribute('type').match(/file/i).nil?
|
61
|
+
end
|
62
|
+
rescue => ex
|
63
|
+
;
|
64
|
+
end
|
65
|
+
|
66
|
+
rc
|
67
|
+
end
|
56
68
|
|
57
69
|
def self.existsAlert?(drv)
|
58
70
|
rc=false
|
@@ -0,0 +1,33 @@
|
|
1
|
+
|
2
|
+
|
3
|
+
require 'singleton'
|
4
|
+
|
5
|
+
|
6
|
+
module Scoutui::Base
|
7
|
+
|
8
|
+
class Requirements
|
9
|
+
include Singleton
|
10
|
+
|
11
|
+
attr_accessor :requirements
|
12
|
+
|
13
|
+
def initialize
|
14
|
+
@requirements={}
|
15
|
+
end
|
16
|
+
|
17
|
+
|
18
|
+
def add(_id, _reqs)
|
19
|
+
Scoutui::Logger::LogMgr.instance.debug __FILE__ + (__LINE__).to_s + " add(#{_id}, #{_reqs}"
|
20
|
+
@requirements[_id]=_reqs
|
21
|
+
end
|
22
|
+
|
23
|
+
def get(_id)
|
24
|
+
@requirements[_id]
|
25
|
+
end
|
26
|
+
|
27
|
+
end
|
28
|
+
|
29
|
+
|
30
|
+
|
31
|
+
|
32
|
+
|
33
|
+
end
|
@@ -318,7 +318,7 @@ module Scoutui::Base
|
|
318
318
|
processConditions(my_driver, e, 'assertions')
|
319
319
|
end
|
320
320
|
|
321
|
-
def self.processAsserts(my_driver, _execute_when)
|
321
|
+
def self.processAsserts(my_driver, _execute_when, _enableAsserts=true)
|
322
322
|
|
323
323
|
Scoutui::Logger::LogMgr.instance.debug __FILE__ + (__LINE__).to_s + " processAsserts#{_execute_when}"
|
324
324
|
|
@@ -340,11 +340,13 @@ module Scoutui::Base
|
|
340
340
|
|
341
341
|
|
342
342
|
if _assertType[:cmd]=='isEnabled' # Scoutui::Base::Assertions.instance.isEnabledCmd?(_a)
|
343
|
-
_rc=Scoutui::Base::Assertions.instance.isEnabled?(my_driver, _a)
|
343
|
+
_rc=Scoutui::Base::Assertions.instance.isEnabled?(my_driver, _a, _enableAsserts)
|
344
344
|
elsif _assertType[:cmd]=='visible'
|
345
|
-
_rc=Scoutui::Base::Assertions.instance.isVisible?(my_driver, _a)
|
345
|
+
_rc=Scoutui::Base::Assertions.instance.isVisible?(my_driver, _a, _enableAsserts)
|
346
346
|
elsif _assertType[:cmd]=='isSelected'
|
347
347
|
_rc=Scoutui::Base::Assertions.instance.isEnabled?(my_driver, _a)
|
348
|
+
elsif _assertType[:cmd]=='isText'
|
349
|
+
_rc=Scoutui::Base::Assertions.instance.isEnabled?(my_driver, _a)
|
348
350
|
elsif _assertType[:cmd]=='isValue'
|
349
351
|
_rc=Scoutui::Base::Assertions.instance.isEnabled?(my_driver, _a)
|
350
352
|
end
|
@@ -359,11 +361,25 @@ module Scoutui::Base
|
|
359
361
|
_rc=Scoutui::Base::Assertions.instance.isValue?(my_driver, _a)
|
360
362
|
elsif Scoutui::Base::Assertions.instance.isTitleCmd?(_a)
|
361
363
|
_rc=Scoutui::Base::Assertions.instance.isTitle(my_driver, _a)
|
364
|
+
elsif _a.match(/^\s*(req|requirement)\s*\((.*)\)\s*$/i)
|
365
|
+
|
366
|
+
_reqID=_a.match(/^\s*(req|requirement)\s*\((.*)\)\s*$/i)[2].to_s
|
367
|
+
|
368
|
+
puts __FILE__ + (__LINE__).to_s + " Process REQ ASSERT: #{_reqID}";
|
369
|
+
_reqAsserts=Scoutui::Base::Requirements.instance.get(_reqID)
|
370
|
+
puts __FILE__ + (__LINE__).to_s + " => #{_reqAsserts}"
|
371
|
+
|
372
|
+
_req = Scoutui::Utils::TestUtils.instance.setReq(_reqID)
|
373
|
+
_rc=processAsserts(my_driver, _reqAsserts, _enableAsserts)
|
374
|
+
Scoutui::Utils::TestUtils.instance.setReq(_req)
|
362
375
|
end
|
363
376
|
|
364
377
|
if !_rc.nil?
|
365
|
-
|
366
|
-
|
378
|
+
|
379
|
+
if _enableAsserts
|
380
|
+
Scoutui::Logger::LogMgr.instance.asserts.info __FILE__ + (__LINE__).to_s + " Verify #{_a} - #{_rc}"
|
381
|
+
Testmgr::TestReport.instance.getReq(_req).get_child('visible_when').add(_rc, "Verify #{_a}")
|
382
|
+
end
|
367
383
|
|
368
384
|
Scoutui::Commands::Utils.instance.resetFrameSearch()
|
369
385
|
|
@@ -1081,7 +1097,30 @@ module Scoutui::Base
|
|
1081
1097
|
end
|
1082
1098
|
|
1083
1099
|
if !_region.nil?
|
1084
|
-
|
1100
|
+
|
1101
|
+
Scoutui::Logger::LogMgr.instance.debug __FILE__ + (__LINE__).to_s + " snapit.region: #{_region}"
|
1102
|
+
_frames = Scoutui::Base::Assertions.instance._parseFrameLocator(_region)
|
1103
|
+
|
1104
|
+
Scoutui::Logger::LogMgr.instance.debug __FILE__ + (__LINE__).to_s + "*** frames: #{_frames}"
|
1105
|
+
|
1106
|
+
|
1107
|
+
|
1108
|
+
if _frames.has_key?('frame')
|
1109
|
+
my_driver.switch_to.default_content
|
1110
|
+
Scoutui::Commands::Utils.instance.resetFrameSearch
|
1111
|
+
Scoutui::Commands::Utils.instance.setEnableFrameSearch(_frames['frame'])
|
1112
|
+
|
1113
|
+
_obj=Scoutui::Base::QBrowser.findElement(my_driver, _frames['locator]'], Scoutui::Commands::Utils.instance.getFrameSearch(), Scoutui::Commands::Utils.instance.getTimeout)
|
1114
|
+
Scoutui::Base::QBrowser.highlight(my_driver, obj)
|
1115
|
+
|
1116
|
+
Scoutui::Base::QBrowser.switch_frame(my_driver, _frames['frame'])
|
1117
|
+
|
1118
|
+
eyeScout.check_window(_name, _frames['locator'])
|
1119
|
+
else
|
1120
|
+
eyeScout.check_window(_name, Scoutui::Base::UserVars.instance.normalize(_region))
|
1121
|
+
end
|
1122
|
+
|
1123
|
+
|
1085
1124
|
else
|
1086
1125
|
eyeScout.check_window(_name)
|
1087
1126
|
end
|
@@ -1107,7 +1146,7 @@ module Scoutui::Base
|
|
1107
1146
|
processAssertions(my_driver, e)
|
1108
1147
|
|
1109
1148
|
if !_region.nil?
|
1110
|
-
eyeScout.check_window(_name, _region)
|
1149
|
+
eyeScout.check_window(_name, Scoutui::Base::UserVars.instance.normalize(_region))
|
1111
1150
|
else
|
1112
1151
|
eyeScout.check_window(_name)
|
1113
1152
|
end
|
@@ -68,10 +68,17 @@ module Scoutui::Commands
|
|
68
68
|
|
69
69
|
# Refactor in qbrowser
|
70
70
|
|
71
|
-
wait = Selenium::WebDriver::Wait.new(:timeout => Scoutui::Commands::Utils.instance.getTimeout)
|
72
|
-
|
73
71
|
isDisplayed=false
|
74
|
-
|
72
|
+
|
73
|
+
begin
|
74
|
+
wait = Selenium::WebDriver::Wait.new(:timeout => Scoutui::Commands::Utils.instance.getTimeout)
|
75
|
+
isDisplayed = wait.until {
|
76
|
+
true if obj.displayed?
|
77
|
+
}
|
78
|
+
rescue Selenium::WebDriver::Error::TimeOutError => ex
|
79
|
+
Scoutui::Logger::LogMgr.instance.debug __FILE__ + (__LINE__).to_s + " Timeout waiting for display?: #{_xpath}"
|
80
|
+
end
|
81
|
+
|
75
82
|
|
76
83
|
if isDisplayed
|
77
84
|
|
@@ -50,6 +50,38 @@ module Scoutui::Commands
|
|
50
50
|
_cmd='pause'
|
51
51
|
_c = Scoutui::Commands::Pause.new(nil)
|
52
52
|
_c.execute(e);
|
53
|
+
|
54
|
+
elsif Scoutui::Commands::Utils.instance.isLoadRequirements?(_action)
|
55
|
+
_cmd='loadrequirements'
|
56
|
+
_c = Scoutui::Commands::LoadRequirements.new(e)
|
57
|
+
_c.run(driver: my_driver, dut: e)
|
58
|
+
elsif Scoutui::Commands::Utils.instance.isAssignments?(_action)
|
59
|
+
_cmd='assignments'
|
60
|
+
if e['page'].has_key?('vars')
|
61
|
+
e['page']['vars'].each do |_a|
|
62
|
+
|
63
|
+
puts __FILE__ + (__LINE__).to_s + " Process Assignment.var : #{_a}"
|
64
|
+
|
65
|
+
begin
|
66
|
+
_caborted=false
|
67
|
+
|
68
|
+
if !Scoutui::Commands::Utils.instance.isAssignVar?(_a)
|
69
|
+
_m=_a.match(/([\w\_])+\=(.*)/)
|
70
|
+
_a="assign(#{_m[1]},#{_m[2]})"
|
71
|
+
end
|
72
|
+
|
73
|
+
_c = Scoutui::Commands::AssignVar.new(_a)
|
74
|
+
_rc=_c.run(driver: my_driver, dut: e)
|
75
|
+
_c.setResult(_rc)
|
76
|
+
rescue => ex
|
77
|
+
_caborted=true
|
78
|
+
end
|
79
|
+
|
80
|
+
Testmgr::TestReport.instance.getReq(_req).get_child(_cmd.downcase).add(!_caborted, "Verify command assign did not abort")
|
81
|
+
end
|
82
|
+
end
|
83
|
+
|
84
|
+
|
53
85
|
elsif Scoutui::Commands::Utils.instance.isAssignVar?(_action)
|
54
86
|
_cmd='assignvar'
|
55
87
|
_c = Scoutui::Commands::AssignVar.new(_action)
|
@@ -136,6 +168,12 @@ module Scoutui::Commands
|
|
136
168
|
_c = Scoutui::Commands::UpdateUrl.new(_action)
|
137
169
|
_c.run(driver: my_driver)
|
138
170
|
|
171
|
+
|
172
|
+
elsif Scoutui::Commands::Utils.instance.isUploadFiles?(_action)
|
173
|
+
_cmd='UploadFiles'
|
174
|
+
_c = Scoutui::Commands::UploadFiles.new(_action)
|
175
|
+
rc=_c.execute(my_driver, e)
|
176
|
+
|
139
177
|
elsif Scoutui::Commands::Utils.instance.isVerifyElt?(_action)
|
140
178
|
_cmd='VerifyElement'
|
141
179
|
_c = Scoutui::Commands::VerifyElement.new(_action)
|
@@ -44,6 +44,17 @@ module Scoutui::Commands
|
|
44
44
|
|
45
45
|
locators.each do |elt|
|
46
46
|
|
47
|
+
|
48
|
+
q=Scoutui::Base::Assertions.instance._parseFrameLocator(elt)
|
49
|
+
|
50
|
+
if q.has_key?('frame')
|
51
|
+
Scoutui::Commands::Utils.instance.setEnableFrameSearch(q['frame'])
|
52
|
+
elt = q['locator']
|
53
|
+
|
54
|
+
# puts __FILE__ + (__LINE__).to_s + " highlight with frame #{q['frame']} with locator #{q['locator']} - PAUSE"
|
55
|
+
end
|
56
|
+
|
57
|
+
|
47
58
|
_loc = Scoutui::Base::UserVars.instance.normalize(elt)
|
48
59
|
|
49
60
|
# obj = Scoutui::Base::QBrowser.getObject(@drv, loc, Scoutui::Commands::Utils.instance.getTimeout)
|
@@ -52,8 +63,17 @@ module Scoutui::Commands
|
|
52
63
|
Scoutui::Commands::Utils.instance.getFrameSearch(),
|
53
64
|
Scoutui::Commands::Utils.instance.getTimeout)
|
54
65
|
|
66
|
+
if !obj.is_a?(Selenium::WebDriver::Element)
|
67
|
+
Scoutui::Logger::LogMgr.instance.warn __FILE__ + (__LINE__).to_s + " highlight : unable to find #{_loc}"
|
68
|
+
end
|
69
|
+
|
55
70
|
_rc = _highlight(obj, e)
|
56
71
|
|
72
|
+
if q.has_key?('frame')
|
73
|
+
@drv.switch_to.default_content
|
74
|
+
Scoutui::Commands::Utils.instance.resetFrameSearch
|
75
|
+
end
|
76
|
+
|
57
77
|
rc &&= _rc
|
58
78
|
|
59
79
|
Testmgr::TestReport.instance.getReq(_req).testcase('highlight').add(!obj.nil?, "Verify object #{_locator} to highlight exists : #{obj.class.to_s}")
|
@@ -0,0 +1,58 @@
|
|
1
|
+
require_relative './commands'
|
2
|
+
|
3
|
+
module Scoutui::Commands
|
4
|
+
|
5
|
+
class LoadRequirements < Command
|
6
|
+
|
7
|
+
|
8
|
+
def execute(drv, e=nil)
|
9
|
+
@drv=drv if !drv.nil?
|
10
|
+
|
11
|
+
rc=false
|
12
|
+
obj=nil
|
13
|
+
_locator=nil
|
14
|
+
|
15
|
+
_req = Scoutui::Utils::TestUtils.instance.getReq()
|
16
|
+
|
17
|
+
begin
|
18
|
+
|
19
|
+
Scoutui::Logger::LogMgr.instance.debug __FILE__ + (__LINE__).to_s + " LoadRequirements()"
|
20
|
+
|
21
|
+
if e['page'].has_key?('files')
|
22
|
+
|
23
|
+
e['page']['files'].each do |r|
|
24
|
+
y=YAML.load_stream File.read(r)
|
25
|
+
|
26
|
+
puts __FILE__ + (__LINE__).to_s + " *** REQMT => #{y}"
|
27
|
+
|
28
|
+
y.each do |_y|
|
29
|
+
puts __FILE__ + (__LINE__).to_s + " ===> #{_y}"
|
30
|
+
Scoutui::Base::Requirements.instance.add(_y['requirement']['name'], _y['requirement']['assertions'])
|
31
|
+
end
|
32
|
+
|
33
|
+
|
34
|
+
end
|
35
|
+
|
36
|
+
|
37
|
+
end
|
38
|
+
|
39
|
+
rc=true
|
40
|
+
|
41
|
+
rescue => ex
|
42
|
+
Scoutui::Logger::LogMgr.instance.warn "Error during processing: #{ex}"
|
43
|
+
Scoutui::Logger::LogMgr.instance.warn "Backtrace:\n\t#{ex.backtrace.join("\n\t")}"
|
44
|
+
end
|
45
|
+
|
46
|
+
if rc
|
47
|
+
Scoutui::Logger::LogMgr.instance.asserts.info "Verify requirements command passed - #{rc}"
|
48
|
+
Testmgr::TestReport.instance.getReq(_req).testcase('click').add(rc, "Verify requirements command passed")
|
49
|
+
end
|
50
|
+
|
51
|
+
setResult(rc)
|
52
|
+
end
|
53
|
+
|
54
|
+
end
|
55
|
+
|
56
|
+
|
57
|
+
|
58
|
+
end
|
@@ -6,7 +6,6 @@ module Scoutui::Commands
|
|
6
6
|
|
7
7
|
|
8
8
|
KEYBOARD_LIST={
|
9
|
-
|
10
9
|
'__DOWN__' => lambda { |obj| obj.send_keys(:arrow_down) },
|
11
10
|
'__TAB__' => lambda { |obj| obj.send_keys(:tab) },
|
12
11
|
'__CLEAR__' => lambda { |obj| obj.clear }
|
@@ -49,6 +48,7 @@ module Scoutui::Commands
|
|
49
48
|
|
50
49
|
end
|
51
50
|
|
51
|
+
|
52
52
|
def execute(drv=nil, _notUsed=nil)
|
53
53
|
@drv=drv if !drv.nil?
|
54
54
|
|
@@ -81,24 +81,31 @@ module Scoutui::Commands
|
|
81
81
|
|
82
82
|
if !obj.nil? &&
|
83
83
|
(obj.tag_name.downcase=='body' ||
|
84
|
-
!obj.attribute('type').downcase.match(/(text|textarea|password|email)/).nil? )
|
84
|
+
!obj.attribute('type').downcase.match(/(file|input|text|textarea|password|email)/).nil? )
|
85
85
|
|
86
|
-
# Refactor in qbrowser
|
87
|
-
|
88
|
-
wait = Selenium::WebDriver::Wait.new(:timeout => Scoutui::Commands::Utils.instance.getTimeout)
|
89
86
|
isDisplayed=false
|
90
|
-
isDisplayed = wait.until {
|
91
|
-
true if obj.displayed?
|
92
|
-
}
|
93
87
|
|
94
|
-
|
88
|
+
# FileUpload dialog is not 'displayed'
|
89
|
+
if !Scoutui::Base::QBrowser.isFileType?(obj)
|
90
|
+
begin
|
91
|
+
wait = Selenium::WebDriver::Wait.new(:timeout => Scoutui::Commands::Utils.instance.getTimeout)
|
92
|
+
isDisplayed = wait.until {
|
93
|
+
true if obj.displayed?
|
94
|
+
}
|
95
|
+
rescue Selenium::WebDriver::Error::TimeOutError => ex
|
96
|
+
Scoutui::Logger::LogMgr.instance.debug __FILE__ + (__LINE__).to_s + " Timeout waiting for display?: #{_xpath}"
|
97
|
+
end
|
98
|
+
end
|
99
|
+
|
100
|
+
|
101
|
+
if @cmd.match(/^\s*type\!/i)
|
95
102
|
Scoutui::Logger::LogMgr.instance.debug __FILE__ + (__LINE__).to_s + " clear()"
|
96
103
|
obj.clear if isDisplayed
|
97
104
|
end
|
98
105
|
|
99
106
|
Scoutui::Logger::LogMgr.instance.debug __FILE__ + (__LINE__).to_s + " send_keys(#{_val})"
|
100
107
|
|
101
|
-
if isDisplayed
|
108
|
+
if isDisplayed || Scoutui::Base::QBrowser.isFileType?(obj)
|
102
109
|
|
103
110
|
if KEYBOARD_LIST.has_key?(_val.strip)
|
104
111
|
KEYBOARD_LIST[_val.strip].call(obj)
|
@@ -125,9 +132,9 @@ module Scoutui::Commands
|
|
125
132
|
## Global replaces
|
126
133
|
_text_to_type = Scoutui::Base::UserVars.instance.get(_v2)
|
127
134
|
|
128
|
-
|
135
|
+
Scoutui::Logger::LogMgr.instance.debug __FILE__ + (__LINE__).to_s + " rawText : #{_text_to_type}"
|
129
136
|
_text_to_type = Scoutui::Commands::Utils.instance.expandMacro(_text_to_type)
|
130
|
-
|
137
|
+
Scoutui::Logger::LogMgr.instance.debug __FILE__ + (__LINE__).to_s + " Text to type : #{_text_to_type}"
|
131
138
|
obj.send_keys(_text_to_type)
|
132
139
|
|
133
140
|
if !obj.nil? && false
|
@@ -160,7 +167,7 @@ module Scoutui::Commands
|
|
160
167
|
end
|
161
168
|
|
162
169
|
rescue => ex
|
163
|
-
Scoutui::Logger::LogMgr.instance.debug "Error during processing: #{ex}"
|
170
|
+
Scoutui::Logger::LogMgr.instance.debug "Error during processing: #{ex.class}"
|
164
171
|
puts __FILE__ + (__LINE__).to_s + "Backtrace:\n\t#{ex.backtrace.join("\n\t")}"
|
165
172
|
end
|
166
173
|
|
@@ -0,0 +1,75 @@
|
|
1
|
+
|
2
|
+
module Scoutui::Commands
|
3
|
+
|
4
|
+
class UploadFiles < Command
|
5
|
+
|
6
|
+
|
7
|
+
|
8
|
+
def execute(drv, _e=nil)
|
9
|
+
|
10
|
+
Scoutui::Logger::LogMgr.instance.debug __FILE__ + (__LINE__).to_s + " uploadFiles(#{_e})"
|
11
|
+
|
12
|
+
_rc=true
|
13
|
+
|
14
|
+
@drv=drv if !drv.nil?
|
15
|
+
|
16
|
+
|
17
|
+
filelist=_e['page']['with']
|
18
|
+
to=_e['page']['to']
|
19
|
+
submit=_e['page']['submit']
|
20
|
+
close=_e['page']['close']
|
21
|
+
waitList=_e['page']['wait']
|
22
|
+
|
23
|
+
if filelist.is_a?(Array)
|
24
|
+
|
25
|
+
filelist.each do |_f|
|
26
|
+
Scoutui::Logger::LogMgr.instance.debug __FILE__ + (__LINE__).to_s + " upload #{_f}"
|
27
|
+
|
28
|
+
if _e['page'].has_key?('by')
|
29
|
+
|
30
|
+
test_settings={}
|
31
|
+
test_settings['dut']=_e['page']['by']
|
32
|
+
# Scoutui::Base::VisualTestFramework::processFile(eyeScout, test_settings, strategy=nil)
|
33
|
+
_typeCmd={ 'page' => {'action' => "click(#{_e['page']['by']})"} }
|
34
|
+
_c = Scoutui::Commands::ClickObject.new(_typeCmd)
|
35
|
+
_c.run(driver: @drv, dut: nil)
|
36
|
+
end
|
37
|
+
|
38
|
+
_typeCmd={ 'page' => {'action' => "type(#{to}, #{_f})"} }
|
39
|
+
# _typeCmd['page']['action']="type(#{to}, #{_f}"
|
40
|
+
_c = Scoutui::Commands::Type.new(_typeCmd, @drv)
|
41
|
+
_c.run(driver: @drv)
|
42
|
+
|
43
|
+
# puts __FILE__ + (__LINE__).to_s + " Uploaded - pause"; STDIN.gets;
|
44
|
+
|
45
|
+
_typeCmd={ 'page' => {'action' => "click(#{submit})"} }
|
46
|
+
_c = Scoutui::Commands::ClickObject.new(_typeCmd)
|
47
|
+
_c.run(driver: @drv, dut: nil)
|
48
|
+
|
49
|
+
|
50
|
+
Scoutui::Base::VisualTestFramework::processAsserts(@drv, waitList, false)
|
51
|
+
|
52
|
+
_typeCmd={ 'page' => {'action' => "click(#{close})"} }
|
53
|
+
_c = Scoutui::Commands::ClickObject.new(_typeCmd)
|
54
|
+
_c.run(driver: @drv, dut: nil)
|
55
|
+
puts "++ CLOSED DLG **"; # STDIN.gets
|
56
|
+
end
|
57
|
+
|
58
|
+
|
59
|
+
|
60
|
+
end
|
61
|
+
|
62
|
+
|
63
|
+
|
64
|
+
setResult(rc)
|
65
|
+
|
66
|
+
end
|
67
|
+
|
68
|
+
|
69
|
+
|
70
|
+
|
71
|
+
|
72
|
+
end
|
73
|
+
|
74
|
+
|
75
|
+
end
|
@@ -15,6 +15,7 @@ module Scoutui::Commands
|
|
15
15
|
def initialize
|
16
16
|
@command_list=['pause',
|
17
17
|
'assignvar',
|
18
|
+
'assignments',
|
18
19
|
'existsAlert',
|
19
20
|
'clickJsAlert',
|
20
21
|
'fillform',
|
@@ -23,10 +24,12 @@ module Scoutui::Commands
|
|
23
24
|
'submitform',
|
24
25
|
'type',
|
25
26
|
'click',
|
27
|
+
'loadrequirements',
|
26
28
|
'mouseover',
|
27
29
|
'navigate',
|
28
30
|
'select',
|
29
31
|
'select_window',
|
32
|
+
'uploadfiles',
|
30
33
|
'verifyelt',
|
31
34
|
'verifyelement',
|
32
35
|
'verifyform']
|
@@ -132,7 +135,7 @@ module Scoutui::Commands
|
|
132
135
|
end
|
133
136
|
end
|
134
137
|
|
135
|
-
puts __FILE__ + (__LINE__).to_s + "
|
138
|
+
puts __FILE__ + (__LINE__).to_s + " expandMacro : #{_text_to_type}"
|
136
139
|
|
137
140
|
_text_to_type.to_s
|
138
141
|
|
@@ -212,6 +215,9 @@ module Scoutui::Commands
|
|
212
215
|
@timeout.to_i
|
213
216
|
end
|
214
217
|
|
218
|
+
def isAssignments?(_action)
|
219
|
+
!_action.match(/^\s*(assignments)\s*$/).nil?
|
220
|
+
end
|
215
221
|
|
216
222
|
def isAssignVar?(_action)
|
217
223
|
!_action.match(/assign\(([\w]+)\s*\,(.*)\)\s*$/i).nil?
|
@@ -250,6 +256,10 @@ module Scoutui::Commands
|
|
250
256
|
!_action.match(/fillform\(/i).nil?
|
251
257
|
end
|
252
258
|
|
259
|
+
def isLoadRequirements?(_action)
|
260
|
+
!_action.match(/^\s*loadrequirements\s*$/i).nil?
|
261
|
+
end
|
262
|
+
|
253
263
|
def isMouseOver?(_action)
|
254
264
|
!_action.match(/mouseover\(/).nil?
|
255
265
|
end
|
@@ -274,6 +284,10 @@ module Scoutui::Commands
|
|
274
284
|
!_action.nil? && _action.match(/^\s*select\s*\(/i)
|
275
285
|
end
|
276
286
|
|
287
|
+
def isUploadFiles?(_action)
|
288
|
+
!_action.nil? && _action.match(/^\s*uploadfiles\s*$/i)
|
289
|
+
end
|
290
|
+
|
277
291
|
def isNavigate?(_action)
|
278
292
|
!_action.nil? && _action.match(/(navigate|url)\(/i)
|
279
293
|
end
|
@@ -286,6 +300,8 @@ module Scoutui::Commands
|
|
286
300
|
@totalCommands['pause']+=1
|
287
301
|
elsif isAssignVar?(cmd)
|
288
302
|
@totalCommands['assignvar']+=1
|
303
|
+
elsif isAssignments?(cmd)
|
304
|
+
@totalCommands['assignments']+=1
|
289
305
|
elsif isExistsAlert?(cmd)
|
290
306
|
@totalCommands['existsAlert']+=1
|
291
307
|
elsif isFrame?(cmd)
|
@@ -308,12 +324,16 @@ module Scoutui::Commands
|
|
308
324
|
@totalCommands['click']+=1
|
309
325
|
elsif isMouseOver?(cmd)
|
310
326
|
@totalCommands['mouseover']+=1
|
327
|
+
elsif isLoadRequirements?(cmd)
|
328
|
+
@totalCommands['loadrequirements']+=1
|
311
329
|
elsif isSelect?(cmd)
|
312
330
|
@totalCommands['select']+=1
|
313
331
|
elsif isNavigate?(cmd)
|
314
332
|
@totalCommands['navigate']+=1
|
315
333
|
elsif isSelectWindow?(cmd)
|
316
334
|
@totalCommands['select_window']+=1
|
335
|
+
elsif isUploadFiles?(cmd)
|
336
|
+
@totalCommands['uploadfiles']+=1
|
317
337
|
else
|
318
338
|
rc=false
|
319
339
|
end
|
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.32.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-
|
11
|
+
date: 2016-08-01 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -237,6 +237,7 @@ files:
|
|
237
237
|
- lib/scoutui/base/q_applitools.rb
|
238
238
|
- lib/scoutui/base/q_browser.rb
|
239
239
|
- lib/scoutui/base/q_form.rb
|
240
|
+
- lib/scoutui/base/requirements.rb
|
240
241
|
- lib/scoutui/base/test_scout.rb
|
241
242
|
- lib/scoutui/base/test_settings.rb
|
242
243
|
- lib/scoutui/base/user_vars.rb
|
@@ -249,6 +250,7 @@ files:
|
|
249
250
|
- lib/scoutui/commands/fill_form.rb
|
250
251
|
- lib/scoutui/commands/highlight.rb
|
251
252
|
- lib/scoutui/commands/jsalert/action_jsalert.rb
|
253
|
+
- lib/scoutui/commands/load_requirements.rb
|
252
254
|
- lib/scoutui/commands/mouse_over.rb
|
253
255
|
- lib/scoutui/commands/pause.rb
|
254
256
|
- lib/scoutui/commands/select_object.rb
|
@@ -258,6 +260,7 @@ files:
|
|
258
260
|
- lib/scoutui/commands/switch_frame.rb
|
259
261
|
- lib/scoutui/commands/type.rb
|
260
262
|
- lib/scoutui/commands/update_url.rb
|
263
|
+
- lib/scoutui/commands/upload_files.rb
|
261
264
|
- lib/scoutui/commands/utils.rb
|
262
265
|
- lib/scoutui/commands/verify_element.rb
|
263
266
|
- lib/scoutui/commands/verify_form.rb
|