selenium-cucumber 2.1.4 → 3.1.4
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/bin/generate.rb +19 -20
- data/bin/helper.rb +50 -50
- data/bin/selenium-cucumber +29 -30
- data/doc/canned_steps.md +656 -656
- data/doc/installation.md +16 -16
- data/doc/selenium-cucumber-API.md +120 -120
- data/doc/selenium-cucumber-help.md +18 -18
- data/features-skeleton/my_first.feature +5 -5
- data/features-skeleton/step_definitions/custom_steps.rb +4 -4
- data/features-skeleton/support/env.rb +51 -51
- data/features-skeleton/support/hooks.rb +47 -38
- data/lib/selenium-cucumber.rb +1 -1
- data/lib/selenium-cucumber/assertion_steps.rb +89 -89
- data/lib/selenium-cucumber/click_elements_steps.rb +36 -36
- data/lib/selenium-cucumber/configuration_steps.rb +6 -6
- data/lib/selenium-cucumber/input_steps.rb +69 -69
- data/lib/selenium-cucumber/javascript_handling_steps.rb +9 -9
- data/lib/selenium-cucumber/methods/assertion_methods.rb +295 -344
- data/lib/selenium-cucumber/methods/click_elements_methods.rb +23 -23
- data/lib/selenium-cucumber/methods/configuration_methods.rb +35 -35
- data/lib/selenium-cucumber/methods/error_handling_methods.rb +86 -86
- data/lib/selenium-cucumber/methods/input_methods.rb +67 -67
- data/lib/selenium-cucumber/methods/javascript_handling_methods.rb +9 -9
- data/lib/selenium-cucumber/methods/misc_methods.rb +34 -34
- data/lib/selenium-cucumber/methods/mobile_methods.rb +241 -241
- data/lib/selenium-cucumber/methods/navigate_methods.rb +165 -165
- data/lib/selenium-cucumber/methods/progress_methods.rb +15 -15
- data/lib/selenium-cucumber/methods/required_files.rb +10 -10
- data/lib/selenium-cucumber/methods/screenshot_methods.rb +6 -6
- data/lib/selenium-cucumber/mobile_steps.rb +99 -99
- data/lib/selenium-cucumber/navigation_steps.rb +105 -105
- data/lib/selenium-cucumber/progress_steps.rb +18 -18
- data/lib/selenium-cucumber/screenshot_steps.rb +5 -5
- data/lib/selenium-cucumber/version.rb +5 -5
- metadata +69 -91
- data/example/android/android_app/HinduCalendar.zip +0 -0
- data/example/android/android_app/HinduCalendar/HinduCalendar.apk +0 -0
- data/example/android/android_app/HinduCalendar/README.md +0 -19
- data/example/android/android_app/HinduCalendar/Results.html +0 -472
- data/example/android/android_app/HinduCalendar/features/01_HC_homepage_menu_validation.feature +0 -36
- data/example/android/android_app/HinduCalendar/features/02_HC_homepage_menu_navigation.feature +0 -71
- data/example/android/android_app/HinduCalendar/features/03_HC_Create_Save_View_Delete_Kundali.feature +0 -63
- data/example/android/android_app/HinduCalendar/features/actual_images/test.png +0 -0
- data/example/android/android_app/HinduCalendar/features/expected_images/test.png +0 -0
- data/example/android/android_app/HinduCalendar/features/image_difference/test.png +0 -0
- data/example/android/android_app/HinduCalendar/features/my_first.feature +0 -1
- data/example/android/android_app/HinduCalendar/features/screenshots/test.png +0 -0
- data/example/android/android_app/HinduCalendar/features/step_definitions/01_HC_homepage_menu_validation.rb +0 -81
- data/example/android/android_app/HinduCalendar/features/step_definitions/02_HC_homepage_menu_navigation.rb +0 -132
- data/example/android/android_app/HinduCalendar/features/step_definitions/03_HC_Create_Save_View_Delete_Kundali.rb +0 -413
- data/example/android/android_app/HinduCalendar/features/step_definitions/custom_steps.rb +0 -5
- data/example/android/android_app/HinduCalendar/features/support/env.rb +0 -51
- data/example/android/android_app/HinduCalendar/features/support/hooks.rb +0 -38
- data/example/android/android_app/android_app_calculator.zip +0 -0
- data/example/android/android_app/android_app_calculator/AndroidCalculator.apk +0 -0
- data/example/android/android_app/android_app_calculator/features/actual_images/test.png +0 -0
- data/example/android/android_app/android_app_calculator/features/calculator.feature +0 -36
- data/example/android/android_app/android_app_calculator/features/expected_images/test.png +0 -0
- data/example/android/android_app/android_app_calculator/features/image_difference/test.png +0 -0
- data/example/android/android_app/android_app_calculator/features/my_first.feature +0 -13
- data/example/android/android_app/android_app_calculator/features/screenshots/test.png +0 -0
- data/example/android/android_app/android_app_calculator/features/step_definitions/custom_steps.rb +0 -5
- data/example/android/android_app/android_app_calculator/features/support/env.rb +0 -51
- data/example/android/android_app/android_app_calculator/features/support/hooks.rb +0 -38
- data/example/android/android_web/android_web_gmail_login.zip +0 -0
- data/example/android/android_web/android_web_gmail_login/features/actual_images/test.png +0 -0
- data/example/android/android_web/android_web_gmail_login/features/expected_images/test.png +0 -0
- data/example/android/android_web/android_web_gmail_login/features/gmail_login.feature +0 -12
- data/example/android/android_web/android_web_gmail_login/features/image_difference/test.png +0 -0
- data/example/android/android_web/android_web_gmail_login/features/my_first.feature +0 -1
- data/example/android/android_web/android_web_gmail_login/features/screenshots/test.png +0 -0
- data/example/android/android_web/android_web_gmail_login/features/step_definitions/custom_steps.rb +0 -5
- data/example/android/android_web/android_web_gmail_login/features/support/env.rb +0 -51
- data/example/android/android_web/android_web_gmail_login/features/support/hooks.rb +0 -38
- data/example/desktop web/desktop_web_gmail_login.zip +0 -0
- data/example/desktop web/desktop_web_gmail_login/features/actual_images/test.png +0 -0
- data/example/desktop web/desktop_web_gmail_login/features/expected_images/test.png +0 -0
- data/example/desktop web/desktop_web_gmail_login/features/gmail_login.feature +0 -10
- data/example/desktop web/desktop_web_gmail_login/features/gmail_multi_login.feature +0 -22
- data/example/desktop web/desktop_web_gmail_login/features/image_difference/test.png +0 -0
- data/example/desktop web/desktop_web_gmail_login/features/my_first.feature +0 -1
- data/example/desktop web/desktop_web_gmail_login/features/result.html b/data/example/desktop → web/desktop_web_gmail_login/features/result.html +0 -0
- data/example/desktop web/desktop_web_gmail_login/features/screenshots/test.png +0 -0
- data/example/desktop web/desktop_web_gmail_login/features/step_definitions/custom_steps.rb +0 -5
- data/example/desktop web/desktop_web_gmail_login/features/support/env.rb +0 -51
- data/example/desktop web/desktop_web_gmail_login/features/support/hooks.rb +0 -38
- data/example/desktop web/desktop_web_gmail_login/result.html +0 -478
data/doc/installation.md
CHANGED
|
@@ -1,16 +1,16 @@
|
|
|
1
|
-
Installation
|
|
2
|
-
============
|
|
3
|
-
### Prerequisites
|
|
4
|
-
You need to have Ruby installed.
|
|
5
|
-
Verify your installation by running ruby -v in a terminal - it should print "ruby 1.9.3" (or higher).
|
|
6
|
-
|
|
7
|
-
You need to have DevKit installed.
|
|
8
|
-
|
|
9
|
-
You can get Ruby and DevKit from [RubyInstaller.org](http://rubyinstaller.org/)
|
|
10
|
-
|
|
11
|
-
### Installation
|
|
12
|
-
|
|
13
|
-
Install `selenium-cucumber` gem by running
|
|
14
|
-
|
|
15
|
-
- `gem install selenium-cucumber`
|
|
16
|
-
|
|
1
|
+
Installation
|
|
2
|
+
============
|
|
3
|
+
### Prerequisites
|
|
4
|
+
You need to have Ruby installed.
|
|
5
|
+
Verify your installation by running ruby -v in a terminal - it should print "ruby 1.9.3" (or higher).
|
|
6
|
+
|
|
7
|
+
You need to have DevKit installed.
|
|
8
|
+
|
|
9
|
+
You can get Ruby and DevKit from [RubyInstaller.org](http://rubyinstaller.org/)
|
|
10
|
+
|
|
11
|
+
### Installation
|
|
12
|
+
|
|
13
|
+
Install `selenium-cucumber` gem by running
|
|
14
|
+
|
|
15
|
+
- `gem install selenium-cucumber`
|
|
16
|
+
|
|
@@ -1,121 +1,121 @@
|
|
|
1
|
-
Selenium-Cucumber Ruby API's
|
|
2
|
-
============================
|
|
3
|
-
|
|
4
|
-
If you are writing code for your custom steps you can use the following methods :
|
|
5
|
-
|
|
6
|
-
Note : For some of the API paramtere values are fixed. Such values for paramaters are mentioned below.
|
|
7
|
-
|
|
8
|
-
Navigation API's
|
|
9
|
-
----------------
|
|
10
|
-
|
|
11
|
-
navigate_to("link")
|
|
12
|
-
|
|
13
|
-
navigate(direction) # direction => "back" / "forward"
|
|
14
|
-
|
|
15
|
-
close_driver()
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
Browser Interaction API's
|
|
19
|
-
-------------------------
|
|
20
|
-
|
|
21
|
-
resize_browser(width, height)
|
|
22
|
-
|
|
23
|
-
scroll_page(to) # to => "top" / "end"
|
|
24
|
-
|
|
25
|
-
scroll_to_element(by, access_value)
|
|
26
|
-
|
|
27
|
-
zoom_in_out(in_out) # in_out => "add" / "subtract"
|
|
28
|
-
|
|
29
|
-
zoom_in_out_till_element_display(by, in_out, access_value) # in_out => "add" / "subtract"
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
Input API's
|
|
33
|
-
------------
|
|
34
|
-
|
|
35
|
-
click(by, access_value)
|
|
36
|
-
|
|
37
|
-
double_click(access_type,access_value)
|
|
38
|
-
|
|
39
|
-
click_forcefully(access_type, access_name)
|
|
40
|
-
|
|
41
|
-
submit(by, access_value)
|
|
42
|
-
|
|
43
|
-
enter_text(by, text, access_value)
|
|
44
|
-
|
|
45
|
-
clear_text(by, access_value)
|
|
46
|
-
|
|
47
|
-
check_checkbox(by, access_value)
|
|
48
|
-
|
|
49
|
-
uncheck_checkbox(by, access_value)
|
|
50
|
-
|
|
51
|
-
toggle_checkbox(by, access_value)
|
|
52
|
-
|
|
53
|
-
select_radio_button(by, access_value)
|
|
54
|
-
|
|
55
|
-
get_page_title()
|
|
56
|
-
|
|
57
|
-
get_element_text(by, access_value)
|
|
58
|
-
|
|
59
|
-
get_element_attribute(by, access_value, attribute)
|
|
60
|
-
|
|
61
|
-
is_element_enabled(by, access_value)
|
|
62
|
-
|
|
63
|
-
is_element_displayed(by, access_value)
|
|
64
|
-
|
|
65
|
-
hover_over_element(by, access_value)
|
|
66
|
-
|
|
67
|
-
by => "locators type" ("id", "name", "class", "xpath", "css")
|
|
68
|
-
|
|
69
|
-
access_value => "locator value"
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
Javascript Handling API
|
|
73
|
-
-----------------------
|
|
74
|
-
|
|
75
|
-
handle_alert(decision) # decision => "accept" / "dismiss"
|
|
76
|
-
|
|
77
|
-
get_alert_text
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
Progress API's
|
|
81
|
-
--------------
|
|
82
|
-
|
|
83
|
-
wait(time_in_sec)
|
|
84
|
-
|
|
85
|
-
wait_for_element_to_display(by, access_value, duration)
|
|
86
|
-
|
|
87
|
-
wait_for_element_to_enable(by, access_value, duration)
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
by => "locators type" ("id", "name", "class", "xpath", "css")
|
|
91
|
-
|
|
92
|
-
access_value => "locator value"
|
|
93
|
-
|
|
94
|
-
duration => duration in seconds.
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
Image Comparing API
|
|
98
|
-
-------------------
|
|
99
|
-
|
|
100
|
-
does_images_similar?(actual_img_by, actual_img_access_value, excp_img_by, excp_img_access_value)
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
actual_img_by => "element locators" ("id", "name", "class", "xpath", "css", "url")
|
|
104
|
-
|
|
105
|
-
actual_img_access_value => "locator value"
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
excp_img_by => "image location" ("id", "url", "image_name")
|
|
109
|
-
|
|
110
|
-
excp_img_access_value => "value"
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
Screenshot API
|
|
114
|
-
--------------
|
|
115
|
-
take_screenshots
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
Configuration API
|
|
119
|
-
-----------------
|
|
120
|
-
|
|
1
|
+
Selenium-Cucumber Ruby API's
|
|
2
|
+
============================
|
|
3
|
+
|
|
4
|
+
If you are writing code for your custom steps you can use the following methods :
|
|
5
|
+
|
|
6
|
+
Note : For some of the API paramtere values are fixed. Such values for paramaters are mentioned below.
|
|
7
|
+
|
|
8
|
+
Navigation API's
|
|
9
|
+
----------------
|
|
10
|
+
|
|
11
|
+
navigate_to("link")
|
|
12
|
+
|
|
13
|
+
navigate(direction) # direction => "back" / "forward"
|
|
14
|
+
|
|
15
|
+
close_driver()
|
|
16
|
+
|
|
17
|
+
|
|
18
|
+
Browser Interaction API's
|
|
19
|
+
-------------------------
|
|
20
|
+
|
|
21
|
+
resize_browser(width, height)
|
|
22
|
+
|
|
23
|
+
scroll_page(to) # to => "top" / "end"
|
|
24
|
+
|
|
25
|
+
scroll_to_element(by, access_value)
|
|
26
|
+
|
|
27
|
+
zoom_in_out(in_out) # in_out => "add" / "subtract"
|
|
28
|
+
|
|
29
|
+
zoom_in_out_till_element_display(by, in_out, access_value) # in_out => "add" / "subtract"
|
|
30
|
+
|
|
31
|
+
|
|
32
|
+
Input API's
|
|
33
|
+
------------
|
|
34
|
+
|
|
35
|
+
click(by, access_value)
|
|
36
|
+
|
|
37
|
+
double_click(access_type,access_value)
|
|
38
|
+
|
|
39
|
+
click_forcefully(access_type, access_name)
|
|
40
|
+
|
|
41
|
+
submit(by, access_value)
|
|
42
|
+
|
|
43
|
+
enter_text(by, text, access_value)
|
|
44
|
+
|
|
45
|
+
clear_text(by, access_value)
|
|
46
|
+
|
|
47
|
+
check_checkbox(by, access_value)
|
|
48
|
+
|
|
49
|
+
uncheck_checkbox(by, access_value)
|
|
50
|
+
|
|
51
|
+
toggle_checkbox(by, access_value)
|
|
52
|
+
|
|
53
|
+
select_radio_button(by, access_value)
|
|
54
|
+
|
|
55
|
+
get_page_title()
|
|
56
|
+
|
|
57
|
+
get_element_text(by, access_value)
|
|
58
|
+
|
|
59
|
+
get_element_attribute(by, access_value, attribute)
|
|
60
|
+
|
|
61
|
+
is_element_enabled(by, access_value)
|
|
62
|
+
|
|
63
|
+
is_element_displayed(by, access_value)
|
|
64
|
+
|
|
65
|
+
hover_over_element(by, access_value)
|
|
66
|
+
|
|
67
|
+
by => "locators type" ("id", "name", "class", "xpath", "css")
|
|
68
|
+
|
|
69
|
+
access_value => "locator value"
|
|
70
|
+
|
|
71
|
+
|
|
72
|
+
Javascript Handling API
|
|
73
|
+
-----------------------
|
|
74
|
+
|
|
75
|
+
handle_alert(decision) # decision => "accept" / "dismiss"
|
|
76
|
+
|
|
77
|
+
get_alert_text
|
|
78
|
+
|
|
79
|
+
|
|
80
|
+
Progress API's
|
|
81
|
+
--------------
|
|
82
|
+
|
|
83
|
+
wait(time_in_sec)
|
|
84
|
+
|
|
85
|
+
wait_for_element_to_display(by, access_value, duration)
|
|
86
|
+
|
|
87
|
+
wait_for_element_to_enable(by, access_value, duration)
|
|
88
|
+
|
|
89
|
+
|
|
90
|
+
by => "locators type" ("id", "name", "class", "xpath", "css")
|
|
91
|
+
|
|
92
|
+
access_value => "locator value"
|
|
93
|
+
|
|
94
|
+
duration => duration in seconds.
|
|
95
|
+
|
|
96
|
+
|
|
97
|
+
Image Comparing API
|
|
98
|
+
-------------------
|
|
99
|
+
|
|
100
|
+
does_images_similar?(actual_img_by, actual_img_access_value, excp_img_by, excp_img_access_value)
|
|
101
|
+
|
|
102
|
+
|
|
103
|
+
actual_img_by => "element locators" ("id", "name", "class", "xpath", "css", "url")
|
|
104
|
+
|
|
105
|
+
actual_img_access_value => "locator value"
|
|
106
|
+
|
|
107
|
+
|
|
108
|
+
excp_img_by => "image location" ("id", "url", "image_name")
|
|
109
|
+
|
|
110
|
+
excp_img_access_value => "value"
|
|
111
|
+
|
|
112
|
+
|
|
113
|
+
Screenshot API
|
|
114
|
+
--------------
|
|
115
|
+
take_screenshots
|
|
116
|
+
|
|
117
|
+
|
|
118
|
+
Configuration API
|
|
119
|
+
-----------------
|
|
120
|
+
|
|
121
121
|
print_congifugartion
|
|
@@ -1,18 +1,18 @@
|
|
|
1
|
-
|
|
2
|
-
Usage: selenium-cucumber <command-name> [parameters] [options]
|
|
3
|
-
|
|
4
|
-
<command-name> can be one of
|
|
5
|
-
help
|
|
6
|
-
gen
|
|
7
|
-
version
|
|
8
|
-
|
|
9
|
-
Commands:
|
|
10
|
-
help : prints more detailed help information.
|
|
11
|
-
|
|
12
|
-
gen : creates a skeleton features dir. This is usually used once when
|
|
13
|
-
setting up selnium-cucumber to ensure that the features folder contains
|
|
14
|
-
the right step definitions and environment to run with cucumber.
|
|
15
|
-
|
|
16
|
-
version : prints the gem version
|
|
17
|
-
|
|
18
|
-
Options: -v, --verbose Turns on verbose logging
|
|
1
|
+
|
|
2
|
+
Usage: selenium-cucumber <command-name> [parameters] [options]
|
|
3
|
+
|
|
4
|
+
<command-name> can be one of
|
|
5
|
+
help
|
|
6
|
+
gen
|
|
7
|
+
version
|
|
8
|
+
|
|
9
|
+
Commands:
|
|
10
|
+
help : prints more detailed help information.
|
|
11
|
+
|
|
12
|
+
gen : creates a skeleton features dir. This is usually used once when
|
|
13
|
+
setting up selnium-cucumber to ensure that the features folder contains
|
|
14
|
+
the right step definitions and environment to run with cucumber.
|
|
15
|
+
|
|
16
|
+
version : prints the gem version
|
|
17
|
+
|
|
18
|
+
Options: -v, --verbose Turns on verbose logging
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
Feature: Login feature
|
|
2
|
-
|
|
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"
|
|
1
|
+
Feature: Login feature
|
|
2
|
+
|
|
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"
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
require 'selenium-cucumber'
|
|
2
|
-
|
|
3
|
-
# Do Not Remove This File
|
|
4
|
-
# Add your custom steps here
|
|
1
|
+
require 'selenium-cucumber'
|
|
2
|
+
|
|
3
|
+
# Do Not Remove This File
|
|
4
|
+
# Add your custom steps here
|
|
5
5
|
# $driver is instance of webdriver use this instance to write your custom code
|
|
@@ -1,51 +1,51 @@
|
|
|
1
|
-
require 'rubygems'
|
|
2
|
-
require 'selenium-cucumber'
|
|
3
|
-
|
|
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
|
-
|
|
12
|
-
# check for valid parameters
|
|
13
|
-
validate_parameters $platform, $browser_type, $app_path
|
|
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
|
-
}
|
|
36
|
-
|
|
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}")
|
|
46
|
-
$driver.manage().window().maximize()
|
|
47
|
-
rescue Exception => e
|
|
48
|
-
puts e.message
|
|
49
|
-
Process.exit(0)
|
|
50
|
-
end
|
|
51
|
-
end
|
|
1
|
+
require 'rubygems'
|
|
2
|
+
require 'selenium-cucumber'
|
|
3
|
+
|
|
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
|
+
|
|
12
|
+
# check for valid parameters
|
|
13
|
+
validate_parameters $platform, $browser_type, $app_path
|
|
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
|
+
}
|
|
36
|
+
|
|
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}")
|
|
46
|
+
$driver.manage().window().maximize()
|
|
47
|
+
rescue Exception => e
|
|
48
|
+
puts e.message
|
|
49
|
+
Process.exit(0)
|
|
50
|
+
end
|
|
51
|
+
end
|
|
@@ -1,38 +1,47 @@
|
|
|
1
|
-
#Cucumber provides a number of hooks which allow us to run blocks at various points in the Cucumber test cycle
|
|
2
|
-
|
|
3
|
-
Before do
|
|
4
|
-
# Do something before each scenario.
|
|
5
|
-
end
|
|
6
|
-
|
|
7
|
-
Before do |scenario|
|
|
8
|
-
# The +scenario+ argument is optional, but if you use it, you can get the title,
|
|
9
|
-
# description, or name (title + description) of the scenario that is about to be
|
|
10
|
-
# executed.
|
|
11
|
-
end
|
|
12
|
-
|
|
13
|
-
After do
|
|
14
|
-
# Do something after each scenario.
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
#
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
#
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
#
|
|
38
|
-
end
|
|
1
|
+
#Cucumber provides a number of hooks which allow us to run blocks at various points in the Cucumber test cycle
|
|
2
|
+
|
|
3
|
+
Before do
|
|
4
|
+
# Do something before each scenario.
|
|
5
|
+
end
|
|
6
|
+
|
|
7
|
+
Before do |scenario|
|
|
8
|
+
# The +scenario+ argument is optional, but if you use it, you can get the title,
|
|
9
|
+
# description, or name (title + description) of the scenario that is about to be
|
|
10
|
+
# executed.
|
|
11
|
+
end
|
|
12
|
+
|
|
13
|
+
After do |scenario|
|
|
14
|
+
# Do something after each scenario.
|
|
15
|
+
# The +scenario+ argument is optional, but
|
|
16
|
+
# if you use it, you can inspect status with
|
|
17
|
+
# the #failed?, #passed? and #exception methods.
|
|
18
|
+
|
|
19
|
+
if(scenario.failed?)
|
|
20
|
+
#Do something if scenario fails.
|
|
21
|
+
end
|
|
22
|
+
end
|
|
23
|
+
|
|
24
|
+
#Tagged hooks
|
|
25
|
+
|
|
26
|
+
Before('@Ex_tag1, @Ex_tag2') do
|
|
27
|
+
# This will only run before scenarios tagged
|
|
28
|
+
# with @Ex_tag1 OR @Ex_tag2.
|
|
29
|
+
end
|
|
30
|
+
|
|
31
|
+
AfterStep('@Ex_tag1, @Ex_tag2') do |scenario|
|
|
32
|
+
# This will only run after steps within scenarios tagged
|
|
33
|
+
# with @Ex_tag1 AND @Ex_tag2.
|
|
34
|
+
end
|
|
35
|
+
|
|
36
|
+
Around('@Ex_tag1') do |scenario, block|
|
|
37
|
+
# Will round around a scenario
|
|
38
|
+
end
|
|
39
|
+
|
|
40
|
+
AfterConfiguration do |config|
|
|
41
|
+
# Will run after cucumber has been configured
|
|
42
|
+
end
|
|
43
|
+
|
|
44
|
+
# Quit the selenium driver from the example tests.
|
|
45
|
+
at_exit do
|
|
46
|
+
|
|
47
|
+
end
|