itms_automation 2.6.1 → 2.6.7

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: b68795c70dc3849953992aa8fd7f5e15dbe8c7941b0718f4674a3bed95356592
4
- data.tar.gz: 288c82ec446b0f03622ebaa995fd2930b364105bd14922e3d67c6bd738698fd2
3
+ metadata.gz: d444bed9e0cfd7a8c172326b6fb3ec89e6c7b1e35caa8937dbb08d5e2c642bbc
4
+ data.tar.gz: 0c744a217e2790acf13691eaf2d219172863e110b2a81877feb59b8b17903714
5
5
  SHA512:
6
- metadata.gz: 5ad134e0e2128eb50b3041765462a8ea8c5a849db0e700859d7a5d0396bb1aa15a4a8c1331fb5c3859cff04f107006c94507b5828bcb62cae565428e8f3b9671
7
- data.tar.gz: 3e3e5e9bf6f56087f59b46d343172ee56c17d3d0a7d6a9fe9c680818f8b8ac40bf2cae84c1e6765e3366e30b00cabf30dc1f3177e83431d21af0bfcc8dc40fd7
6
+ metadata.gz: a6620750cdedf9b304e4ea53ebda419b5ac383f6999261b9c7acee0d44921d50a3e1ddc31b841aa4b54abf2860b1bbdb3bfb2aa5b6d39ec989bfd2eee8024cbc
7
+ data.tar.gz: c7673be15169b7371e41bcb15572f042b2a70a4aa1732fdd776fd1f49c7ff1aa8608fd18cce5eb74b654f2a152580e06913625165170fbdc93906a994f269c73
@@ -0,0 +1,3 @@
1
+ source 'http://rubygems.org'
2
+ gem 'report_builder'
3
+ gem 'itms_automation'
@@ -0,0 +1,63 @@
1
+ GEM
2
+ remote: http://rubygems.org/
3
+ specs:
4
+ appium_lib_core (3.10.1)
5
+ faye-websocket (~> 0.10.0)
6
+ selenium-webdriver (~> 3.14, >= 3.14.1)
7
+ backports (3.18.1)
8
+ builder (3.2.4)
9
+ childprocess (3.0.0)
10
+ cucumber (3.1.2)
11
+ builder (>= 2.1.2)
12
+ cucumber-core (~> 3.2.0)
13
+ cucumber-expressions (~> 6.0.1)
14
+ cucumber-wire (~> 0.0.1)
15
+ diff-lcs (~> 1.3)
16
+ gherkin (~> 5.1.0)
17
+ multi_json (>= 1.7.5, < 2.0)
18
+ multi_test (>= 0.1.2)
19
+ cucumber-core (3.2.1)
20
+ backports (>= 3.8.0)
21
+ cucumber-tag_expressions (~> 1.1.0)
22
+ gherkin (~> 5.0)
23
+ cucumber-expressions (6.0.1)
24
+ cucumber-tag_expressions (1.1.1)
25
+ cucumber-wire (0.0.1)
26
+ diff-lcs (1.4.4)
27
+ eventmachine (1.2.7)
28
+ faye-websocket (0.10.9)
29
+ eventmachine (>= 0.12.0)
30
+ websocket-driver (>= 0.5.1)
31
+ gherkin (5.1.0)
32
+ httparty (0.13.7)
33
+ json (~> 1.8)
34
+ multi_xml (>= 0.5.2)
35
+ itms_automation (2.6.1)
36
+ appium_lib_core (~> 3.10.1, >= 3.10.1)
37
+ cucumber (~> 3.1.2, >= 3.1.2)
38
+ httparty (~> 0.13.7, >= 0.13.7)
39
+ report_builder (~> 1.8, >= 1.8)
40
+ selenium-webdriver (~> 3.14, >= 3.14.1)
41
+ json (1.8.6)
42
+ multi_json (1.14.1)
43
+ multi_test (0.1.2)
44
+ multi_xml (0.6.0)
45
+ report_builder (1.8)
46
+ json (>= 1.8.1)
47
+ rubyzip (2.3.0)
48
+ selenium-webdriver (3.142.7)
49
+ childprocess (>= 0.5, < 4.0)
50
+ rubyzip (>= 1.2.2)
51
+ websocket-driver (0.7.2)
52
+ websocket-extensions (>= 0.1.0)
53
+ websocket-extensions (0.1.5)
54
+
55
+ PLATFORMS
56
+ ruby
57
+
58
+ DEPENDENCIES
59
+ itms_automation
60
+ report_builder
61
+
62
+ BUNDLED WITH
63
+ 2.0.2
@@ -0,0 +1,194 @@
1
+ Welcome to itms_automation
2
+ =================
3
+
4
+ itms_automation : Automation Tesing Using Ruby
5
+
6
+ itms_automation is a behavior driven development (BDD) approach to write automation test script to test Web and Android Apps.
7
+ It enables you to write and execute automated acceptance/unit tests.
8
+ It is cross-platform, open source and free.
9
+ Automate your test cases with minimal coding.
10
+
11
+ itms_automation Ruby API's
12
+ ============================
13
+
14
+ If you are writing code for your custom steps you can use the following methods :
15
+
16
+ Note : For some of the API paramtere values are fixed. Such values for paramaters are mentioned below.
17
+
18
+ Navigation API's
19
+ ----------------
20
+ # method to open link
21
+ navigate_to("link")
22
+ # method to navigate back & forward
23
+ navigate(direction) # direction => "back" / "forward"
24
+ # method to quite webdriver instance
25
+ close_driver()
26
+ # method to return key by os wise
27
+ get_key()
28
+ # Method to zoom in/out page
29
+ zoom_in_out(in_out) # in_out => "in" / "out"
30
+ # Method to zoom in/out web page until web element dislays
31
+ zoom_in_out_till_element_display(element, in_out)
32
+ # Method to resize browser
33
+ resize_browser(width, heigth)
34
+ # Method to maximize browser
35
+ maximize_browser
36
+ # Method to refresh page
37
+ refresh_page
38
+ # Method to hover on element
39
+ hover_over_element(element)
40
+ # Method to scroll page to perticular element
41
+ scroll_to_element(element)
42
+ # method to scroll page to top or end
43
+ scroll_page(to)
44
+ # Method to switch to new window
45
+ switch_to_new_window
46
+ # Method to switch to old window
47
+ switch_to_old_window
48
+ # Method to close new window
49
+ close_new_window
50
+
51
+ Input API's
52
+ -------------------------
53
+
54
+ # method to enter text into textfield
55
+ enter_text(element, text)
56
+ # method to clear text from textfield
57
+ clear_text(element)
58
+ # method to select option from dropdwon list
59
+ select_option_from_dropdown(element, by, option)
60
+ # method to select all option from dropdwon list
61
+ select_all_option_from_multiselect_dropdown(element)
62
+ # method to unselect all option from dropdwon list
63
+ unselect_all_option_from_multiselect_dropdown(element)
64
+ # method to check checkbox
65
+ check_checkbox(element)
66
+ # method to uncheck checkbox
67
+ uncheck_checkbox(element)
68
+ # method to select radio button
69
+ toggle_checkbox(element)
70
+ # method to select radio button
71
+ select_radio_button(element)
72
+ # method to select option from radio button group
73
+ select_option_from_radio_button_group(element, by, option)
74
+
75
+ Click API's
76
+ ------------
77
+ # method to click on an element
78
+ click(element)
79
+ # method to double-click on an element
80
+ double_click(element)
81
+ # method to forcefully click on an element
82
+ click_forcefully(element)
83
+
84
+ Javascript Handling API
85
+ -----------------------
86
+ # method to interact with alert
87
+ handle_alert(decision) # decision => "accept" / "dismiss"
88
+
89
+ Progress API's
90
+ --------------
91
+ # method to wait with second
92
+ wait(time_in_sec)
93
+ # method to wait for the element display
94
+ wait_for_element_to_display(element, duration)
95
+ # method to wait for the element enable
96
+ wait_for_element_to_enable(element, duration)
97
+
98
+ Screenshot API's
99
+ --------------
100
+ # method to take screenshot and save in screenshot folder
101
+ take_screenshots
102
+
103
+ Configuration API's
104
+ -----------------
105
+ # method to print configuration
106
+ print_congifugartion
107
+ # method to print desktop configuration
108
+ print_desktop_configuration
109
+ # method to print mobile configuration
110
+ print_mobile_configuration
111
+
112
+ Assertion API's
113
+ -----------------
114
+ # Method to return page title
115
+ get_page_title
116
+ # Method to verify title
117
+ # param 1 : String : expected title
118
+ # param 2 : Boolean : test case [true or flase]
119
+ check_title(title, test_case)
120
+ # Method to verify partial title
121
+ # param 1 : String : partial title string
122
+ # param 2 : Boolean : test case [true or flase]
123
+ check_partial_title(partial_text_title, test_case)
124
+ # Method to get element text
125
+ # param : String
126
+ get_element_text(element)
127
+ # Method to check element text
128
+ # param 1 : String : Element
129
+ # param 2 : String : Expected element text
130
+ # param 3 : Boolean : test case [true or flase]
131
+ check_element_text(element, expected_value, test_case)
132
+ # Method to check partial element text
133
+ # param 1 : String : Element
134
+ # param 2 : String : Expected element partial text
135
+ # param 3 : Boolean : test case [true or flase]
136
+ check_element_partial_text(element, expected_value, test_case)
137
+ # Method to return element status - enabled?
138
+ # param : String : Element
139
+ is_element_enabled(element)
140
+ # method to check element status - enabled?
141
+ # param 1 : String : Element
142
+ # param 2 : Boolean : test case [true or flase]
143
+ check_element_enable(element, test_case)
144
+ # method to get attribute value
145
+ # param 1 : String : Element
146
+ # param 2 : String : atrribute name
147
+ get_element_attribute(element, attribute_name)
148
+ # method to check attribute value
149
+ # param 1 : String : Element
150
+ # param 2 : String : atrribute name
151
+ # param 3 : String : atrribute value
152
+ # param 4 : Boolean : test case [true or flase]
153
+ check_element_attribute(element, attribute_name, attribute_value, test_case)
154
+ # method to get element status - displayed?
155
+ # param : String : Element
156
+ is_element_displayed(element)
157
+ # method to check element presence
158
+ # param 1 : String : Element
159
+ # param 2 : Boolean : test case [true or flase]
160
+ check_element_presence(element, test_case)
161
+ # method to assert checkbox check/uncheck
162
+ # param 1 : String : Element
163
+ # param 2 : Boolean : test case [true or flase]
164
+ is_checkbox_checked(element, should_be_checked = true)
165
+ # method to assert radio button selected/unselected
166
+ # param 1 : String : Element
167
+ # param 2 : Boolean : test case [true or flase]
168
+ is_radio_button_selected(element, should_be_selected = true)
169
+ # method to assert option from radio button group is selected/unselected
170
+ is_option_from_radio_button_group_selected(element, by, option, should_be_selected = true)
171
+ # method to get javascript pop-up alert text
172
+ get_alert_text
173
+ # method to check javascript pop-up alert text
174
+ check_alert_text(text)
175
+ # method to check dropdown status -> selected
176
+ is_option_from_dropdown_selected(element, by, option, should_be_selected=true)
177
+
178
+ Usage: itms_automation <command-name> [parameters] [options]
179
+
180
+ <command-name> can be one of
181
+ help
182
+ gen
183
+ version
184
+
185
+ Commands:
186
+ help : prints more detailed help information.
187
+
188
+ gen : creates a skeleton features dir. This is usually used once when
189
+ setting up selnium-cucumber to ensure that the features folder contains
190
+ the right step definitions and environment to run with cucumber.
191
+
192
+ version : prints the gem version
193
+
194
+ Options: -v, --verbose Turns on verbose logging
@@ -0,0 +1,4 @@
1
+ chrome: BROWSER=chrome
2
+ firefox: BROWSER=firefox
3
+ ie: BROWSER=internet_explorer
4
+ parallel: parallel_cucumber
@@ -1,5 +1,10 @@
1
- Feature: Login feature
1
+ # Feature: Addition
2
+ # As a math idiot
3
+ # In order to not feel silly
4
+ # I add two numbers
2
5
 
