itms_automation 2.1 → 2.2
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/itms_automation/auto_util.rb +11 -6
- data/lib/itms_automation/version.rb +1 -1
- data/lib/itms_automation/web_steps_helper.rb +236 -4
- data/project/features/TestSuite/WebGUI.feature +1 -2
- data/project/features/step_definitions/lib_steps/steps_definition.rb +0 -43
- data/project/features/step_definitions/repositories/project_object.yml +2 -26
- data/project/features/support/env.rb +1 -0
- data/project/features/support/hooks.rb +14 -16
- metadata +19 -20
- data/project/Gemfile.lock +0 -92
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: b1066a38baafacc29d30b7f1c0f615b617f9f842a99fecc323457eec81309361
|
4
|
+
data.tar.gz: a8744479fc22f8b4e8063b90747857d807a8709b9a3c38e1116d9a18607a7d6f
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 6e42a121f66d331393f8a3a62f9d6025b31a6613062120a53006b0bfbe1fd5f95e7acd6c364b36f6825cf8fab09b16ee9e256d1fdd7e1c1db715c65fc0cd1362
|
7
|
+
data.tar.gz: 7f3760b31ab2dda8f192e2f5f56f69b79b2f80dffc12dc99946257989021f50d4b7f7025d45169735007b5e5ef416a2684c9ada47659defb4fa4e22a7a34ac73
|
@@ -13,6 +13,10 @@ def set_var(var_name, var_value)
|
|
13
13
|
eval strEval, $dyn_vars
|
14
14
|
end
|
15
15
|
|
16
|
+
def get_var(var_name)
|
17
|
+
$dyn_vars.local_variable_get(var_name)
|
18
|
+
end
|
19
|
+
|
16
20
|
def check_dynamic_value(value)
|
17
21
|
if !value.is_a? Fixnum
|
18
22
|
if value.include? "params="
|
@@ -130,8 +134,9 @@ def print_variable(variable)
|
|
130
134
|
end
|
131
135
|
|
132
136
|
def duration(start)
|
133
|
-
current = Time.now
|
134
|
-
|
137
|
+
current = Time.now.to_f
|
138
|
+
convert_time = Time.at(current - start.to_f).utc.strftime('%Mm%s.%Ls')
|
139
|
+
return convert_time
|
135
140
|
end
|
136
141
|
|
137
142
|
def print_log(status, start, method, *args)
|
@@ -147,7 +152,7 @@ def print_log(status, start, method, *args)
|
|
147
152
|
end
|
148
153
|
end
|
149
154
|
|
150
|
-
puts "#{icon}
|
155
|
+
puts "#{icon} Step: #{method}(#{str}) (#{duration(start)})"
|
151
156
|
end
|
152
157
|
|
153
158
|
def get_object_value(str_obj)
|
@@ -387,7 +392,7 @@ def get_objects_by_Class(strClass)
|
|
387
392
|
begin
|
388
393
|
foundElements = page.all("*[@class='#{strClass}']")
|
389
394
|
rescue StandardError => e
|
390
|
-
|
395
|
+
raise "Error: #{e.message}"
|
391
396
|
end
|
392
397
|
|
393
398
|
return foundElements
|
@@ -398,7 +403,7 @@ def get_objects_by_Name(strName)
|
|
398
403
|
begin
|
399
404
|
foundElements = page.all("*[@name='#{strName}']")
|
400
405
|
rescue StandardError => e
|
401
|
-
|
406
|
+
raise "Error: #{e.message}"
|
402
407
|
end
|
403
408
|
|
404
409
|
return foundElements
|
@@ -409,7 +414,7 @@ def get_objects_by_Tagname(strTagname)
|
|
409
414
|
begin
|
410
415
|
foundElements = page.all("#{strTagname}")
|
411
416
|
rescue StandardError => e
|
412
|
-
|
417
|
+
raise "Error: #{e.message}"
|
413
418
|
end
|
414
419
|
|
415
420
|
return foundElements
|
@@ -1,5 +1,6 @@
|
|
1
1
|
require "net/https"
|
2
2
|
require "rspec"
|
3
|
+
require "open-uri"
|
3
4
|
|
4
5
|
def execute_openbrowser(url_site)
|
5
6
|
start = Time.now
|
@@ -386,7 +387,7 @@ def get_element_text(element)
|
|
386
387
|
if foundElement != nil
|
387
388
|
begin
|
388
389
|
result = foundElement.text()
|
389
|
-
print_log("passed", start, __method__, element
|
390
|
+
print_log("passed", start, __method__, element)
|
390
391
|
puts "Text of #{element}: #{result}"
|
391
392
|
rescue StandardError => e
|
392
393
|
print_log("failed", start, __method__, element)
|
@@ -398,16 +399,16 @@ def get_element_text(element)
|
|
398
399
|
end
|
399
400
|
end
|
400
401
|
|
401
|
-
def get_element_attribute(element
|
402
|
+
def get_element_attribute(element)
|
402
403
|
start = Time.now
|
403
404
|
foundElement = find_object(element)
|
404
405
|
if foundElement != nil
|
405
406
|
begin
|
406
407
|
result = foundElement.value()
|
407
|
-
print_log("passed", start, __method__, element
|
408
|
+
print_log("passed", start, __method__, element)
|
408
409
|
puts "Attribute of #{element}: #{result}"
|
409
410
|
rescue StandardError => e
|
410
|
-
print_log("failed", start, __method__, element
|
411
|
+
print_log("failed", start, __method__, element)
|
411
412
|
raise "Error: #{e.message}"
|
412
413
|
end
|
413
414
|
else
|
@@ -604,3 +605,234 @@ def movemouseandclick(var, element)
|
|
604
605
|
Selenium::WebDriver::Support::Select.new(page.driver.browser.find_element(:id, "#{var}")).select_by(:text, "#{element}")
|
605
606
|
page.driver.browser.find_element(:id, "#{var}").click
|
606
607
|
end
|
608
|
+
|
609
|
+
def upload_file(element, file_url)
|
610
|
+
start = Time.now
|
611
|
+
found_element = find_object(element)
|
612
|
+
if found_element != nil
|
613
|
+
begin
|
614
|
+
file_name = File.basename(file_url)
|
615
|
+
FileUtils.mkdir_p("downloads") unless File.exist?("downloads")
|
616
|
+
File.open("downloads/#{file_name}", "wb") do |file|
|
617
|
+
file.write open(file_url).read
|
618
|
+
end
|
619
|
+
attach_file(found_element, "downloads/#{file_name}")
|
620
|
+
print_log("passed", start, __method__, element, file_url)
|
621
|
+
rescue StandardError => e
|
622
|
+
print_log("failed", start, __method__, element, file_url)
|
623
|
+
raise "Error: #{e.message}"
|
624
|
+
end
|
625
|
+
else
|
626
|
+
print_log("failed", start, __method__, element, file_url)
|
627
|
+
raise "Error: Not found object: #{element}"
|
628
|
+
end
|
629
|
+
end
|
630
|
+
|
631
|
+
def store_variable(var_name, var_value)
|
632
|
+
start = Time.now
|
633
|
+
begin
|
634
|
+
text = "'" + var_value + "'"
|
635
|
+
set_var(var_name, text)
|
636
|
+
print_log("passed", start, __method__, var_name, var_value)
|
637
|
+
rescue StandardError => e
|
638
|
+
print_log("failed", start, __method__, var_name, var_value)
|
639
|
+
raise "Error: #{e.message}"
|
640
|
+
end
|
641
|
+
end
|
642
|
+
|
643
|
+
def store_text_element(element, var_name)
|
644
|
+
start = Time.now
|
645
|
+
found_element = find_object(element)
|
646
|
+
if found_element != nil
|
647
|
+
begin
|
648
|
+
var_value = "'" + found_element.text() + "'"
|
649
|
+
set_var(var_name, var_value)
|
650
|
+
print_log("passed", start, __method__, element, var_name)
|
651
|
+
rescue StandardError => e
|
652
|
+
print_log("failed", start, __method__, element, var_name)
|
653
|
+
raise "Error: #{e.message}"
|
654
|
+
end
|
655
|
+
else
|
656
|
+
print_log("failed", start, __method__, element, var_name)
|
657
|
+
raise "Error: Not found object: #{element}"
|
658
|
+
end
|
659
|
+
end
|
660
|
+
|
661
|
+
def store_title_current_page(var_name)
|
662
|
+
start = Time.now
|
663
|
+
begin
|
664
|
+
var_value = "'" + page.title + "'"
|
665
|
+
set_var(var_name, var_value)
|
666
|
+
print_log("passed", start, __method__, var_name)
|
667
|
+
rescue StandardError => e
|
668
|
+
print_log("failed", start, __method__, var_name)
|
669
|
+
raise "Error: #{e.message}"
|
670
|
+
end
|
671
|
+
end
|
672
|
+
|
673
|
+
def store_element_value(element, var_name)
|
674
|
+
start = Time.now
|
675
|
+
found_element = find_object(element)
|
676
|
+
if found_element != nil
|
677
|
+
begin
|
678
|
+
var_value = "'" + found_element.value() + "'"
|
679
|
+
set_var(var_name, var_value)
|
680
|
+
print_log("passed", start, __method__, element, var_name)
|
681
|
+
rescue StandardError => e
|
682
|
+
print_log("failed", start, __method__, element, var_name)
|
683
|
+
raise "Error: #{e.message}"
|
684
|
+
end
|
685
|
+
else
|
686
|
+
print_log("failed", start, __method__, element, var_name)
|
687
|
+
raise "Error: Not found object: #{element}"
|
688
|
+
end
|
689
|
+
end
|
690
|
+
|
691
|
+
def store_element_attribute_value(element, attribute, var_name)
|
692
|
+
start = Time.now
|
693
|
+
found_element = find_object(element)
|
694
|
+
if found_element != nil
|
695
|
+
begin
|
696
|
+
var_value = "'" + found_element[attribute] + "'"
|
697
|
+
set_var(var_name, var_value)
|
698
|
+
print_log("passed", start, __method__, element, var_name)
|
699
|
+
rescue StandardError => e
|
700
|
+
print_log("failed", start, __method__, element, var_name)
|
701
|
+
raise "Error: #{e.message}"
|
702
|
+
end
|
703
|
+
else
|
704
|
+
print_log("failed", start, __method__, element, var_name)
|
705
|
+
raise "Error: Not found object: #{element}"
|
706
|
+
end
|
707
|
+
end
|
708
|
+
|
709
|
+
def store_evaluate_script(script, var_name)
|
710
|
+
start = Time.now
|
711
|
+
begin
|
712
|
+
result = page.evaluate_script(<<~JS, script)
|
713
|
+
(function(scr){
|
714
|
+
return eval(scr);
|
715
|
+
})(arguments[0])
|
716
|
+
JS
|
717
|
+
var_value = "'" + result.to_s + "'"
|
718
|
+
set_var(var_name, var_value)
|
719
|
+
print_log("passed", start, __method__, script, var_name)
|
720
|
+
rescue StandardError => e
|
721
|
+
print_log("failed", start, __method__, script, var_name)
|
722
|
+
raise "Error: #{e.message}"
|
723
|
+
end
|
724
|
+
end
|
725
|
+
|
726
|
+
def check_checkbox_radio(element)
|
727
|
+
start = Time.now
|
728
|
+
found_element = find_object(element)
|
729
|
+
if found_element != nil
|
730
|
+
begin
|
731
|
+
found_element.check(allow_label_click: true)
|
732
|
+
print_log("passed", start, __method__, element)
|
733
|
+
rescue StandardError => e
|
734
|
+
print_log("failed", start, __method__, element)
|
735
|
+
raise "Error: #{e.message}"
|
736
|
+
end
|
737
|
+
else
|
738
|
+
print_log("failed", start, __method__, element)
|
739
|
+
raise "Error: Not found object: #{element}"
|
740
|
+
end
|
741
|
+
end
|
742
|
+
|
743
|
+
def uncheck_checkbox_radio(element)
|
744
|
+
start = Time.now
|
745
|
+
found_element = find_object(element)
|
746
|
+
if found_element != nil
|
747
|
+
begin
|
748
|
+
found_element.uncheck(allow_label_click: true)
|
749
|
+
print_log("passed", start, __method__, element)
|
750
|
+
rescue StandardError => e
|
751
|
+
print_log("failed", start, __method__, element)
|
752
|
+
raise "Error: #{e.message}"
|
753
|
+
end
|
754
|
+
else
|
755
|
+
print_log("failed", start, __method__, element)
|
756
|
+
raise "Error: Not found object: #{element}"
|
757
|
+
end
|
758
|
+
end
|
759
|
+
|
760
|
+
def verify_checkbox_radio_checked(element)
|
761
|
+
start = Time.now
|
762
|
+
found_element = find_object(element)
|
763
|
+
if found_element != nil
|
764
|
+
begin
|
765
|
+
if found_element.checked?
|
766
|
+
print_log("passed", start, __method__, element)
|
767
|
+
else
|
768
|
+
print_log("failed", start, __method__, element)
|
769
|
+
end
|
770
|
+
rescue StandardError => e
|
771
|
+
print_log("failed", start, __method__, element)
|
772
|
+
raise "Error: #{e.message}"
|
773
|
+
end
|
774
|
+
else
|
775
|
+
print_log("failed", start, __method__, element)
|
776
|
+
raise "Error: Not found object: #{element}"
|
777
|
+
end
|
778
|
+
end
|
779
|
+
|
780
|
+
def verify_checkbox_radio_not_checked(element)
|
781
|
+
start = Time.now
|
782
|
+
found_element = find_object(element)
|
783
|
+
if found_element != nil
|
784
|
+
begin
|
785
|
+
if found_element.checked?
|
786
|
+
print_log("failed", start, __method__, element)
|
787
|
+
else
|
788
|
+
print_log("passed", start, __method__, element)
|
789
|
+
end
|
790
|
+
rescue StandardError => e
|
791
|
+
print_log("failed", start, __method__, element)
|
792
|
+
raise "Error: #{e.message}"
|
793
|
+
end
|
794
|
+
else
|
795
|
+
print_log("failed", start, __method__, element)
|
796
|
+
raise "Error: Not found object: #{element}"
|
797
|
+
end
|
798
|
+
end
|
799
|
+
|
800
|
+
def verify_input_editable(element)
|
801
|
+
start = Time.now
|
802
|
+
found_element = find_object(element)
|
803
|
+
if found_element != nil
|
804
|
+
begin
|
805
|
+
if found_element.disabled?
|
806
|
+
print_log("passed", start, __method__, element)
|
807
|
+
else
|
808
|
+
print_log("failed", start, __method__, element)
|
809
|
+
end
|
810
|
+
rescue StandardError => e
|
811
|
+
print_log("failed", start, __method__, element)
|
812
|
+
raise "Error: #{e.message}"
|
813
|
+
end
|
814
|
+
else
|
815
|
+
print_log("failed", start, __method__, element)
|
816
|
+
raise "Error: Not found object: #{element}"
|
817
|
+
end
|
818
|
+
end
|
819
|
+
|
820
|
+
def verify_input_not_editable(element)
|
821
|
+
start = Time.now
|
822
|
+
found_element = find_object(element)
|
823
|
+
if found_element != nil
|
824
|
+
begin
|
825
|
+
if found_element.disabled?
|
826
|
+
print_log("failed", start, __method__, element)
|
827
|
+
else
|
828
|
+
print_log("passed", start, __method__, element)
|
829
|
+
end
|
830
|
+
rescue StandardError => e
|
831
|
+
print_log("failed", start, __method__, element)
|
832
|
+
raise "Error: #{e.message}"
|
833
|
+
end
|
834
|
+
else
|
835
|
+
print_log("failed", start, __method__, element)
|
836
|
+
raise "Error: Not found object: #{element}"
|
837
|
+
end
|
838
|
+
end
|
@@ -1,46 +1,3 @@
|
|
1
1
|
And /I open the page "(.*)"/ do |url_site|
|
2
2
|
execute_openbrowser(url_site)
|
3
3
|
end
|
4
|
-
|
5
|
-
Given /^test select execute$/ do
|
6
|
-
|
7
|
-
execute_openbrowser("https://infodation.atlassian.net/plugins/servlet/ac/Infodation-tms/test-summary?project.key=IFDTMS&project.id=17400")
|
8
|
-
# execute_settext("username", "cuong")
|
9
|
-
# execute_click("okbutton")
|
10
|
-
switch_to_iframe("iframe1")
|
11
|
-
|
12
|
-
execute_click("verify")
|
13
|
-
sleep(5)
|
14
|
-
end
|
15
|
-
|
16
|
-
When /^Go to Test Cycle Sumary of iTMS project$/ do
|
17
|
-
execute_openbrowser("https://infodation.atlassian.net/plugins/servlet/ac/Infodation-tms/test-summary?project.key=IFDTMS&project.id=17400")
|
18
|
-
sleep(5)
|
19
|
-
switch_to_iframe("iframe1")
|
20
|
-
execute_click("itms_cyclesumarylink")
|
21
|
-
sleep(3)
|
22
|
-
custom_action
|
23
|
-
end
|
24
|
-
|
25
|
-
|
26
|
-
def custom_action()
|
27
|
-
begin
|
28
|
-
browser = Capybara.current_session.driver.browser
|
29
|
-
if browser.respond_to?(:clear_cookies)
|
30
|
-
# Rack::MockSession
|
31
|
-
browser.clear_cookies
|
32
|
-
print_log("passed", start, _method_)
|
33
|
-
elsif browser.respond_to?(:manage) and browser.manage.respond_to?(:delete_all_cookies)
|
34
|
-
# Selenium::WebDriver
|
35
|
-
browser.manage.delete_all_cookies
|
36
|
-
print_log("passed", start, _method_)
|
37
|
-
else
|
38
|
-
print_log("failed", start, _method_)
|
39
|
-
raise "Error: Don't know how to clear cookies. Weird driver?"
|
40
|
-
end
|
41
|
-
rescue Exception => e
|
42
|
-
print_log("failed", start, _method_)
|
43
|
-
raise "Error: #{e.message}"
|
44
|
-
end
|
45
|
-
|
46
|
-
end
|
@@ -1,26 +1,2 @@
|
|
1
|
-
|
2
|
-
|
3
|
-
iframe: { xpath_selector: '//*[@class="ap-iframe-container iframe-init"]' }
|
4
|
-
iframe1: { xpath_selector: '//iframe[contains(@id,"Infodation-tms__test-summary_")]' }
|
5
|
-
verify: { xpath_selector: '//*[@id="aui-uid-1"]' }
|
6
|
-
firstname:
|
7
|
-
{
|
8
|
-
xpath_selector: '/html/body/div[2]/table/tbody/tr/td[2]/table/tbody/tr[4]/td/table/tbody/tr/td[2]/table/tbody/tr[5]/td/form/table/tbody/tr[2]/td[2]',
|
9
|
-
}
|
10
|
-
lastname:
|
11
|
-
{
|
12
|
-
xpath_selector: '/html/body/div[2]/table/tbody/tr/td[2]/table/tbody/tr[4]/td/table/tbody/tr/td[2]/table/tbody/tr[5]/td/form/table/tbody/tr[3]/td[2]/input',
|
13
|
-
}
|
14
|
-
selectcountry:
|
15
|
-
{
|
16
|
-
xpath_selector: '/html/body/div[2]/table/tbody/tr/td[2]/table/tbody/tr[4]/td/table/tbody/tr/td[2]/table/tbody/tr[5]/td/form/table/tbody/tr[11]/td[2]/select',
|
17
|
-
}
|
18
|
-
loginjira_continuebutton: {xpath_selector: "//button[@id=\"login-submit\"]/span/span/span"}
|
19
|
-
loginjira_password: {xpath_selector: "//input[@id=\"password\"]"}
|
20
|
-
loginjira_username: {xpath_selector: "//input[@id=\"username\"]"}
|
21
|
-
itms_cyclesumarylink: {xpath_selector: "//section[@id=\"content\"]//li[@class=\"menu-item\"]/a"}
|
22
|
-
itms_createnewtestcyclebutton: {xpath_selector: "//button[@id=\"itms-sidebar-addnew-button\"]"}
|
23
|
-
itms_createtestcycle_savebutton: {xpath_selector: "//button[@id=\"itms-dialog-confirm\"]"}
|
24
|
-
itms_createtestcyle_alertmessage: {xpath_selector: "//section[@id=\"ITMS-dialog-cycle\"]//strong"}
|
25
|
-
itms_clickheretocreatetestcycle: {xpath_selector: "//section[@class=\"aui-buttons\"]/button[3]/span"}
|
26
|
-
itms_iframe_testsumary: { xpath_selector: '//iframe[contains(@id,"Infodation-tms__test-summary_")]' }
|
1
|
+
signupbutton: {xpath_selector: '//li[@class="mm-listitem"]//a[@href="#"][contains(text(),"T")]'}
|
2
|
+
|
@@ -12,7 +12,6 @@ AfterConfiguration do
|
|
12
12
|
browser = Capybara.current_session.driver.browser
|
13
13
|
browser.manage.delete_all_cookies
|
14
14
|
end
|
15
|
-
|
16
15
|
end
|
17
16
|
|
18
17
|
def validate_params_exist
|
@@ -31,7 +30,7 @@ def getDriver
|
|
31
30
|
when "chrome"
|
32
31
|
@chrome_options = loadYAMLfile('config/chrome_options.yaml')
|
33
32
|
Capybara.register_driver :selenium do |app|
|
34
|
-
|
33
|
+
Capybara::Selenium::Driver.new(app, :url => ENV['SERVER_URL'],:desired_capabilities => Selenium::WebDriver::Remote::Capabilities.chrome(chromeOptions: @chrome_options))
|
35
34
|
end
|
36
35
|
Capybara.current_driver = :selenium
|
37
36
|
when "firefox"
|
@@ -52,26 +51,24 @@ def getDriver
|
|
52
51
|
Capybara::Selenium::Driver.new(app, :url => ENV['SERVER_URL'], :desired_capabilities => Selenium::WebDriver::Remote::Capabilities.internet_explorer(ieOptions: @ie_options))
|
53
52
|
end
|
54
53
|
Capybara.current_driver = :selenium
|
55
|
-
|
56
|
-
|
57
|
-
|
58
|
-
|
59
|
-
|
60
|
-
|
61
|
-
# when "firefox_headless"
|
62
|
-
# @firefox_headless_options = loadYAMLfile('config/firefox_options.yaml')
|
63
|
-
# Capybara.register_driver :selenium do |app|
|
64
|
-
# Capybara::Selenium::Driver.new(app, :desired_capabilities => Selenium::WebDriver::Remote::Capabilities.firefox(firefoxOptions: @firefox_headless_options))
|
65
|
-
# end
|
66
|
-
# Capybara.current_driver = :selenium_headless
|
54
|
+
when "chrome_headless"
|
55
|
+
@chrome_headless_options = loadYAMLfile('config/chrome_headless_options.yaml')
|
56
|
+
Capybara.register_driver :selenium do |app|
|
57
|
+
Capybara::Selenium::Driver.new(app, :url => ENV['SERVER_URL'], :desired_capabilities => Selenium::WebDriver::Remote::Capabilities.chrome(chromeOptions: @chrome_headless_options))
|
58
|
+
end
|
59
|
+
Capybara.current_driver = :selenium
|
67
60
|
when "remote"
|
68
61
|
@capabilities = loadYAMLfile('config/remote_options.yaml')
|
69
62
|
Capybara.register_driver :selenium do |app|
|
70
63
|
Capybara::Selenium::Driver.new(app, :url => ENV['SERVER_URL'], :desired_capabilities => @capabilities)
|
71
64
|
end
|
72
65
|
Capybara.current_driver = :selenium
|
73
|
-
|
74
|
-
raise "❌ ERROR: Unsupported browser: #{ENV['BROWSER']}. Available: chrome || firefox || safari || ie || remote"
|
66
|
+
else
|
67
|
+
raise "❌ ERROR: Unsupported browser: #{ENV['BROWSER']}. Available: chrome || chrome headless || firefox || safari || ie || remote"
|
68
|
+
end
|
69
|
+
unless ENV["SCREEN_RESOLUTION"].nil?
|
70
|
+
screen_resolution = ENV["SCREEN_RESOLUTION"].split("x")
|
71
|
+
Capybara.page.current_window.resize_to(screen_resolution[0], screen_resolution[1])
|
75
72
|
end
|
76
73
|
end
|
77
74
|
|
@@ -98,6 +95,7 @@ After do |scenario|
|
|
98
95
|
# end
|
99
96
|
# $browser_data = page.driver.browser.capabilities
|
100
97
|
# p "$browser_data:#{$browser_data.inspect}"
|
98
|
+
FileUtils.rm_rf(Dir.glob('downloads/*'))
|
101
99
|
end
|
102
100
|
|
103
101
|
at_exit do
|
metadata
CHANGED
@@ -1,35 +1,35 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: itms_automation
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: '2.
|
4
|
+
version: '2.2'
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Anh Pham
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2020-
|
11
|
+
date: 2020-04-27 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: selenium-webdriver
|
15
15
|
requirement: !ruby/object:Gem::Requirement
|
16
16
|
requirements:
|
17
|
-
- - ">="
|
18
|
-
- !ruby/object:Gem::Version
|
19
|
-
version: 3.6.0
|
20
17
|
- - "~>"
|
21
18
|
- !ruby/object:Gem::Version
|
22
19
|
version: '3.6'
|
20
|
+
- - ">="
|
21
|
+
- !ruby/object:Gem::Version
|
22
|
+
version: 3.6.0
|
23
23
|
type: :runtime
|
24
24
|
prerelease: false
|
25
25
|
version_requirements: !ruby/object:Gem::Requirement
|
26
26
|
requirements:
|
27
|
-
- - ">="
|
28
|
-
- !ruby/object:Gem::Version
|
29
|
-
version: 3.6.0
|
30
27
|
- - "~>"
|
31
28
|
- !ruby/object:Gem::Version
|
32
29
|
version: '3.6'
|
30
|
+
- - ">="
|
31
|
+
- !ruby/object:Gem::Version
|
32
|
+
version: 3.6.0
|
33
33
|
- !ruby/object:Gem::Dependency
|
34
34
|
name: cucumber
|
35
35
|
requirement: !ruby/object:Gem::Requirement
|
@@ -62,22 +62,22 @@ dependencies:
|
|
62
62
|
name: rspec
|
63
63
|
requirement: !ruby/object:Gem::Requirement
|
64
64
|
requirements:
|
65
|
-
- - ">="
|
66
|
-
- !ruby/object:Gem::Version
|
67
|
-
version: 3.8.0
|
68
65
|
- - "~>"
|
69
66
|
- !ruby/object:Gem::Version
|
70
67
|
version: '3.8'
|
68
|
+
- - ">="
|
69
|
+
- !ruby/object:Gem::Version
|
70
|
+
version: 3.8.0
|
71
71
|
type: :runtime
|
72
72
|
prerelease: false
|
73
73
|
version_requirements: !ruby/object:Gem::Requirement
|
74
74
|
requirements:
|
75
|
-
- - ">="
|
76
|
-
- !ruby/object:Gem::Version
|
77
|
-
version: 3.8.0
|
78
75
|
- - "~>"
|
79
76
|
- !ruby/object:Gem::Version
|
80
77
|
version: '3.8'
|
78
|
+
- - ">="
|
79
|
+
- !ruby/object:Gem::Version
|
80
|
+
version: 3.8.0
|
81
81
|
- !ruby/object:Gem::Dependency
|
82
82
|
name: parallel_tests
|
83
83
|
requirement: !ruby/object:Gem::Requirement
|
@@ -102,20 +102,20 @@ dependencies:
|
|
102
102
|
name: report_builder
|
103
103
|
requirement: !ruby/object:Gem::Requirement
|
104
104
|
requirements:
|
105
|
-
- - "
|
105
|
+
- - "~>"
|
106
106
|
- !ruby/object:Gem::Version
|
107
107
|
version: '1.8'
|
108
|
-
- - "
|
108
|
+
- - ">="
|
109
109
|
- !ruby/object:Gem::Version
|
110
110
|
version: '1.8'
|
111
111
|
type: :runtime
|
112
112
|
prerelease: false
|
113
113
|
version_requirements: !ruby/object:Gem::Requirement
|
114
114
|
requirements:
|
115
|
-
- - "
|
115
|
+
- - "~>"
|
116
116
|
- !ruby/object:Gem::Version
|
117
117
|
version: '1.8'
|
118
|
-
- - "
|
118
|
+
- - ">="
|
119
119
|
- !ruby/object:Gem::Version
|
120
120
|
version: '1.8'
|
121
121
|
- !ruby/object:Gem::Dependency
|
@@ -155,7 +155,6 @@ files:
|
|
155
155
|
- lib/itms_automation/version.rb
|
156
156
|
- lib/itms_automation/web_steps_helper.rb
|
157
157
|
- project/Gemfile
|
158
|
-
- project/Gemfile.lock
|
159
158
|
- project/README.md
|
160
159
|
- project/Rakefile
|
161
160
|
- project/config/chrome_headless_options.yaml
|
@@ -190,7 +189,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
190
189
|
- !ruby/object:Gem::Version
|
191
190
|
version: '0'
|
192
191
|
requirements: []
|
193
|
-
rubygems_version: 3.
|
192
|
+
rubygems_version: 3.1.2
|
194
193
|
signing_key:
|
195
194
|
specification_version: 4
|
196
195
|
summary: SELENIUM WEBDRIVER WITH RUBY & CUCUMBER
|
data/project/Gemfile.lock
DELETED
@@ -1,92 +0,0 @@
|
|
1
|
-
GEM
|
2
|
-
remote: http://rubygems.org/
|
3
|
-
specs:
|
4
|
-
addressable (2.7.0)
|
5
|
-
public_suffix (>= 2.0.2, < 5.0)
|
6
|
-
backports (3.15.0)
|
7
|
-
builder (3.2.3)
|
8
|
-
capybara (3.29.0)
|
9
|
-
addressable
|
10
|
-
mini_mime (>= 0.1.3)
|
11
|
-
nokogiri (~> 1.8)
|
12
|
-
rack (>= 1.6.0)
|
13
|
-
rack-test (>= 0.6.3)
|
14
|
-
regexp_parser (~> 1.5)
|
15
|
-
xpath (~> 3.2)
|
16
|
-
childprocess (3.0.0)
|
17
|
-
colorize (0.8.1)
|
18
|
-
cucumber (3.1.2)
|
19
|
-
builder (>= 2.1.2)
|
20
|
-
cucumber-core (~> 3.2.0)
|
21
|
-
cucumber-expressions (~> 6.0.1)
|
22
|
-
cucumber-wire (~> 0.0.1)
|
23
|
-
diff-lcs (~> 1.3)
|
24
|
-
gherkin (~> 5.1.0)
|
25
|
-
multi_json (>= 1.7.5, < 2.0)
|
26
|
-
multi_test (>= 0.1.2)
|
27
|
-
cucumber-core (3.2.1)
|
28
|
-
backports (>= 3.8.0)
|
29
|
-
cucumber-tag_expressions (~> 1.1.0)
|
30
|
-
gherkin (~> 5.0)
|
31
|
-
cucumber-expressions (6.0.1)
|
32
|
-
cucumber-tag_expressions (1.1.1)
|
33
|
-
cucumber-wire (0.0.1)
|
34
|
-
cucumber_priority (0.3.2)
|
35
|
-
cucumber
|
36
|
-
diff-lcs (1.3)
|
37
|
-
gherkin (5.1.0)
|
38
|
-
itms_automation (1.5)
|
39
|
-
capybara (~> 3.29.0)
|
40
|
-
colorize (~> 0.8.1)
|
41
|
-
cucumber (~> 3.1)
|
42
|
-
cucumber_priority (~> 0.3.2)
|
43
|
-
parallel_tests (~> 2.7, >= 2.7.1)
|
44
|
-
report_builder (~> 1.8, >= 1.8)
|
45
|
-
rspec (~> 3.8, >= 3.8.0)
|
46
|
-
selenium-webdriver (~> 3.6, >= 3.6.0)
|
47
|
-
json (2.3.0)
|
48
|
-
mini_mime (1.0.2)
|
49
|
-
mini_portile2 (2.4.0)
|
50
|
-
multi_json (1.14.0)
|
51
|
-
multi_test (0.1.2)
|
52
|
-
nokogiri (1.10.7)
|
53
|
-
mini_portile2 (~> 2.4.0)
|
54
|
-
parallel (1.19.1)
|
55
|
-
parallel_tests (2.29.2)
|
56
|
-
parallel
|
57
|
-
public_suffix (4.0.3)
|
58
|
-
rack (2.0.7)
|
59
|
-
rack-test (1.1.0)
|
60
|
-
rack (>= 1.0, < 3)
|
61
|
-
regexp_parser (1.6.0)
|
62
|
-
report_builder (1.8)
|
63
|
-
json (>= 1.8.1)
|
64
|
-
rspec (3.9.0)
|
65
|
-
rspec-core (~> 3.9.0)
|
66
|
-
rspec-expectations (~> 3.9.0)
|
67
|
-
rspec-mocks (~> 3.9.0)
|
68
|
-
rspec-core (3.9.1)
|
69
|
-
rspec-support (~> 3.9.1)
|
70
|
-
rspec-expectations (3.9.0)
|
71
|
-
diff-lcs (>= 1.2.0, < 2.0)
|
72
|
-
rspec-support (~> 3.9.0)
|
73
|
-
rspec-mocks (3.9.1)
|
74
|
-
diff-lcs (>= 1.2.0, < 2.0)
|
75
|
-
rspec-support (~> 3.9.0)
|
76
|
-
rspec-support (3.9.2)
|
77
|
-
rubyzip (2.0.0)
|
78
|
-
selenium-webdriver (3.142.6)
|
79
|
-
childprocess (>= 0.5, < 4.0)
|
80
|
-
rubyzip (>= 1.2.2)
|
81
|
-
xpath (3.2.0)
|
82
|
-
nokogiri (~> 1.8)
|
83
|
-
|
84
|
-
PLATFORMS
|
85
|
-
ruby
|
86
|
-
|
87
|
-
DEPENDENCIES
|
88
|
-
itms_automation
|
89
|
-
report_builder
|
90
|
-
|
91
|
-
BUNDLED WITH
|
92
|
-
2.0.2
|