selenium-cucumber 1.1.2 → 2.1.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/doc/canned_steps.md +17 -0
- data/features-skeleton/support/env.rb +42 -29
- data/lib/selenium-cucumber.rb +0 -1
- data/lib/selenium-cucumber/assertion_steps.rb +6 -2
- data/lib/selenium-cucumber/click_elements_steps.rb +10 -0
- data/lib/selenium-cucumber/methods/assertion_methods.rb +78 -8
- data/lib/selenium-cucumber/methods/click_elements_methods.rb +8 -0
- data/lib/selenium-cucumber/methods/configuration_methods.rb +23 -2
- data/lib/selenium-cucumber/methods/error_handling_methods.rb +87 -0
- data/lib/selenium-cucumber/methods/misc_methods.rb +9 -0
- data/lib/selenium-cucumber/methods/navigate_methods.rb +5 -0
- data/lib/selenium-cucumber/methods/required_files.rb +2 -0
- data/lib/selenium-cucumber/navigation_steps.rb +4 -0
- data/lib/selenium-cucumber/version.rb +1 -1
- metadata +68 -51
- data/example/Gemfile +0 -5
- data/example/Gemfile.lock +0 -36
- data/example/features/actual_images/test.png +0 -0
- data/example/features/assertion_steps_Ex.feature +0 -149
- data/example/features/click_steps_Ex.feature +0 -28
- data/example/features/configuration_step_Ex.feature +0 -8
- data/example/features/expected_images/logo-PNG.png +0 -0
- data/example/features/expected_images/original_image.jpg +0 -0
- data/example/features/image_difference/test.png +0 -0
- data/example/features/input_steps_Ex.feature +0 -87
- data/example/features/javascript_steps_Ex.feature +0 -19
- data/example/features/navigation_steps_Ex.feature +0 -45
- data/example/features/new.feature +0 -17
- data/example/features/progress_step_Ex.feature +0 -18
- data/example/features/screenshot_step_Ex.feature +0 -12
- data/example/features/screenshots/test.png +0 -0
- data/example/features/step_definitions/custom_steps.rb +0 -14
- data/example/features/support/env.rb +0 -37
- data/example/features/support/hooks.rb +0 -34
- data/example/run_features.rb +0 -42
- data/example/test_page.html +0 -224
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 06ba324f137c7beac5a434968028ac9c2d841a71
|
4
|
+
data.tar.gz: c0b17d8c1fc7e82d63a7fd65bf712f6fa3ccb2fc
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 8057e8b7d347b508832c14a95d9170f4b20446b1333e3e5d5422e2e16e46e15ee2427fa911f2e6001b0827d6f3142c95d5910efbfa87619201fba37374040fe6
|
7
|
+
data.tar.gz: a42178e44886762fba3784f45d66170cd439705dbc4fc628e626576814ff56369525f12f03a72814a3e513228268660e04b976455fd32dc5f16c738415f57bed
|
data/doc/canned_steps.md
CHANGED
@@ -20,6 +20,7 @@ To open/close URL and to navigate between pages use following steps :
|
|
20
20
|
Then I navigate back
|
21
21
|
Then I refresh page
|
22
22
|
Then I switch to new window
|
23
|
+
Then I close new window
|
23
24
|
Then I switch to previous window
|
24
25
|
|
25
26
|
To interact with browser use following steps :
|
@@ -72,7 +73,11 @@ Assertion Steps
|
|
72
73
|
To assert that page title can be found use following step :
|
73
74
|
|
74
75
|
Then I should see page title as "(.*?)"
|
76
|
+
Then I should not see page title as "(.*?)"
|
75
77
|
|
78
|
+
Then I should see page title having partial text as "(.*?)"
|
79
|
+
Then I should not see page title having partial text as "(.*?)"
|
80
|
+
|
76
81
|
#### Steps For Asserting Element Text
|
77
82
|
|
78
83
|
To assert element text use any of the following steps :
|
@@ -520,3 +525,15 @@ Configuration Steps
|
|
520
525
|
To print testing configuration use following step :
|
521
526
|
|
522
527
|
Then I print configuration
|
528
|
+
|
529
|
+
#Mobile Steps
|
530
|
+
|
531
|
+
##Tap Steps
|
532
|
+
-----------
|
533
|
+
To tap on app element use following steps :
|
534
|
+
|
535
|
+
Then I tap on element having id "(.*?)"
|
536
|
+
Then I tap on element having name "(.*?)"
|
537
|
+
Then I tap on element having class "(.*?)"
|
538
|
+
Then I tap on element having xpath "(.*?)"
|
539
|
+
Then I tap on element having css "(.*?)"
|
@@ -1,38 +1,51 @@
|
|
1
1
|
require 'rubygems'
|
2
|
-
require 'selenium-
|
2
|
+
require 'selenium-cucumber'
|
3
3
|
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
4
|
+
# Store command line arguments
|
5
|
+
$browser_type = ENV['BROWSER'] || 'ff'
|
6
|
+
$platform = ENV['PLATFORM'] || 'desktop'
|
7
|
+
$os_version = ENV['OS_VERSION']
|
8
|
+
$device_name = ENV['DEVICE_NAME']
|
9
|
+
$udid = ENV['UDID']
|
10
|
+
$app_path = ENV['APP_PATH']
|
11
11
|
|
12
|
-
|
13
|
-
|
14
|
-
browser_type = :ie
|
15
|
-
when 'ff'
|
16
|
-
browser_type = :ff
|
17
|
-
when 'chrome'
|
18
|
-
browser_type = :chrome
|
19
|
-
when 'opera'
|
20
|
-
browser_type = :opera
|
21
|
-
when 'safari'
|
22
|
-
browser_type = :safari
|
23
|
-
else
|
24
|
-
if ENV['BROWSER']
|
25
|
-
print_error
|
26
|
-
end
|
27
|
-
browser_type = :ff
|
28
|
-
end
|
12
|
+
# check for valid parameters
|
13
|
+
validate_parameters $platform, $browser_type, $app_path
|
29
14
|
|
15
|
+
# If platform is android or ios create driver instance for mobile browser
|
16
|
+
if $platform == 'android' or $platform == 'iOS'
|
17
|
+
|
18
|
+
if $browser_type == 'native'
|
19
|
+
$browser_type = "Browser"
|
20
|
+
end
|
21
|
+
|
22
|
+
if $platform == 'android'
|
23
|
+
$device_name, $os_version = get_device_info
|
24
|
+
end
|
25
|
+
|
26
|
+
desired_caps = {
|
27
|
+
caps: {
|
28
|
+
platformName: $platform,
|
29
|
+
browserName: $browser_type,
|
30
|
+
versionNumber: $os_version,
|
31
|
+
deviceName: $device_name,
|
32
|
+
udid: $udid,
|
33
|
+
app: ".//#{$app_path}"
|
34
|
+
},
|
35
|
+
}
|
30
36
|
|
31
|
-
begin
|
32
|
-
$driver =
|
37
|
+
begin
|
38
|
+
$driver = Appium::Driver.new(desired_caps).start_driver
|
39
|
+
rescue Exception => e
|
40
|
+
puts e.message
|
41
|
+
Process.exit(0)
|
42
|
+
end
|
43
|
+
else # else create driver instance for desktop browser
|
44
|
+
begin
|
45
|
+
$driver = Selenium::WebDriver.for(:"#{$browser_type}")
|
33
46
|
$driver.manage().window().maximize()
|
34
|
-
|
35
47
|
rescue Exception => e
|
36
48
|
puts e.message
|
49
|
+
Process.exit(0)
|
50
|
+
end
|
37
51
|
end
|
38
|
-
|
data/lib/selenium-cucumber.rb
CHANGED
@@ -1,8 +1,12 @@
|
|
1
1
|
require_relative 'methods/assertion_methods'
|
2
2
|
|
3
3
|
# page title checking
|
4
|
-
Then(/^I should
|
5
|
-
check_title(title)
|
4
|
+
Then(/^I should\s*((?:not)?)\s+see page title as "(.*?)"$/) do |present, title|
|
5
|
+
check_title(title, present.empty?)
|
6
|
+
end
|
7
|
+
|
8
|
+
Then(/^I should\s*((?:not)?)\s+see page title having partial text as "(.*?)"$/) do |present, partial_text_title|
|
9
|
+
check_partial_title(partial_text_title, present.empty?)
|
6
10
|
end
|
7
11
|
|
8
12
|
# step to check element text
|
@@ -25,3 +25,13 @@ end
|
|
25
25
|
Then(/^I click on link having partial text "(.*?)"$/) do |access_name|
|
26
26
|
click('partial_link_text', access_name)
|
27
27
|
end
|
28
|
+
|
29
|
+
When(/^I tap on element having (.+) "(.*?)"$/) do |type, access_name|
|
30
|
+
validate_locator type
|
31
|
+
click(type, access_name)
|
32
|
+
end
|
33
|
+
|
34
|
+
Then(/^I long press on element having (.+) "(.*?)"$/) do |type, access_name|
|
35
|
+
validate_locator type
|
36
|
+
long_press(type, access_name, duration)
|
37
|
+
end
|
@@ -1,21 +1,57 @@
|
|
1
1
|
require 'net/https'
|
2
2
|
require_relative 'required_files'
|
3
3
|
|
4
|
-
#
|
4
|
+
# This file contains assertion methods which are called from assertion_steps.rb
|
5
|
+
|
6
|
+
# Method to return page title
|
5
7
|
def get_page_title
|
6
8
|
$driver.title
|
7
9
|
end
|
8
10
|
|
9
|
-
|
10
|
-
|
11
|
+
# Method to verify title
|
12
|
+
# param 1 : String : expected title
|
13
|
+
# param 2 : Boolean : test case [true or flase]
|
14
|
+
def check_title(title, test_case)
|
15
|
+
page_title = get_page_title
|
16
|
+
if test_case
|
17
|
+
if page_title != "#{title}"
|
18
|
+
raise TestCaseFailed, "Page Title Not Matched, Actual Page Title : #{page_title}"
|
19
|
+
end
|
20
|
+
else
|
21
|
+
if page_title == "#{title}"
|
22
|
+
raise TestCaseFailed, "Page Title Matched, Actual Page Title:#{page_title}"
|
23
|
+
end
|
24
|
+
end
|
25
|
+
end
|
26
|
+
|
27
|
+
# Method to verify partial title
|
28
|
+
# param 1 : String : partial title string
|
29
|
+
# param 2 : Boolean : test case [true or flase]
|
30
|
+
def check_partial_title(partial_text_title, test_case)
|
31
|
+
page_title = get_page_title
|
32
|
+
if test_case
|
33
|
+
if not page_title.include? "#{partial_text_title}"
|
34
|
+
raise TestCaseFailed, 'Partial Page Title Not Present'
|
35
|
+
end
|
36
|
+
else
|
37
|
+
if page_title.include? "#{partial_text_title}"
|
38
|
+
raise TestCaseFailed, 'Page Title Matched'
|
39
|
+
end
|
40
|
+
end
|
11
41
|
end
|
12
42
|
|
13
43
|
# Method to get element text
|
44
|
+
# param 1 : String : Locator type (id, name, class, xpath, css)
|
45
|
+
# param 2 : String : Locator value
|
14
46
|
def get_element_text(access_type, access_name)
|
15
47
|
WAIT.until { $driver.find_element(:"#{access_type}" => "#{access_name}") }.text
|
16
48
|
end
|
17
49
|
|
18
50
|
# Method to check element text
|
51
|
+
# param 1 : String : Locator type (id, name, class, xpath, css)
|
52
|
+
# param 2 : String : Expected element text
|
53
|
+
# param 3 : String : Locator value
|
54
|
+
# param 4 : Boolean : test case [true or flase]
|
19
55
|
def check_element_text(access_type, actual_value, access_name, test_case)
|
20
56
|
element_text = get_element_text(access_type, access_name)
|
21
57
|
|
@@ -31,6 +67,10 @@ def check_element_text(access_type, actual_value, access_name, test_case)
|
|
31
67
|
end
|
32
68
|
|
33
69
|
# Method to check partial element text
|
70
|
+
# param 1 : String : Locator type (id, name, class, xpath, css)
|
71
|
+
# param 2 : String : Expected element partial text
|
72
|
+
# param 3 : String : Locator value
|
73
|
+
# param 4 : Boolean : test case [true or flase]
|
34
74
|
def check_element_partial_text(access_type, actual_value, access_name, test_case)
|
35
75
|
element_text = get_element_text(access_type, access_name)
|
36
76
|
|
@@ -46,11 +86,16 @@ def check_element_partial_text(access_type, actual_value, access_name, test_case
|
|
46
86
|
end
|
47
87
|
|
48
88
|
# Method to return element status - enabled?
|
89
|
+
# param 1 : String : Locator type (id, name, class, xpath, css)
|
90
|
+
# param 2 : String : Locator value
|
49
91
|
def is_element_enabled(access_type, access_name)
|
50
92
|
WAIT.until{ $driver.find_element(:"#{access_type}" => "#{access_name}") }.enabled?
|
51
93
|
end
|
52
94
|
|
53
95
|
# Element enabled checking
|
96
|
+
# param 1 : String : Locator type (id, name, class, xpath, css)
|
97
|
+
# param 2 : String : Expected element text
|
98
|
+
# param 4 : Boolean : test case [true or flase]
|
54
99
|
def check_element_enable(access_type, access_name, test_case)
|
55
100
|
result = is_element_enabled(access_type, access_name)
|
56
101
|
|
@@ -62,11 +107,19 @@ def check_element_enable(access_type, access_name, test_case)
|
|
62
107
|
end
|
63
108
|
|
64
109
|
# method to get attribute value
|
110
|
+
# param 1 : String : Locator type (id, name, class, xpath, css)
|
111
|
+
# param 2 : String : Expected element text
|
112
|
+
# param 3 : String : atrribute name
|
65
113
|
def get_element_attribute(access_type, access_name, attribute_name)
|
66
114
|
WAIT.until{ $driver.find_element(:"#{access_type}" => "#{access_name}") }.attribute("#{attribute_name}")
|
67
115
|
end
|
68
116
|
|
69
117
|
# method to check attribute value
|
118
|
+
# param 1 : String : Locator type (id, name, class, xpath, css)
|
119
|
+
# param 2 : String : atrribute name
|
120
|
+
# param 3 : String : atrribute value
|
121
|
+
# param 4 : String : Locator value
|
122
|
+
# param 5 : Boolean : test case [true or flase]
|
70
123
|
def check_element_attribute(access_type, attribute_name, attribute_value, access_name, test_case)
|
71
124
|
|
72
125
|
attr_val = get_element_attribute(access_type, access_name, attribute_name)
|
@@ -83,11 +136,16 @@ def check_element_attribute(access_type, attribute_name, attribute_value, access
|
|
83
136
|
end
|
84
137
|
|
85
138
|
# method to get element status - displayed?
|
139
|
+
# param 1 : String : Locator type (id, name, class, xpath, css)
|
140
|
+
# param 2 : String : Locator value
|
86
141
|
def is_element_displayed(access_type, access_name)
|
87
142
|
WAIT.until{ $driver.find_element(:"#{access_type}" => "#{access_name}") }.displayed?
|
88
143
|
end
|
89
144
|
|
90
145
|
# method to check element presence
|
146
|
+
# param 1 : String : Locator type (id, name, class, xpath, css)
|
147
|
+
# param 2 : String : Locator value
|
148
|
+
# param 3 : Boolean : test case [true or flase]
|
91
149
|
def check_element_presence(access_type, access_name, test_case)
|
92
150
|
if test_case
|
93
151
|
if !is_element_displayed(access_type, access_name)
|
@@ -96,10 +154,10 @@ def check_element_presence(access_type, access_name, test_case)
|
|
96
154
|
else
|
97
155
|
begin
|
98
156
|
if is_element_displayed(access_type, access_name)
|
99
|
-
raise 'Present'
|
157
|
+
raise 'Present' # since it is negative test and we found element
|
100
158
|
end
|
101
159
|
rescue Exception => e
|
102
|
-
if e.message == 'Present'
|
160
|
+
if e.message == 'Present' # only raise if it present
|
103
161
|
raise TestCaseFailed, 'Element Present'
|
104
162
|
end
|
105
163
|
end
|
@@ -107,6 +165,9 @@ def check_element_presence(access_type, access_name, test_case)
|
|
107
165
|
end
|
108
166
|
|
109
167
|
# method to assert checkbox check/uncheck
|
168
|
+
# param 1 : String : Locator type (id, name, class, xpath, css)
|
169
|
+
# param 2 : String : Locator value
|
170
|
+
# param 3 : Boolean : test case [true or flase]
|
110
171
|
def is_checkbox_checked(access_type, access_name, should_be_checked = true)
|
111
172
|
checkbox = WAIT.until{ $driver.find_element(:"#{access_type}" => "#{access_name}") }
|
112
173
|
|
@@ -118,6 +179,9 @@ def is_checkbox_checked(access_type, access_name, should_be_checked = true)
|
|
118
179
|
end
|
119
180
|
|
120
181
|
# method to assert radio button selected/unselected
|
182
|
+
# param 1 : String : Locator type (id, name, class, xpath, css)
|
183
|
+
# param 2 : String : Locator value
|
184
|
+
# param 3 : Boolean : test case [true or flase]
|
121
185
|
def is_radio_button_selected(access_type, access_name, should_be_selected = true)
|
122
186
|
radio_button = WAIT.until{ $driver.find_element(:"#{access_type}" => "#{access_name}") }
|
123
187
|
|
@@ -180,6 +244,10 @@ def does_images_similar?(actual_img_access_type, actual_img_access_name, excp_im
|
|
180
244
|
end
|
181
245
|
|
182
246
|
# Method to compare two images
|
247
|
+
# param 1 : String : Locator type (id, name, class, xpath, css, url)
|
248
|
+
# param 2 : String : Locator value
|
249
|
+
# param 3 : String : Locator type (id, name, class, xpath, css, url, image_name)
|
250
|
+
# param 4 : String : Locator value
|
183
251
|
def compare_image(actual_img_access_type, actual_img_access_name, excp_img_access_type, excp_img_access_name)
|
184
252
|
if actual_img_access_type == 'url'
|
185
253
|
actual_img_url = actual_img_access_name
|
@@ -195,10 +263,12 @@ def compare_image(actual_img_access_type, actual_img_access_name, excp_img_acces
|
|
195
263
|
expected_img_url = get_element_attribute(excp_img_access_type, excp_img_access_name, 'src')
|
196
264
|
end
|
197
265
|
|
266
|
+
# replace 'https' with 'http' from actual image url
|
198
267
|
if actual_img_url.include? 'https'
|
199
268
|
actual_img_url['https'] = 'http'
|
200
269
|
end
|
201
270
|
|
271
|
+
# replace 'https' with 'http' from expected image url
|
202
272
|
if expected_img_url.include? 'https'
|
203
273
|
expected_img_url['https'] = 'http'
|
204
274
|
end
|
@@ -209,14 +279,14 @@ def compare_image(actual_img_access_type, actual_img_access_name, excp_img_acces
|
|
209
279
|
image_type = 'jpg'
|
210
280
|
end
|
211
281
|
|
212
|
-
# Storing actual image locally
|
282
|
+
# Storing actual image locally
|
213
283
|
open('./features/actual_images/actual_image.' + image_type, 'wb') do |file|
|
214
284
|
file << open(actual_img_url).read
|
215
285
|
end
|
216
286
|
|
217
287
|
actual_img_url = './features/actual_images/actual_image.' + image_type
|
218
288
|
|
219
|
-
# Storing Expected image locally
|
289
|
+
# Storing Expected image locally
|
220
290
|
if excp_img_access_type != 'image_name'
|
221
291
|
open('./features/expected_images/expected_image.' + image_type, 'wb') do |file|
|
222
292
|
file << open(expected_img_url).read
|
@@ -224,7 +294,7 @@ def compare_image(actual_img_access_type, actual_img_access_name, excp_img_acces
|
|
224
294
|
expected_img_url = './features/expected_images/expected_image.' + image_type
|
225
295
|
end
|
226
296
|
|
227
|
-
# Verify image extension and call respective compare function
|
297
|
+
# Verify image extension and call respective compare function
|
228
298
|
if image_type == 'png'
|
229
299
|
return compare_png_images(expected_img_url, actual_img_url)
|
230
300
|
end
|
@@ -17,3 +17,11 @@ end
|
|
17
17
|
def submit(access_type, access_name)
|
18
18
|
WAIT.until { $driver.find_element(:"#{access_type}" => "#{access_name}") }.submit
|
19
19
|
end
|
20
|
+
|
21
|
+
def long_press(type, access_name, duration)
|
22
|
+
element = WAIT.until { $driver.find_element(:"#{access_type}" => "#{access_name}") }
|
23
|
+
parameters = { "element" => "#{element}", "duration" => "#{duration}" }
|
24
|
+
args = parameters.select { |k, v| [:element, :duration].include? k }
|
25
|
+
args = args_with_ele_ref(args)
|
26
|
+
chain_method(:longPress, args)
|
27
|
+
end
|
@@ -1,14 +1,35 @@
|
|
1
1
|
require_relative 'required_files'
|
2
2
|
|
3
3
|
# method to print configuration
|
4
|
-
|
5
4
|
def print_congifugartion
|
6
5
|
puts ''
|
7
6
|
puts "Date : #{Time.now.strftime("%d-%B-%Y")}"
|
8
7
|
puts "Time : #{Time.now.strftime("%I:%M:%S:%p")}"
|
9
|
-
|
8
|
+
|
9
|
+
if $platform == 'android' or $platform == 'ios'
|
10
|
+
print_mobile_configuration
|
11
|
+
else
|
12
|
+
print_desktop_configuration
|
13
|
+
end
|
14
|
+
end
|
15
|
+
|
16
|
+
# method to print desktop configuration
|
17
|
+
def print_desktop_configuration
|
18
|
+
puts 'Platform : ' + Selenium::WebDriver::Platform.os.to_s.upcase
|
10
19
|
puts 'Browser : ' + $driver.capabilities.browser_name.to_s.upcase + " " + $driver.capabilities.version.to_s
|
11
20
|
puts ''
|
12
21
|
end
|
13
22
|
|
23
|
+
# method to print mobile configuration
|
24
|
+
def print_mobile_configuration
|
25
|
+
puts "Platform : #{$platform.upcase}"
|
26
|
+
puts "OS version : #{$os_version}"
|
27
|
+
puts "Device : #{$device_name}"
|
14
28
|
|
29
|
+
if $app_path.nil?
|
30
|
+
puts 'Browser : ' + $driver.capabilities.browser_name.to_s.upcase + " " + $driver.capabilities.version.to_s
|
31
|
+
else
|
32
|
+
puts "App Tested : #{$app_path}"
|
33
|
+
end
|
34
|
+
puts ''
|
35
|
+
end
|
@@ -0,0 +1,87 @@
|
|
1
|
+
# Error handling methods
|
2
|
+
|
3
|
+
# Method to check browser type
|
4
|
+
def validate_parameters(platform, browser_type, app_path)
|
5
|
+
if platform == 'desktop'
|
6
|
+
if !%w(ff ie chrome safari opera).include? browser_type
|
7
|
+
print_error_desktop
|
8
|
+
end
|
9
|
+
elsif platform == 'android'
|
10
|
+
print_error_android browser_type, app_path
|
11
|
+
elsif platform == 'iOS'
|
12
|
+
puts "Not Implemented..."
|
13
|
+
# print_error_ios browser_type, app_path
|
14
|
+
else
|
15
|
+
print_invalid_platform
|
16
|
+
end
|
17
|
+
end
|
18
|
+
|
19
|
+
# print error for desktop
|
20
|
+
def print_error_desktop
|
21
|
+
puts "\nInappropraite desktop browser : \"#{ENV['BROWSER']}\""
|
22
|
+
puts "\nUsage : cucumber BROWSER=browser_name"
|
23
|
+
puts "\nBrowser Supported :\n"
|
24
|
+
puts "\n1.ie\n2.chrome\n3.ff\n4.safari\n5.opera"
|
25
|
+
Process.exit(0)
|
26
|
+
end
|
27
|
+
|
28
|
+
# print error for android
|
29
|
+
def print_error_android(browser_type, app_path)
|
30
|
+
if browser_type=='ff' and app_path==nil
|
31
|
+
puts "\nOops... not mentioned \"Browser\" or \"App path\""
|
32
|
+
print_error_android_app
|
33
|
+
print_error_android_web
|
34
|
+
Process.exit(0)
|
35
|
+
elsif browser_type!='ff' and !%w(native chrome).include? browser_type
|
36
|
+
puts "\nOops... not supported browser"
|
37
|
+
print_error_android_web
|
38
|
+
Process.exit(0)
|
39
|
+
end
|
40
|
+
end
|
41
|
+
|
42
|
+
# print error for android app
|
43
|
+
def print_error_android_app
|
44
|
+
puts "\nTo run test on android app"
|
45
|
+
puts "\n Usage : cucumber PLATFORM=android APP_PATH=path/to/app"
|
46
|
+
end
|
47
|
+
|
48
|
+
# print error for android web
|
49
|
+
def print_error_android_web
|
50
|
+
puts "\nTo run test on android mobile web"
|
51
|
+
puts "\n Usage : cucumber PLATFORM=android BROWSER=browser_name"
|
52
|
+
puts "\n Supported browsers are \"chrome\" and \"native\""
|
53
|
+
end
|
54
|
+
|
55
|
+
# print error for ios
|
56
|
+
def print_error_ios
|
57
|
+
if browser_type=='ff' and app_path==nil
|
58
|
+
puts "\nOops... not mentioned \"Browser\" or \"App path\""
|
59
|
+
print_error_ios_app
|
60
|
+
print_error_ios_web
|
61
|
+
Process.exit(0)
|
62
|
+
elsif browser_type!='safari'
|
63
|
+
puts "\nOops... not supported browser"
|
64
|
+
print_error_ios_app_web
|
65
|
+
Process.exit(0)
|
66
|
+
end
|
67
|
+
end
|
68
|
+
|
69
|
+
# print error for ios app
|
70
|
+
def print_error_ios_app
|
71
|
+
puts "\nTo run test on iOS App"
|
72
|
+
puts "\n Usage : cucumber PLATFORM=iOS APP_PATH=path/to/app"
|
73
|
+
end
|
74
|
+
|
75
|
+
# print error for ios web
|
76
|
+
def print_error_ios_web
|
77
|
+
puts "\nTo run test on iOS mobile web"
|
78
|
+
puts "\n Usage : cucumber PLATFORM=iOS BROWSER=safari"
|
79
|
+
end
|
80
|
+
|
81
|
+
# print error if invalid platform
|
82
|
+
def print_invalid_platform
|
83
|
+
puts "\nOops... Invalid Platform"
|
84
|
+
puts "\nSupported platform are \"android\" and \"iOS\"."
|
85
|
+
puts "\nTo run on Desktop no need to mention platform."
|
86
|
+
Process.exit(0)
|
87
|
+
end
|