3
- Scenario: As a valid user I can log into my web app
4
- When I press "Login"
5
- Then I see "Welcome to coolest web app ever"
6
+ # Scenario: Adding a and b
7
+ # Given I have variable a
8
+ # And I have variable b
9
+ # When I add a and b
10
+ # Then I display the sum
@@ -0,0 +1,69 @@
1
+ # Do Not Remove This File
2
+ # Please adjust the below steps as your needed
3
+ # $driver is instance of webdriver use this instance to write your custom code
4
+
5
+ # # page title checking
6
+ # Then(/^I should\s*((?:not)?)\s+see page title as "(.*?)"$/) do |present, title|
7
+ # check_title(title, present.empty?)
8
+ # end
9
+
10
+ # Then(/^I should\s*((?:not)?)\s+see page title having partial text as "(.*?)"$/) do |present, partial_text_title|
11
+ # check_partial_title(partial_text_title, present.empty?)
12
+ # end
13
+
14
+ # # step to check element text
15
+ # Then(/^element "([^\"]*)" should\s*((?:not)?)\s+have text as "(.*?)"$/) do |element, present, value |
16
+ # check_element_text(element, value, present.empty?)
17
+ # end
18
+
19
+ # # step to check element partial text
20
+ # Then(/^element "([^\"]*)" should\s*((?:not)?)\s+have partial text as "(.*?)"$/) do |element, present, value |
21
+ # check_element_partial_text(element, value, present.empty?)
22
+ # end
23
+
24
+ # # step to check attribute value
25
+ # Then(/^element "([^\"]*)" should\s*((?:not)?)\s+have attribute "(.*?)" with value "(.*?)"$/) do |element, present, attrb, value|
26
+ # check_element_attribute(element, attrb, value, present.empty?)
27
+ # end
28
+
29
+ # # step to check element enabled or not
30
+ # Then(/^element "([^\"]*)" should\s*((?:not)?)\s+be (enabled|disabled)$/) do |element, present, state|
31
+ # flag = state == 'enabled'
32
+ # flag = !flag unless present.empty?
33
+ # check_element_enable(element, flag)
34
+ # end
35
+
36
+ # # step to check element present or not
37
+ # Then(/^element "(.*?)" should\s*((?:not)?)\s+be present$/) do |element, present|
38
+ # check_element_presence(element, present.empty?)
39
+ # end
40
+
41
+ # # step to assert checkbox is checked or unchecked
42
+ # Then(/^checkbox "(.*?)" should be (checked|unchecked)$/) do |element, state|
43
+ # flag = state == 'checked'
44
+ # is_checkbox_checked(element, flag)
45
+ # end
46
+
47
+ # # steps to assert radio button checked or unchecked
48
+ # Then(/^radio button"(.*?)" should be (selected|unselected)$/) do |element, state|
49
+ # flag = state == 'selected'
50
+ # is_radio_button_selected(element, flag)
51
+ # end
52
+
53
+ # # steps to assert option by text from radio button group selected/unselected
54
+ # Then(/^option "(.*?)" by (.+) from radio button group "(.*?)" should be (selected|unselected)$/) do |option, attrb, element, state|
55
+ # flag = state == 'selected'
56
+ # is_option_from_radio_button_group_selected(element, attrb, option, flag)
57
+ # end
58
+
59
+ # # step to assert javascript pop-up alert text
60
+ # Then(/^I should see alert text as "(.*?)"$/) do |actual_value|
61
+ # check_alert_text(actual_value)
62
+ # end
63
+
64
+ # # step to assert dropdown list
65
+ # Then(/^option "(.*?)" by (.+) from dropdown "(.*?)" should be (selected|unselected)$/) do |option, by, element, state|
66
+ # flag = state == 'selected'
67
+ # is_option_from_dropdown_selected(element, by, option, state)
68
+ # end
69
+
@@ -0,0 +1,25 @@
1
+ # Do Not Remove This File
2
+ # Please adjust the below steps as your needed
3
+ # $driver is instance of webdriver use this instance to write your custom code
4
+
5
+ # # click on web element
6
+ # When(/^I click on element"(.*?)"$/) do |element|
7
+ # click(element)
8
+ # end
9
+
10
+ # Then(/^I forcefully click on element "(.*?)"$/) do |element|
11
+ # click_forcefully(element)
12
+ # end
13
+
14
+ # # double click on web element
15
+ # Then(/^I double click on element "(.*?)"$/) do |element|
16
+ # double_click(element)
17
+ # end
18
+
19
+ # When(/^I tap on element"(.*?)"$/) do |element|
20
+ # click(element)
21
+ # end
22
+
23
+ # Then(/^I long press on element "(.*?)"$/) do |element|
24
+ # long_press(element, duration)
25
+ # end
@@ -0,0 +1,8 @@
1
+ # Do Not Remove This File
2
+ # Please adjust the below steps as your needed
3
+ # $driver is instance of webdriver use this instance to write your custom code
4
+
5
+ # # step to print configuration
6
+ # Then(/^I print configuration$/) do
7
+ # print_congifugartion
8
+ # end
@@ -0,0 +1,60 @@
1
+ # Do Not Remove This File
2
+ # Please adjust the below steps as your needed
3
+ # $driver is instance of webdriver use this instance to write your custom code
4
+
5
+ # # enter text into input field steps
6
+ # Then(/^I enter "([^\"]*)" into element "(.*?)"$/) do |text, element|
7
+ # enter_text(type, element)
8
+ # end
9
+
10
+ # # clear input field steps
11
+ # Then(/^I clear input element "(.*?)"$/) do |type, element|
12
+ # clear_text(type, element)
13
+ # end
14
+
15
+ # # select option by text/value from dropdown/multiselect
16
+ # Then(/^I select "(.*?)" option by (.+) from\s*((?:multiselect)?)\sdropdown "(.*?)"$/) do |option, option_by, present, element|
17
+ # validate_option_by option_by
18
+ # select_option_from_dropdown(element, option_by, option)
19
+ # end
20
+
21
+ # # select option by index from dropdown/multiselect
22
+ # Then(/^I select (\d+) option by index from\s*((?:multiselect)?)\sdropdown "(.*?)"$/) do |option, present, element|
23
+ # select_option_from_dropdown(element, 'index', (option.to_i) -1)
24
+ # end
25
+
26
+ # # step to select option from mutliselect dropdown list
27
+ # Then(/^I select all options from multiselect dropdown "(.*?)"$/) do |element|
28
+ # select_all_option_from_multiselect_dropdown(element)
29
+ # end
30
+
31
+ # # step to unselect option from mutliselect dropdown list
32
+ # Then(/^I unselect all options from multiselect dropdown "(.*?)"$/) do |element|
33
+ # unselect_all_option_from_multiselect_dropdown(element)
34
+ # end
35
+
36
+ # # check checkbox steps
37
+ # Then(/^I check the checkbox "(.*?)"$/) do |element|
38
+ # check_checkbox(element)
39
+ # end
40
+
41
+ # # uncheck checkbox steps
42
+ # Then(/^I uncheck the checkbox "(.*?)"$/) do |element|
43
+ # uncheck_checkbox(element)
44
+ # end
45
+
46
+ # # steps to toggle checkbox
47
+ # Then(/^I toggle checkbox "(.*?)"$/) do |element|
48
+ # toggle_checkbox(element)
49
+ # end
50
+
51
+ # # step to select radio button
52
+ # Then(/^I select radio button "(.*?)"$/) do |element|
53
+ # select_radio_button(element)
54
+ # end
55
+
56
+ # # steps to select option by text from radio button group
57
+ # Then(/^I select "(.*?)" option by (.+) from radio button group "(.*?)"$/) do |option, option_by, element|
58
+ # validate_option_by option_by
59
+ # select_option_from_radio_button_group(element, option_by, option)
60
+ # end
@@ -0,0 +1,11 @@
1
+ # Do Not Remove This File
2
+ # Please adjust the below steps as your needed
3
+ # $driver is instance of webdriver use this instance to write your custom code
4
+
5
+ # Then(/^I accept alert$/) do
6
+ # handle_alert('accept')
7
+ # end
8
+
9
+ # Then(/^I dismiss alert$/) do
10
+ # handle_alert('dismiss')
11
+ # end
@@ -0,0 +1,80 @@
1
+ # Do Not Remove This File
2
+ # Please adjust the below steps as your needed
3
+ # $driver is instance of webdriver use this instance to write your custom code
4
+
5
+ # Then(/^I navigate to "([^\"]*)"$/)do |link|
6
+ # navigate_to(link)
7
+ # end
8
+
9
+ # Then(/^I navigate forward/) do
10
+ # navigate('forward')
11
+ # end
12
+
13
+ # Then(/^I navigate back/) do
14
+ # navigate('back')
15
+ # end
16
+
17
+ # Then(/^I close browser$/) do
18
+ # close_driver
19
+ # end
20
+
21
+ # # step to resize browser
22
+ # Then(/^I resize browser window size to width (\d+) and height (\d+)$/) do |width, heigth|
23
+ # resize_browser(width, heigth)
24
+ # end
25
+
26
+ # # step to maximize browser
27
+ # Then(/^I maximize browser window$/) do
28
+ # maximize_browser
29
+ # end
30
+
31
+ # # steps to refresh page
32
+ # Then(/^I refresh page$/) do
33
+ # refresh_page
34
+ # end
35
+
36
+ # Then(/^I switch to new window$/) do
37
+ # switch_to_new_window
38
+ # end
39
+
40
+ # Then(/^I switch to previous window$/) do
41
+ # switch_to_old_window
42
+ # end
43
+
44
+ # Then(/^I close new window$/) do
45
+ # close_new_window
46
+ # end
47
+
48
+ # # steps to scroll to element
49
+ # Then(/^I scroll to element "(.*?)"$/) do |type, element|
50
+ # scroll_to_element(type, element)
51
+ # end
52
+
53
+ # # steps to scroll web page to top or end
54
+ # Then(/^I scroll to (top|end) of page$/) do |to|
55
+ # scroll_page(to)
56
+ # end
57
+
58
+ # # step to hover over a element Note: Doesn't work on Windows firefox
59
+ # When(/^I hover over element having (.+) "(.*?)"$/) do |type, element|
60
+ # hover_over_element(type, element)
61
+ # end
62
+
63
+ # # steps to zoom in page
64
+ # Then(/^I zoom in page$/) do
65
+ # zoom_in_out('add')
66
+ # end
67
+
68
+ # # steps to zoom out page
69
+ # Then(/^I zoom out page$/) do
70
+ # zoom_in_out('subtract')
71
+ # end
72
+
73
+ # # steps to zoom out till element displays
74
+ # Then(/^I zoom out page till I see element "(.*?)"$/) do |type, element|
75
+ # zoom_in_out_till_element_display(type, 'subtract', element)
76
+ # end
77
+
78
+ # Then(/^I reset page view$/) do
79
+ # zoom_in_out('numpad0')
80
+ # end
@@ -0,0 +1,18 @@
1
+ # Do Not Remove This File
2
+ # Please adjust the below steps as your needed
3
+ # $driver is instance of webdriver use this instance to write your custom code
4
+
5
+ # # wait for specific period of time
6
+ # Then(/^I wait for (\d+) sec$/) do |time|
7
+ # wait(time)
8
+ # end
9
+
10
+ # # wait for specific element to display for specific period of time
11
+ # Then(/^I wait (\d+) seconds for element "(.*?)" to display$/) do |duration, element|
12
+ # wait_for_element_to_display(element, duration)
13
+ # end
14
+
15
+ # # wait for specific element to enable for specific period of time
16
+ # Then(/^I wait (\d+) seconds for element "(.*?)" to enable$/) do |duration, element|
17
+ # wait_for_element_to_enable(element, duration)
18
+ # end
@@ -73,30 +73,35 @@ if $platform == "android" or $platform == "iOS"
73
73
  else # else create driver instance for desktop browser
