scoutui 2.0.3.31.pre → 2.0.3.32.pre
Sign up to get free protection for your applications and to get access to all the features.
- 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
|