scoutui 2.0.3.50.pre → 2.0.3.51.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/appmodel/q_model.rb +9 -2
- data/lib/scoutui/base/assertions.rb +19 -2
- data/lib/scoutui/base/q_browser.rb +119 -3
- data/lib/scoutui/base/visual_test_framework.rb +113 -13
- data/lib/scoutui/commands/commands.rb +3 -1
- data/lib/scoutui/commands/select_object.rb +6 -2
- data/lib/scoutui/commands/type.rb +14 -2
- data/lib/scoutui/commands/update_url.rb +7 -0
- data/lib/scoutui/commands/utils.rb +2 -0
- data/lib/scoutui/utils/utils.rb +8 -0
- data/lib/scoutui/version.rb +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 6c5cc805fe6fbfbc8493fbba16daf30ce96ed97a
|
4
|
+
data.tar.gz: 6713d51d7c4dda1a06c7ed3da8be5ab87d08eee2
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 9c185fb0012d0fa6176d1112f58a41cbccadc92535803a74bf57cae78aa267656baaaf158e2165d4d574e2652ce60c5a57c88db3d9466849839663f74d70bb8a
|
7
|
+
data.tar.gz: 47cf0a7f0360242c67f9dadb5c36c671e4e530831f08335021356b0c14411c3a68d5ffe126f7ad18a833e664d50d008a54cf513c333fd0169ac0e8551363a648
|
@@ -71,9 +71,16 @@ module Scoutui::ApplicationModel
|
|
71
71
|
Scoutui::Logger::LogMgr.instance.debug __FILE__ + (__LINE__).to_s + " -- process page --" if Scoutui::Utils::TestUtils.instance.isDebug?
|
72
72
|
hit=@app_model[_obj]
|
73
73
|
elsif getter.downcase=='get'
|
74
|
-
|
74
|
+
|
75
|
+
if !hit.nil? && hit.has_key?(_obj)
|
76
|
+
hit=hit[_obj]
|
77
|
+
else
|
78
|
+
Scoutui::Logger::LogMgr.instance.warn __FILE__ + (__LINE__).to_s + " Missing getter : #{_obj.to_s}"
|
79
|
+
return nil
|
80
|
+
end
|
81
|
+
|
75
82
|
else
|
76
|
-
Scoutui::Logger::LogMgr.instance.
|
83
|
+
Scoutui::Logger::LogMgr.instance.warn __FILE__ + (__LINE__).to_s + " getter : #{getter} is unknown."
|
77
84
|
return nil
|
78
85
|
end
|
79
86
|
Scoutui::Logger::LogMgr.instance.debug __FILE__ + (__LINE__).to_s + " HIT => #{hit}" if Scoutui::Utils::TestUtils.instance.isDebug?
|
@@ -184,7 +184,16 @@ module Scoutui::Base
|
|
184
184
|
end
|
185
185
|
|
186
186
|
def isVisibleCmd?(_a)
|
187
|
-
_a.is_a?(String) &&
|
187
|
+
_a.is_a?(String) &&
|
188
|
+
( _a.match(/^\s*[!]*visible\((.*)\)\s*$/i) ||
|
189
|
+
_a.match(/^\s*[!]*visible\((.*)?,\s*(\d+)\s*\)$/) )
|
190
|
+
|
191
|
+
|
192
|
+
# if xpath.match(/^\s*!visible\((.*,\s*\d+\s*)\)$/)
|
193
|
+
# _e = xpath.match(/^\s*!visible\((.*),\s*\d+\s*\)$/)[1].to_s.strip
|
194
|
+
# _timeout=xpath.match(/^\s*!visible\((.*),\s*(\d+)\s*\)$/)[2].to_i
|
195
|
+
# end
|
196
|
+
|
188
197
|
end
|
189
198
|
|
190
199
|
|
@@ -438,6 +447,8 @@ module Scoutui::Base
|
|
438
447
|
def isVisible?(my_driver, _execute_when, _enableAsserts=true)
|
439
448
|
rc=true
|
440
449
|
|
450
|
+
_tm = Scoutui::Commands::Utils.instance.getTimeout
|
451
|
+
|
441
452
|
begin
|
442
453
|
|
443
454
|
_t = isVisibleFrameCmd?(_execute_when)
|
@@ -454,7 +465,13 @@ module Scoutui::Base
|
|
454
465
|
end
|
455
466
|
|
456
467
|
elsif isVisibleCmd?(_execute_when)
|
468
|
+
|
469
|
+
if _execute_when.match(/^\s*[!]*visible\((.*)?,\s*(\d+)\s*\)$/)
|
470
|
+
_locator = _execute_when.match(/^\s*[!]*visible\((.*)?,\s*(\d+)\s*\)$/)[1].to_s
|
471
|
+
_tm = _execute_when.match(/^\s*[!]*visible\((.*)?,\s*(\d+)\s*\)$/)[2].to_i
|
472
|
+
else
|
457
473
|
_locator = _execute_when.match(/^\s*[!]*visible\((.*)\)\s*$/i)[1].to_s
|
474
|
+
end
|
458
475
|
|
459
476
|
|
460
477
|
_locator = Scoutui::Base::UserVars.instance.normalize(_locator)
|
@@ -465,7 +482,7 @@ module Scoutui::Base
|
|
465
482
|
|
466
483
|
Scoutui::Logger::LogMgr.instance.debug __FILE__ + (__LINE__).to_s + " visible => #{_locator}"
|
467
484
|
|
468
|
-
_obj = Scoutui::Base::QBrowser.findElement(my_driver, _locator, Scoutui::Commands::Utils.instance.getFrameSearch(), Scoutui::Commands::Utils.instance.getTimeout)
|
485
|
+
_obj = Scoutui::Base::QBrowser.findElement(my_driver, _locator, Scoutui::Commands::Utils.instance.getFrameSearch(), _tm) # Scoutui::Commands::Utils.instance.getTimeout)
|
469
486
|
|
470
487
|
Scoutui::Logger::LogMgr.instance.debug __FILE__ + (__LINE__).to_s + " obj => #{_obj}"
|
471
488
|
|
@@ -19,10 +19,7 @@ module Scoutui::Base
|
|
19
19
|
begin
|
20
20
|
Selenium::WebDriver::Wait.new(timeout: _timeout).until {
|
21
21
|
rc=drv.find_element(:xpath => xpath).displayed?
|
22
|
-
|
23
22
|
obj=getObject(drv, obj, _timeout=nil)
|
24
|
-
|
25
|
-
|
26
23
|
}
|
27
24
|
rescue => ex
|
28
25
|
;
|
@@ -423,6 +420,124 @@ module Scoutui::Base
|
|
423
420
|
obj
|
424
421
|
end
|
425
422
|
|
423
|
+
|
424
|
+
# 5150
|
425
|
+
def self.findElements(opts)
|
426
|
+
puts __FILE__ + (__LINE__).to_s + " findElements(#{opts})"
|
427
|
+
driver=opts[:driver]
|
428
|
+
locator=opts[:locator]
|
429
|
+
locateBy=:xpath
|
430
|
+
hits=nil
|
431
|
+
|
432
|
+
|
433
|
+
if locator.match(/^\s*css\s*\=\s*/i)
|
434
|
+
locateBy = :css
|
435
|
+
locator = locator.match(/css\s*\=\s*(.*)/i)[1].to_s
|
436
|
+
elsif locator.match(/^#/i)
|
437
|
+
locateBy = :css
|
438
|
+
end
|
439
|
+
|
440
|
+
puts __FILE__ + (__LINE__).to_s + " driver : #{driver.class}"
|
441
|
+
puts __FILE__ + (__LINE__).to_s + " locator : #{locator}"
|
442
|
+
|
443
|
+
begin
|
444
|
+
_timeout=Scoutui::Commands::Utils.instance.getTimeout
|
445
|
+
Selenium::WebDriver::Wait.new(timeout: _timeout).until { hits=driver.find_elements( locateBy => locator) }
|
446
|
+
|
447
|
+
rescue => ex
|
448
|
+
puts __FILE__ + (__LINE__).to_s + " #{ex.class}"
|
449
|
+
puts ex.backtrace
|
450
|
+
|
451
|
+
end
|
452
|
+
hits
|
453
|
+
end
|
454
|
+
|
455
|
+
def self.hasParent?(element, parent_xpath)
|
456
|
+
|
457
|
+
parent=nil
|
458
|
+
if element.is_a?(Selenium::WebDriver::Element)
|
459
|
+
begin
|
460
|
+
parent = element.find_element(:xpath, parent_xpath)
|
461
|
+
rescue Selenium::WebDriver::Error::NoSuchElementError
|
462
|
+
;
|
463
|
+
end
|
464
|
+
|
465
|
+
end
|
466
|
+
|
467
|
+
parent
|
468
|
+
end
|
469
|
+
|
470
|
+
# 5150
|
471
|
+
# http://stackoverflow.com/questions/14288917/selenium-webdriver-get-attributes-after-finding-an-element
|
472
|
+
def self.isAccessible(opts)
|
473
|
+
|
474
|
+
puts __FILE__ + (__LINE__).to_s + " == isAccessible(#{opts}) =="
|
475
|
+
hits = Scoutui::Base::QBrowser.findElements(opts)
|
476
|
+
|
477
|
+
puts __FILE__ + (__LINE__).to_s + " HITS => #{hits.length}"
|
478
|
+
|
479
|
+
|
480
|
+
i=0
|
481
|
+
begin
|
482
|
+
hits.each do | obj |
|
483
|
+
if obj.displayed?
|
484
|
+
puts __FILE__ + (__LINE__).to_s + " #{i}. #{obj.tag_name}"
|
485
|
+
|
486
|
+
tagName=obj.tag_name.to_s.strip
|
487
|
+
|
488
|
+
## Verify labels are present for user input elements
|
489
|
+
if tagName.match(/(textarea|input)/) && obj.attribute('id')
|
490
|
+
id=obj['id'].to_s
|
491
|
+
|
492
|
+
# parent_li = obj.find_element(:xpath, './../label')
|
493
|
+
parent_li = Scoutui::Base::QBrowser.hasParent?(obj, "./../label[@for='#{id}']")
|
494
|
+
|
495
|
+
Testmgr::TestReport.instance.getReq('WCAG').testcase(tagName).add(!parent_li.nil?, "Verify matching label (id=#{id.to_s}) exists for #{tagName}.")
|
496
|
+
|
497
|
+
if parent_li
|
498
|
+
forId = parent_li['for']
|
499
|
+
puts __FILE__ + (__LINE__).to_s + " parent: #{parent_li.tag_name}"
|
500
|
+
puts __FILE__ + (__LINE__).to_s + " assert <id, for>: #{id}, #{forId}"
|
501
|
+
|
502
|
+
Testmgr::TestReport.instance.getReq('WCAG').testcase(tagName).add(id==forId, "Verify matching label for #{tagName} has same id (#{id}) and for (#{forId}) values")
|
503
|
+
else
|
504
|
+
puts __FILE__ + (__LINE__).to_s + " => Missing associated label for #{tagName}"
|
505
|
+
end
|
506
|
+
|
507
|
+
|
508
|
+
#---------------------------------------------------#
|
509
|
+
|
510
|
+
elsif tagName.match(/(img)/)
|
511
|
+
|
512
|
+
src=obj.attribute('src')
|
513
|
+
alt=obj.attribute('alt')
|
514
|
+
longdesc=obj.attribute('longdesc')
|
515
|
+
|
516
|
+
puts __FILE__ + (__LINE__).to_s + " ** #{i}. process #{tagName} <alt, longdesc>::<#{alt.nil?}, #{longdesc.nil?}, #{src}> **"
|
517
|
+
|
518
|
+
Testmgr::TestReport.instance.getReq('WCAG').testcase(tagName).add(!(alt.nil? && longdesc.nil?), "Verify alt/longdesc (#{alt.to_s} exists for img[#{i}] (#{src})")
|
519
|
+
|
520
|
+
|
521
|
+
else
|
522
|
+
puts __FILE__ + (__LINE__).to_s + " == #{tagName} out of scope for Acccessibility"
|
523
|
+
|
524
|
+
end
|
525
|
+
|
526
|
+
|
527
|
+
|
528
|
+
i+=1
|
529
|
+
end
|
530
|
+
end
|
531
|
+
|
532
|
+
rescue => ex
|
533
|
+
puts __FILE__ + (__LINE__).to_s + " #{ex.class}"
|
534
|
+
puts ex.backtrace
|
535
|
+
end
|
536
|
+
|
537
|
+
|
538
|
+
end
|
539
|
+
|
540
|
+
|
426
541
|
def self.findElement(drv, _locator, _frames, _timeout=nil)
|
427
542
|
|
428
543
|
Scoutui::Logger::LogMgr.instance.debug __FILE__ + (__LINE__).to_s + " findElement(#{_locator}, #{Scoutui::Commands::Utils.instance.getFrameSearch})"
|
@@ -621,6 +736,7 @@ module Scoutui::Base
|
|
621
736
|
Scoutui::Logger::LogMgr.instance.debug __FILE__ + (__LINE__).to_s + " By => #{locateBy.to_s}"
|
622
737
|
Scoutui::Logger::LogMgr.instance.debug __FILE__ + (__LINE__).to_s + " Locator => #{locator}"
|
623
738
|
Scoutui::Logger::LogMgr.instance.debug __FILE__ + (__LINE__).to_s + " Visible_When => #{visible_when}"
|
739
|
+
Scoutui::Logger::LogMgr.instance.debug __FILE__ + (__LINE__).to_s + " Timeout => #{_timeout}"
|
624
740
|
|
625
741
|
Selenium::WebDriver::Wait.new(timeout: _timeout).until { rc=drv.find_element( locateBy => locator) }
|
626
742
|
|
@@ -57,6 +57,10 @@ module Scoutui::Base
|
|
57
57
|
|
58
58
|
Scoutui::Base::Assertions.instance.assertPageElement(k, page_elt, _obj, my_driver, _req)
|
59
59
|
|
60
|
+
if page_elt.has_key?('asserts')
|
61
|
+
Scoutui::Logger::LogMgr.instance.debug __FILE__ + (__LINE__).to_s + " ** process Asserts #{page_elt['asserts']} **"
|
62
|
+
STDIN.gets
|
63
|
+
end
|
60
64
|
|
61
65
|
|
62
66
|
elsif sub_elts > 0
|
@@ -108,6 +112,7 @@ module Scoutui::Base
|
|
108
112
|
|
109
113
|
if _v.has_key?('reqid')
|
110
114
|
_req=_v['reqid'].to_s
|
115
|
+
Scoutui::Logger::LogMgr.instance.debug __FILE__ + (__LINE__).to_s + " temporary update REQID to #{_req}"
|
111
116
|
end
|
112
117
|
|
113
118
|
if _v.has_key?('locator')
|
@@ -118,7 +123,25 @@ module Scoutui::Base
|
|
118
123
|
|
119
124
|
_obj = Scoutui::Base::QBrowser.getFirstObject(my_driver, _locator, Scoutui::Commands::Utils.instance.getTimeout())
|
120
125
|
|
121
|
-
Scoutui::Logger::LogMgr.instance.info __FILE__ + (__LINE__).to_s + " HIT #{_locator} => #{(!_obj.nil?).to_s}"
|
126
|
+
Scoutui::Logger::LogMgr.instance.info __FILE__ + (__LINE__).to_s + " HIT #{_locator} => #{(!_obj.nil?).to_s}"
|
127
|
+
end
|
128
|
+
|
129
|
+
|
130
|
+
if _v.has_key?('asserts')
|
131
|
+
Scoutui::Logger::LogMgr.instance.debug __FILE__ + (__LINE__).to_s + " ** process Asserts **"
|
132
|
+
_v['asserts'].each do | _ass|
|
133
|
+
Scoutui::Logger::LogMgr.instance.debug __FILE__ + (__LINE__).to_s + " => #{_ass}"
|
134
|
+
end
|
135
|
+
|
136
|
+
|
137
|
+
# Should be refactored (TBD)
|
138
|
+
_backupReq = Scoutui::Utils::TestUtils.instance.getReq()
|
139
|
+
Scoutui::Utils::TestUtils.instance.setReq(_req) if !_req.nil?
|
140
|
+
|
141
|
+
_assertResult=processAsserts(my_driver, _v["asserts"])
|
142
|
+
|
143
|
+
Scoutui::Utils::TestUtils.instance.setReq(_backupReq) if !_req.nil?
|
144
|
+
|
122
145
|
end
|
123
146
|
|
124
147
|
if Scoutui::Base::Assertions.instance.visible_when_always(_k, _v, _obj, _req)
|
@@ -153,9 +176,13 @@ module Scoutui::Base
|
|
153
176
|
|
154
177
|
|
155
178
|
end
|
179
|
+
|
180
|
+
else
|
181
|
+
Scoutui::Logger::LogMgr.instance.debug __FILE__ + (__LINE__).to_s + " Unknown: #{_k} : #{_v}"
|
156
182
|
end
|
157
183
|
|
158
184
|
|
185
|
+
|
159
186
|
rescue => ex
|
160
187
|
Scoutui::Logger::LogMgr.instance.warn __FILE__ + (__LINE__).to_s + " Error during processing: #{ex}"
|
161
188
|
Scoutui::Logger::LogMgr.instance.warn __FILE__ + (__LINE__).to_s + "Backtrace:\n\t#{ex.backtrace.join("\n\t")}"
|
@@ -186,6 +213,11 @@ module Scoutui::Base
|
|
186
213
|
end
|
187
214
|
|
188
215
|
# next
|
216
|
+
|
217
|
+
elsif page_elt.is_a?(Hash) && page_elt.has_key?('asserts')
|
218
|
+
# 5150
|
219
|
+
Scoutui::Logger::LogMgr.instance.debug __FILE__ + (__LINE__).to_s + " ** asserts from PageElement verification **"
|
220
|
+
Scoutui::Logger::LogMgr.instance.debug __FILE__ + (__LINE__).to_s + " =============="; STDIN.gets
|
189
221
|
end
|
190
222
|
|
191
223
|
|
@@ -319,6 +351,7 @@ module Scoutui::Base
|
|
319
351
|
processConditions(my_driver, e, 'assertions')
|
320
352
|
end
|
321
353
|
|
354
|
+
# recsult=processAsserts(my_driver, e[STEP_KEY]["asserts"])
|
322
355
|
def self.processAsserts(my_driver, _execute_when, _enableAsserts=true)
|
323
356
|
|
324
357
|
Scoutui::Logger::LogMgr.instance.debug __FILE__ + (__LINE__).to_s + " processAsserts#{_execute_when}"
|
@@ -334,34 +367,60 @@ module Scoutui::Base
|
|
334
367
|
|
335
368
|
_rc=nil
|
336
369
|
|
370
|
+
_bm=nil
|
337
371
|
|
338
372
|
_assertType=Scoutui::Base::Assertions.instance.isValidAssertType(_a)
|
339
373
|
|
340
|
-
|
374
|
+
Scoutui::Logger::LogMgr.instance.debug __FILE__ + (__LINE__).to_s + " assertType : #{_assertType}"
|
341
375
|
|
376
|
+
if !_assertType.nil?
|
342
377
|
|
343
378
|
if _assertType[:cmd].match(/^\s*isEnabled\s*$/i) # Scoutui::Base::Assertions.instance.isEnabledCmd?(_a)
|
344
|
-
|
379
|
+
|
380
|
+
_bm=Benchmark.measure {
|
381
|
+
_rc=Scoutui::Base::Assertions.instance.isEnabled?(my_driver, _a, _enableAsserts)
|
382
|
+
}
|
383
|
+
|
345
384
|
elsif _assertType[:cmd]=='visible'
|
346
|
-
|
385
|
+
|
386
|
+
_bm=Benchmark.measure {
|
387
|
+
_rc=Scoutui::Base::Assertions.instance.isVisible?(my_driver, _a, _enableAsserts)
|
388
|
+
}
|
389
|
+
|
347
390
|
elsif _assertType[:cmd]=='isSelected'
|
348
|
-
|
391
|
+
_bm=Benchmark.measure {
|
392
|
+
_rc=Scoutui::Base::Assertions.instance.isEnabled?(my_driver, _a)
|
393
|
+
}
|
394
|
+
|
349
395
|
elsif _assertType[:cmd]=='isText'
|
350
|
-
|
396
|
+
_bm=Benchmark.measure {
|
397
|
+
_rc=Scoutui::Base::Assertions.instance.isEnabled?(my_driver, _a)
|
398
|
+
}
|
399
|
+
|
351
400
|
elsif _assertType[:cmd]=='isValue'
|
352
|
-
|
401
|
+
_bm=Benchmark.measure {
|
402
|
+
_rc=Scoutui::Base::Assertions.instance.isEnabled?(my_driver, _a)
|
403
|
+
}
|
353
404
|
end
|
354
405
|
|
355
406
|
elsif Scoutui::Base::Assertions.instance.isRoleCmd?(_a)
|
356
|
-
|
407
|
+
_bm=Benchmark.measure {
|
408
|
+
_rc=Scoutui::Base::Assertions.instance.isRole?(_a)
|
409
|
+
}
|
357
410
|
# elsif Scoutui::Base::Assertions.instance.isVisibleCmd?(_a)
|
358
411
|
# _rc=Scoutui::Base::Assertions.instance.isVisible?(my_driver, _a)
|
359
412
|
elsif Scoutui::Base::Assertions.instance.isSelectedCmd?(_a)
|
360
|
-
|
413
|
+
_bm=Benchmark.measure {
|
414
|
+
_rc=Scoutui::Base::Assertions.instance.isSelected?(my_driver, _a)
|
415
|
+
}
|
361
416
|
elsif Scoutui::Base::Assertions.instance.isValueCmd?(_a)
|
362
|
-
|
417
|
+
_bm=Benchmark.measure {
|
418
|
+
_rc=Scoutui::Base::Assertions.instance.isValue?(my_driver, _a)
|
419
|
+
}
|
363
420
|
elsif Scoutui::Base::Assertions.instance.isTitleCmd?(_a)
|
364
|
-
|
421
|
+
_bm=Benchmark.measure {
|
422
|
+
_rc=Scoutui::Base::Assertions.instance.isTitle(my_driver, _a)
|
423
|
+
}
|
365
424
|
elsif _a.match(/^\s*(req|requirement)\s*\((.*)\)\s*$/i)
|
366
425
|
|
367
426
|
_reqID=_a.match(/^\s*(req|requirement)\s*\((.*)\)\s*$/i)[2].to_s
|
@@ -371,15 +430,45 @@ module Scoutui::Base
|
|
371
430
|
Scoutui::Logger::LogMgr.instance.debug __FILE__ + (__LINE__).to_s + " => #{_reqAsserts}"
|
372
431
|
|
373
432
|
_req = Scoutui::Utils::TestUtils.instance.setReq(_reqID)
|
374
|
-
|
433
|
+
|
434
|
+
_bm=Benchmark.measure {
|
435
|
+
_rc=processAsserts(my_driver, _reqAsserts, _enableAsserts)
|
436
|
+
}
|
437
|
+
|
375
438
|
Scoutui::Utils::TestUtils.instance.setReq(_req)
|
439
|
+
|
440
|
+
|
441
|
+
elsif !_a.match(/^page\([\w\d]+\)/).nil?
|
442
|
+
|
443
|
+
puts __FILE__ + (__LINE__).to_s + "\n\n=== Validate Page ==="
|
444
|
+
|
445
|
+
_obj = processPageElement(my_driver, nil, _a)
|
446
|
+
|
447
|
+
# 5150
|
448
|
+
puts __FILE__ + (__LINE__).to_s + " *** WHAT type of assertion => #{_obj}"; STDIN.gets
|
449
|
+
|
450
|
+
elsif !_a.match(/^\s*accessibility\s*$/).nil?
|
451
|
+
puts __FILE__ + (__LINE__).to_s + " *** Accessibility ***"
|
452
|
+
|
453
|
+
|
454
|
+
# 5150
|
455
|
+
# Get all displayed textareas
|
456
|
+
['//textarea', '//img'].each do |elt_wcag|
|
457
|
+
Scoutui::Base::QBrowser.isAccessible({ :driver => my_driver, :locator => elt_wcag })
|
458
|
+
end
|
459
|
+
|
460
|
+
# textAreas = Scoutui::Base::QBrowser.getObjects( { :driver => my_driver, :locator => '//textarea' })
|
376
461
|
end
|
377
462
|
|
378
463
|
if !_rc.nil?
|
379
464
|
|
380
465
|
if _enableAsserts
|
381
466
|
Scoutui::Logger::LogMgr.instance.asserts.info __FILE__ + (__LINE__).to_s + " Verify #{_a} - #{_rc}"
|
382
|
-
|
467
|
+
|
468
|
+
|
469
|
+
_testcase = Scoutui::Utils::TestUtils.instance.getTC() || "visible_when"
|
470
|
+
|
471
|
+
Testmgr::TestReport.instance.getReq(_req).get_child(_testcase).add(_rc, "Assert #{_a}", _bm.real)
|
383
472
|
end
|
384
473
|
|
385
474
|
Scoutui::Commands::Utils.instance.resetFrameSearch()
|
@@ -847,6 +936,7 @@ module Scoutui::Base
|
|
847
936
|
_skip = e[STEP_KEY]["skip"]
|
848
937
|
_region = e[STEP_KEY]["region"]
|
849
938
|
_reqid = e[STEP_KEY]["reqid"]
|
939
|
+
_testcase = e[STEP_KEY]["testcase"]
|
850
940
|
_execute_when = e[STEP_KEY]["execute_when"]
|
851
941
|
_use_frames = e[STEP_KEY]["frames"]
|
852
942
|
|
@@ -873,6 +963,10 @@ module Scoutui::Base
|
|
873
963
|
Scoutui::Logger::LogMgr.instance.debug __FILE__ + (__LINE__).to_s + " REQID was not provided"
|
874
964
|
end
|
875
965
|
|
966
|
+
if !(_testcase.nil? || _testcase.empty?)
|
967
|
+
Scoutui::Utils::TestUtils.instance.setTC(_testcase)
|
968
|
+
end
|
969
|
+
|
876
970
|
|
877
971
|
if !_execute_when.nil? && !_execute_when.to_s.empty?
|
878
972
|
|
@@ -1233,6 +1327,12 @@ module Scoutui::Base
|
|
1233
1327
|
processExpected(my_driver, e)
|
1234
1328
|
processAssertions(my_driver, e)
|
1235
1329
|
_assertResult=processAsserts(my_driver, e[STEP_KEY]["asserts"]) # 5150
|
1330
|
+
|
1331
|
+
if e[STEP_KEY].has_key?('accessible') && e[STEP_KEY]['accessible'].to_s.match(/true/)
|
1332
|
+
Scoutui::Logger::LogMgr.instance.debug __FILE__ + (__LINE__).to_s + " ** Accessibility **"
|
1333
|
+
STDIN.gets
|
1334
|
+
end
|
1335
|
+
|
1236
1336
|
Scoutui::Logger::LogMgr.instance.info __FILE__ + (__LINE__).to_s + " ====== assertResults : #{_assertResult}"
|
1237
1337
|
|
1238
1338
|
if e[STEP_KEY].has_key?("highlight") && e[STEP_KEY]["highlight"].has_key?("locators")
|
@@ -102,7 +102,9 @@ module Scoutui::Commands
|
|
102
102
|
_caborted=true
|
103
103
|
end
|
104
104
|
|
105
|
-
|
105
|
+
_testcase = Scoutui::Utils::TestUtils.instance.getTC() || _cmd.downcase
|
106
|
+
|
107
|
+
Testmgr::TestReport.instance.getReq(_req).get_child(_testcase).add(!_caborted, "Assert command assign did not abort")
|
106
108
|
end
|
107
109
|
end
|
108
110
|
|
@@ -8,6 +8,8 @@ module Scoutui::Commands
|
|
8
8
|
|
9
9
|
def execute(drv, e=nil)
|
10
10
|
|
11
|
+
_seekTime={ :start => 0, :end => 0 }
|
12
|
+
|
11
13
|
Scoutui::Logger::LogMgr.instance.debug __FILE__ + (__LINE__).to_s + " SelectObject.execute(#{e})"
|
12
14
|
@drv=drv if !drv.nil?
|
13
15
|
|
@@ -30,7 +32,9 @@ module Scoutui::Commands
|
|
30
32
|
puts __FILE__ + (__LINE__).to_s + " frames => #{e['page']['frames']}";
|
31
33
|
end
|
32
34
|
|
35
|
+
_seekTime[:start]=Time.now
|
33
36
|
obj = Scoutui::Base::QBrowser.findElement(@drv, _xpath, Scoutui::Commands::Utils.instance.getFrameSearch(), Scoutui::Commands::Utils.instance.getTimeout)
|
37
|
+
_seekTime[:end]=Time.now
|
34
38
|
|
35
39
|
|
36
40
|
if !obj.nil? && obj.tag_name.downcase.match(/(select)/)
|
@@ -57,8 +61,8 @@ module Scoutui::Commands
|
|
57
61
|
Scoutui::Logger::LogMgr.instance.debug "Backtrace:\n\t#{ex.backtrace.join("\n\t")}"
|
58
62
|
end
|
59
63
|
|
60
|
-
Testmgr::TestReport.instance.getReq(_req).testcase('select').add(!obj.nil?, "Verify object to select exists #{_xpath} : #{obj.class.to_s}")
|
61
|
-
Testmgr::TestReport.instance.getReq(_req).testcase('select').add(_rc, "Verify selected text #{_val}")
|
64
|
+
Testmgr::TestReport.instance.getReq(_req).testcase('select').add(!obj.nil?, Scoutui::Base::UserVars.instance.normalize("Verify object to select exists #{_xpath} : #{obj.class.to_s}"), _seekTime[:end] - _seekTime[:start])
|
65
|
+
Testmgr::TestReport.instance.getReq(_req).testcase('select').add(_rc, Scoutui::Base::UserVars.instance.normalize("Verify selected text #{_val}"))
|
62
66
|
setResult(_rc)
|
63
67
|
|
64
68
|
end
|
@@ -52,6 +52,8 @@ module Scoutui::Commands
|
|
52
52
|
def execute(drv=nil, pageElt=nil)
|
53
53
|
@drv=drv if !drv.nil?
|
54
54
|
|
55
|
+
_tm={:start => 0, :end => 0 }
|
56
|
+
|
55
57
|
_isKb=false
|
56
58
|
_rc=false
|
57
59
|
_req = Scoutui::Utils::TestUtils.instance.getReq()
|
@@ -83,8 +85,12 @@ module Scoutui::Commands
|
|
83
85
|
|
84
86
|
Scoutui::Logger::LogMgr.instance.commands.debug __FILE__ + (__LINE__).to_s + "Process TYPE #{_val} into #{_xpath}"
|
85
87
|
|
88
|
+
_tm[:start]=Time.now
|
89
|
+
|
86
90
|
obj = Scoutui::Base::QBrowser.getElement(@drv, _xpath, Scoutui::Commands::Utils.instance.getFrameSearch(), Scoutui::Commands::Utils.instance.getTimeout)
|
87
91
|
|
92
|
+
_tm[:end]=Time.now
|
93
|
+
|
88
94
|
Scoutui::Logger::LogMgr.instance.debug __FILE__ + (__LINE__).to_s + " type(#{_val})"
|
89
95
|
Scoutui::Logger::LogMgr.instance.debug __FILE__ + (__LINE__).to_s + " tag : #{obj.tag_name}" if obj.is_a?(Selenium::WebDriver::Element)
|
90
96
|
|
@@ -107,6 +113,9 @@ module Scoutui::Commands
|
|
107
113
|
end
|
108
114
|
true if obj.displayed?
|
109
115
|
}
|
116
|
+
|
117
|
+
_tm[:end]=Time.now
|
118
|
+
|
110
119
|
rescue Selenium::WebDriver::Error::TimeOutError => ex
|
111
120
|
Scoutui::Logger::LogMgr.instance.debug __FILE__ + (__LINE__).to_s + " Timeout waiting for display?: #{_xpath}"
|
112
121
|
end
|
@@ -119,6 +128,7 @@ module Scoutui::Commands
|
|
119
128
|
(0..3).each do |j|
|
120
129
|
if Scoutui::Base::QBrowser.isStale?(obj)
|
121
130
|
obj = Scoutui::Base::QBrowser.getElement(@drv, _xpath, Scoutui::Commands::Utils.instance.getFrameSearch(), Scoutui::Commands::Utils.instance.getTimeout)
|
131
|
+
_tm[:end]=Time.now
|
122
132
|
else
|
123
133
|
break
|
124
134
|
end
|
@@ -181,12 +191,14 @@ module Scoutui::Commands
|
|
181
191
|
_inRow=0
|
182
192
|
sleep 0.5
|
183
193
|
obj = Scoutui::Base::QBrowser.getElement(@drv, _xpath, Scoutui::Commands::Utils.instance.getFrameSearch(), Scoutui::Commands::Utils.instance.getTimeout)
|
194
|
+
_tm[:end]=Time.now
|
184
195
|
else
|
185
196
|
_inRow+=1
|
186
197
|
|
187
198
|
break if _inRow >= 3
|
188
199
|
|
189
200
|
obj = Scoutui::Base::QBrowser.getElement(@drv, _xpath, Scoutui::Commands::Utils.instance.getFrameSearch(), Scoutui::Commands::Utils.instance.getTimeout)
|
201
|
+
_tm[:end]=Time.now
|
190
202
|
end
|
191
203
|
|
192
204
|
end
|
@@ -242,8 +254,8 @@ module Scoutui::Commands
|
|
242
254
|
|
243
255
|
|
244
256
|
if !_isKb
|
245
|
-
Testmgr::TestReport.instance.getReq(_req).testcase('type').add(!obj.nil?, "Verify object #{_xpath} to type #{_val} exists : #{obj.class.to_s}")
|
246
|
-
Testmgr::TestReport.instance.getReq(_req).testcase('type').add(_rc, "Verify typed data #{_rc}", (_endTime - _startTime))
|
257
|
+
Testmgr::TestReport.instance.getReq(_req).testcase('type').add(!obj.nil?, Scoutui::Base::UserVars.instance.normalize("Verify object #{_xpath} to type #{_val} exists : #{obj.class.to_s}"), _tm[:end]-_tm[:start])
|
258
|
+
Testmgr::TestReport.instance.getReq(_req).testcase('type').add(_rc, Scoutui::Base::UserVars.instance.normalize("Verify typed data #{_rc}"), (_endTime - _startTime))
|
247
259
|
end
|
248
260
|
|
249
261
|
setResult(_rc)
|
@@ -6,6 +6,8 @@ module Scoutui::Commands
|
|
6
6
|
def execute(drv, _e=nil)
|
7
7
|
@drv=drv if !drv.nil?
|
8
8
|
|
9
|
+
_duration=nil
|
10
|
+
|
9
11
|
_req = Scoutui::Utils::TestUtils.instance.getReq()
|
10
12
|
|
11
13
|
baseUrl = Scoutui::Base::UserVars.instance.getHost()
|
@@ -48,6 +50,11 @@ module Scoutui::Commands
|
|
48
50
|
end
|
49
51
|
|
50
52
|
|
53
|
+
_testcase = Scoutui::Utils::TestUtils.instance.getTC() || "navigate"
|
54
|
+
|
55
|
+
Testmgr::TestReport.instance.getReq(_req).testcase(_testcase).add(_rc, Scoutui::Base::UserVars.instance.normalize("Verify navigate to url #{normUrl}"), _duration)
|
56
|
+
|
57
|
+
|
51
58
|
setResult(_rc)
|
52
59
|
|
53
60
|
end
|
data/lib/scoutui/utils/utils.rb
CHANGED
@@ -111,10 +111,18 @@ module Scoutui::Utils
|
|
111
111
|
@currentTest[:reqid]
|
112
112
|
end
|
113
113
|
|
114
|
+
def getTC()
|
115
|
+
@currentTest[:testcase]
|
116
|
+
end
|
117
|
+
|
114
118
|
def setReq(_r='UI')
|
115
119
|
@currentTest[:reqid]=_r
|
116
120
|
end
|
117
121
|
|
122
|
+
def setTC(_tc=nil)
|
123
|
+
@currentTest[:testcase]=_tc
|
124
|
+
end
|
125
|
+
|
118
126
|
def loadModel(f=nil)
|
119
127
|
if f.nil?
|
120
128
|
return nil
|
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.51.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-10-
|
11
|
+
date: 2016-10-10 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|