74
74
  begin
75
75
  $driver = case $browser_type
76
- when "chrome"
77
- Selenium::WebDriver.for(:chrome)
78
- when "safari"
79
- Selenium::WebDriver.for(:safari)
80
- when "internet_explorer"
81
- Selenium::WebDriver.for(:internet_explorer)
82
- when "chrome_headless"
83
- Selenium::WebDriver.for(:chrome, :desired_capabilities => Selenium::WebDriver::Remote::Capabilities.chrome(chromeOptions: { args: %w(headless) }))
84
- when "remote"
85
- if ENV["SERVER_URL"].nil? || ENV["REMOTE_BROWSER"].nil?
86
- puts "\nMissing SERVER_URL : SERVER_URL=http://SERVER_URL:4444/wd/hub"
76
+ when "chrome"
77
+ Selenium::WebDriver.for(:chrome)
78
+ when "safari"
79
+ Selenium::WebDriver.for(:safari)
80
+ when "internet_explorer"
81
+ Selenium::WebDriver.for(:internet_explorer)
82
+ when "chrome_headless"
83
+ Selenium::WebDriver.for(:chrome, :desired_capabilities => Selenium::WebDriver::Remote::Capabilities.chrome(chromeOptions: { args: %w(headless) }))
84
+ when "remote"
85
+ if ENV["SERVER_URL"].nil? || ENV["REMOTE_BROWSER"].nil?
86
+ puts "\nMissing SERVER_URL : SERVER_URL=http://SERVER_URL:4444/wd/hub"
87
+ puts "\nMissing REMOTE_BROWSER: REMOTE_BROWSER=browser_name"
88
+ Process.exit(0)
89
+ else
90
+ if ENV['SERVER_URL'].nil? || ENV['REMOTE_BROWSER'].nil?
91
+ puts "\nMissing SERVER_URL : SERVER_URL=http//SERVER_URL:4444/wd/hub"
87
92
  puts "\nMissing REMOTE_BROWSER: REMOTE_BROWSER=browser_name"
88
93
  Process.exit(0)
89
94
  else
90
95
  caps = Selenium::WebDriver::Remote::Capabilities.new
91
96
  caps["browserName"] = ENV["REMOTE_BROWSER"]
92
- caps["enableVNC"] = ENV["ENABLE_VNC"] if ENV["ENABLE_VNC"].present?
93
- caps["enableVideo"] = ENV["ENABLE_VIDEO"] if ENV["ENABLE_VIDEO"].present?
94
- caps["screenResolution"] = ENV["SCREEN_RESOLUTION"] if ENV["SCREEN_RESOLUTION"].present?
97
+ caps["enableVNC"] = true
98
+ caps["enableVideo"] = true
99
+ caps["resolution"] = ENV["resolution"] unless ENV["resolution"]
95
100
  Selenium::WebDriver.for(:remote, :url => ENV["SERVER_URL"], :desired_capabilities => caps)
96
- end
97
- else
98
- Selenium::WebDriver.for(:firefox)
99
101
  end
102
+ else
103
+ Selenium::WebDriver.for(:firefox)
104
+ end
100
105
  $driver.manage().window().maximize()
101
106
  rescue Exception => e
102
107
  puts e.message
@@ -50,16 +50,16 @@ end
50
50
  # param 1 : String : Element
51
51
  # param 2 : String : Expected element text
52
52
  # param 3 : Boolean : test case [true or flase]
53
- def check_element_text(element, actual_value, test_case)
53
+ def check_element_text(element, expected_value, test_case)
54
54
  element_text = get_element_text(element)
55
55
 
56
56
  if test_case
57
- if element_text != actual_value
58
- raise TestCaseFailed, "Text Not Matched. Actual Value :#{actual_value}"
57
+ if element_text != expected_value
58
+ raise TestCaseFailed, "Text Not Matched. Actual Value :#{expected_value}"
59
59
  end
60
60
  else
61
- if element_text == actual_value
62
- raise TestCaseFailed, "Text Matched. Actual Value :#{actual_value}"
61
+ if element_text == expected_value
62
+ raise TestCaseFailed, "Text Matched. Actual Value :#{expected_value}"
63
63
  end
64
64
  end
65
65
  end
@@ -68,27 +68,27 @@ end
68
68
  # param 1 : String : Element
69
69
  # param 2 : String : Expected element partial text
70
70
  # param 3 : Boolean : test case [true or flase]
71
- def check_element_partial_text(element, actual_value, test_case)
71
+ def check_element_partial_text(element, expected_value, test_case)
72
72
  element_text = get_element_text(element)
73
73
 
74
74
  if test_case
75
- if not element_text.include? "#{actual_value}"
76
- raise TestCaseFailed, "Text Not Matched. Actual Value :#{actual_value}"
75
+ if not element_text.include? "#{expected_value}"
76
+ raise TestCaseFailed, "Text Not Matched. Actual Value :#{expected_value}"
77
77
  end
78
78
  else
79
- if element_text.include? "#{actual_value}"
80
- raise TestCaseFailed, "Text Matched. Actual Value :#{actual_value}"
79
+ if element_text.include? "#{expected_value}"
80
+ raise TestCaseFailed, "Text Matched. Actual Value :#{expected_value}"
81
81
  end
82
82
  end
83
83
  end
84
84
 
85
- # Method to return element status - enabled?
85
+ # method to return element status - enabled?
86
86
  # param : String : Element
87
87
  def is_element_enabled(element)
88
88
  WAIT.until{ find_object(element) }.enabled?
89
89
  end
90
90
 
91
- # Element enabled checking
91
+ # method to check element status - enabled?
92
92
  # param 1 : String : Element
93
93
  # param 2 : Boolean : test case [true or flase]
94
94
  def check_element_enable(element, test_case)
@@ -13,7 +13,6 @@ def double_click(element)
13
13
  $driver.action.double_click(found_element).perform
14
14
  end
15
15
 
16
-
17
16
  def long_press( element, duration)
18
17
  found_element = WAIT.until { find_object(element) }
19
18
  parameters = { "element" => "#{found_element}", "duration" => "#{duration}" }
@@ -1,3 +1,4 @@
1
+ require 'selenium-webdriver'
1
2
 
2
3
  # custome exception class
3
4
  class TestCaseFailed < Exception
@@ -8,10 +9,11 @@ WAIT = Selenium::WebDriver::Wait.new(:timeout => 30)
8
9
 
9
10
  # method to validate locator
10
11
  def valid_locator_type? type
11
- %w(id class css name xpath).include? type
12
+ %w(id class css name xpath class_name link link_text partial_link_text).include? type
12
13
  end
13
14
 
14
15
  def validate_locator type
16
+ puts "validate_locator:::#{type}"
15
17
  raise "Invalid locator type - #{type}" unless valid_locator_type? type
16
18
  end
17
19
 
@@ -5,7 +5,7 @@ def navigate_to(link)
5
5
  $driver.get link
6
6
  end
7
7
 
8
- # method to navigate back & forword
8
+ # method to navigate back & forward
9
9
  def navigate(direction)
10
10
  if direction == 'back'
11
11
  $driver.navigate.back
@@ -36,7 +36,7 @@ def zoom_in_out(in_out)
36
36
  $driver.action.key_down(:"#{get_key}").send_keys(:"#{in_out}").key_up(:"#{get_key}").perform
37
37
  end
38
38
 
39
- # Method to zoom in/out web page until web element displyas
39
+ # Method to zoom in/out web page until web element dislays
40
40
  def zoom_in_out_till_element_display(element, in_out)
41
41
  while true
42
42
  if WAIT.until { find_object(element) }.displayed?
@@ -88,13 +88,11 @@ end
88
88
  $old_win = nil
89
89
 
90
90
  # Method to switch to new window
91
-
92
91
  def switch_to_new_window
93
92
  $old_win = $driver.window_handle
94
93
  $driver.switch_to.window($driver.window_handles[1])
95
94
  end
96
95
 
97
-
98
96
  # Method to switch to old window
99
97
  def switch_to_old_window
100
98
  $driver.switch_to.window($old_win)
@@ -1,5 +1,5 @@
1
1
  module ITMS
2
2
  module Automation
3
- VERSION = '2.6.1'
3
+ VERSION = '2.6.7'
4
4
  end
5
5
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: itms_automation
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.6.1
4
+ version: 2.6.7
5
5
  platform: ruby
6
6
  authors:
7
7
  - INFOdation
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2020-07-23 00:00:00.000000000 Z
11
+ date: 2020-10-21 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: cucumber
@@ -76,20 +76,20 @@ dependencies:
76
76
  requirements:
77
77
  - - ">="
78
78
  - !ruby/object:Gem::Version
79
- version: 0.13.7
79
+ version: 0.18.1
80
80
  - - "~>"
81
81
  - !ruby/object:Gem::Version
82
- version: 0.13.7
82
+ version: 0.18.1
83
83
  type: :runtime
84
84
  prerelease: false
85
85
  version_requirements: !ruby/object:Gem::Requirement
86
86
  requirements:
87
87
  - - ">="
88
88
  - !ruby/object:Gem::Version
89
- version: 0.13.7
89
+ version: 0.18.1
90
90
  - - "~>"
91
91
  - !ruby/object:Gem::Version
92
- version: 0.13.7
92
+ version: 0.18.1
93
93
  - !ruby/object:Gem::Dependency
94
94
  name: report_builder
95
95
  requirement: !ruby/object:Gem::Requirement
@@ -147,9 +147,19 @@ files:
147
147
  - example/desktop web/desktop_web_gmail_login/features/step_definitions/custom_steps.rb
148
148
  - example/desktop web/desktop_web_gmail_login/features/support/env.rb
149
149
  - example/desktop web/desktop_web_gmail_login/features/support/hooks.rb
150
+ - features-skeleton/Gemfile
151
+ - features-skeleton/Gemfile.lock
152
+ - features-skeleton/README.md
153
+ - features-skeleton/cucumber.yml
150
154
  - features-skeleton/my_first.feature
151
155
  - features-skeleton/screenshots/test.png
152
- - features-skeleton/step_definitions/custom_steps.rb
156
+ - features-skeleton/step_definitions/assertion_steps.rb
157
+ - features-skeleton/step_definitions/click_elements_steps.rb
158
+ - features-skeleton/step_definitions/configuration_steps.rb
159
+ - features-skeleton/step_definitions/input_steps.rb
160
+ - features-skeleton/step_definitions/javascript_handling_steps.rb
161
+ - features-skeleton/step_definitions/navigation_steps.rb
162
+ - features-skeleton/step_definitions/progress_steps.rb
153
163
  - features-skeleton/step_definitions/repositories/project_object.yml
154
164
  - features-skeleton/support/env.rb
155
165
  - features-skeleton/support/hooks.rb
@@ -1,5 +0,0 @@
1
- require 'itms_automation'
2
-
3
- # Do Not Remove This File
4
- # Add your custom steps here
5
- # $driver is instance of webdriver use this instance to write your custom code