selenium-cucumber 0.1.1 → 1.1.1
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 +20 -20
- data/bin/helper.rb +50 -50
- data/bin/selenium-cucumber +30 -29
- data/doc/canned_steps.md +8 -0
- data/doc/installation.md +16 -16
- data/doc/selenium-cucumber-help.md +18 -18
- data/example/Gemfile +5 -0
- data/example/Gemfile.lock +36 -0
- data/{Example/image_difference → example/features/actual_images}/test.png +0 -0
- data/{Example → example}/features/assertion_steps_Ex.feature +22 -10
- data/{Example → example}/features/click_steps_Ex.feature +0 -0
- data/{Example → example}/features/configuration_step_Ex.feature +1 -2
- data/example/features/expected_images/logo-PNG.png +0 -0
- data/example/features/expected_images/original_image.jpg +0 -0
- data/{Example/screenshots → example/features/image_difference}/test.png +0 -0
- data/{Example → example}/features/input_steps_Ex.feature +0 -0
- data/{Example → example}/features/javascript_steps_Ex.feature +0 -0
- data/{Example → example}/features/navigation_steps_Ex.feature +3 -3
- data/{Example → example}/features/progress_step_Ex.feature +0 -0
- data/{Example → example}/features/screenshot_step_Ex.feature +5 -1
- data/example/features/screenshots/test.png +0 -0
- data/{Example → example}/features/step_definitions/custom_steps.rb +0 -0
- data/{Example → example}/features/support/env.rb +0 -1
- data/{Example → example}/features/support/hooks.rb +0 -0
- data/example/run_features.rb +42 -0
- data/example/test_page.html +218 -0
- data/features-skeleton/actual_images/test.png +0 -0
- data/features-skeleton/my_first.feature +5 -5
- data/features-skeleton/step_definitions/custom_steps.rb +4 -4
- data/features-skeleton/support/env.rb +38 -38
- data/features-skeleton/support/hooks.rb +37 -33
- data/lib/selenium-cucumber.rb +2 -2
- data/lib/selenium-cucumber/assertion_steps.rb +25 -27
- data/lib/selenium-cucumber/click_elements_steps.rb +9 -12
- data/lib/selenium-cucumber/configuration_steps.rb +3 -4
- data/lib/selenium-cucumber/input_steps.rb +26 -26
- data/lib/selenium-cucumber/javascript_handling_steps.rb +3 -3
- data/lib/selenium-cucumber/methods/assertion_methods.rb +197 -160
- data/lib/selenium-cucumber/methods/click_elements_methods.rb +8 -8
- data/lib/selenium-cucumber/methods/configuration_methods.rb +10 -5
- data/lib/selenium-cucumber/methods/input_methods.rb +32 -45
- data/lib/selenium-cucumber/methods/javascript_handling_methods.rb +7 -7
- data/lib/selenium-cucumber/methods/misc_methods.rb +6 -6
- data/lib/selenium-cucumber/methods/navigate_methods.rb +37 -41
- data/lib/selenium-cucumber/methods/progress_methods.rb +8 -8
- data/lib/selenium-cucumber/methods/required_files.rb +1 -1
- data/lib/selenium-cucumber/methods/screenshot_methods.rb +3 -3
- data/lib/selenium-cucumber/navigation_steps.rb +20 -22
- data/lib/selenium-cucumber/progress_steps.rb +5 -8
- data/lib/selenium-cucumber/screenshot_steps.rb +2 -2
- data/lib/selenium-cucumber/version.rb +1 -1
- metadata +23 -27
- data/Example/expected_images/flower.png +0 -0
- data/Example/expected_images/flower1.png +0 -0
- data/Example/features/new.feature +0 -7
- data/Example/image_difference/difference_20140814210820942.png +0 -0
- data/Example/image_difference/difference_20140815095331224.png +0 -0
- data/Example/image_difference/difference_20140815100021133.png +0 -0
- data/Example/image_difference/difference_20140815100348774.png +0 -0
- data/Example/run_features.rb +0 -42
- data/Example/screenshots/screenshot20140815095553337.png +0 -0
- data/Example/screenshots/screenshot20140815100120197.png +0 -0
- data/Example/screenshots/screenshot20140815100446914.png +0 -0
- data/Example/test_page.html +0 -206
Binary file
|
File without changes
|
File without changes
|
@@ -0,0 +1,42 @@
|
|
1
|
+
require 'selenium-webdriver'
|
2
|
+
|
3
|
+
puts ARGV[0]
|
4
|
+
|
5
|
+
OS = Selenium::WebDriver::Platform.os
|
6
|
+
|
7
|
+
if ARGV.length == 0
|
8
|
+
|
9
|
+
puts "\n\n\t###### Running all features on firefox browser ######\n\n"
|
10
|
+
system('cucumber')
|
11
|
+
|
12
|
+
puts "\n\n\t###### Running all features on chrome browser ###### \n\n"
|
13
|
+
system('cucumber BROWSER=chrome')
|
14
|
+
|
15
|
+
if OS.to_s == 'windows'
|
16
|
+
puts "Running all features on internet explorer browser ###### \n\n"
|
17
|
+
system('cucumber BROWSER=ie')
|
18
|
+
elsif OS.to_s == 'mac'
|
19
|
+
puts "Running all features on safari browser ###### \n\n"
|
20
|
+
system('cucumber BROWSER=safari')
|
21
|
+
end
|
22
|
+
|
23
|
+
elsif ARGV.shift == 'html'
|
24
|
+
|
25
|
+
puts "\n\n\t###### Running all features on firefox browser ###### \n\n"
|
26
|
+
puts "Output result stored in \"result_firefox.html\""
|
27
|
+
system('cucumber -f html -o result_firefox.html')
|
28
|
+
|
29
|
+
puts "\n\n\t###### Running all features on chrome browser ###### \n\n"
|
30
|
+
puts "Output result stored in \"result_chrome.html\""
|
31
|
+
system('cucumber BROWSER=chrome -f html -o result_chrome.html')
|
32
|
+
|
33
|
+
if OS.to_s == 'windows'
|
34
|
+
puts "\n\n\t###### Running all features on internet explorer browser ###### \n\n"
|
35
|
+
puts "Output result stored in \"result_ie.html\""
|
36
|
+
system('cucumber BROWSER=ie -f html -o result_ie.html')
|
37
|
+
elsif OS.to_s == 'mac'
|
38
|
+
puts "\n\n\t###### Running all features on safari browser ###### \n\n"
|
39
|
+
puts "Output result stored in \"result_safari.html\""
|
40
|
+
system('cucumber BROWSER=safari -f html -o result_safari.html')
|
41
|
+
end
|
42
|
+
end
|
@@ -0,0 +1,218 @@
|
|
1
|
+
<!DOCTYPE html>
|
2
|
+
<html lang="en">
|
3
|
+
<head>
|
4
|
+
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
|
5
|
+
<title>Test Page for selenium-cucumber</title>
|
6
|
+
|
7
|
+
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
|
8
|
+
<script type="text/javascript">
|
9
|
+
$(function() {
|
10
|
+
$("#hiddenElement").hide();
|
11
|
+
|
12
|
+
setTimeout(function() {
|
13
|
+
$("#hiddenElement").fadeIn(1500);
|
14
|
+
}, 10000);
|
15
|
+
|
16
|
+
setTimeout(function() {
|
17
|
+
$("#disabledBt").removeAttr("disabled");
|
18
|
+
}, 20000);
|
19
|
+
});
|
20
|
+
</script>
|
21
|
+
|
22
|
+
<style>
|
23
|
+
a:hover{
|
24
|
+
background-color: yellow;
|
25
|
+
}
|
26
|
+
</style>
|
27
|
+
</head>
|
28
|
+
<body>
|
29
|
+
<script>
|
30
|
+
function showText() {
|
31
|
+
document.getElementById("msg").innerHTML = "Now button is enabled";
|
32
|
+
}
|
33
|
+
|
34
|
+
function callAlert() {
|
35
|
+
var x;
|
36
|
+
if (confirm("Press a button!") == true) {
|
37
|
+
x = "You pressed OK!";
|
38
|
+
} else {
|
39
|
+
x = "You pressed Cancel!";
|
40
|
+
}
|
41
|
+
document.getElementById("demo").innerHTML = x;
|
42
|
+
}
|
43
|
+
|
44
|
+
function doubleClick() {
|
45
|
+
document.getElementById("demo2").innerHTML = "Hello World";
|
46
|
+
}
|
47
|
+
|
48
|
+
function hovered() {
|
49
|
+
alert("Mouse hovered")
|
50
|
+
}
|
51
|
+
</script>
|
52
|
+
<form id="frm" action="" method="post">
|
53
|
+
<fieldset>
|
54
|
+
<legend class="form_name">Simple sample form with input elements</legend>
|
55
|
+
<p>
|
56
|
+
<label for="dummy0">Text input (first name)</label><br>
|
57
|
+
<input type="text" class="fname_class" name="fname_name" id="f_name" value="">
|
58
|
+
</p>
|
59
|
+
|
60
|
+
<p>
|
61
|
+
<label for="dummy1">Text input (last name)</label><br>
|
62
|
+
<input type="text" class="lname_class" id="l_name" name="lname_name" value="">
|
63
|
+
</p>
|
64
|
+
|
65
|
+
<p>
|
66
|
+
<label for="dummy1">Disabled field</label><br>
|
67
|
+
<input type="text" class="df_class" id="df_id" name="df_name" value="" disabled>
|
68
|
+
</p>
|
69
|
+
|
70
|
+
<p>
|
71
|
+
<label for="dummy2">Textarea (address)</label><br>
|
72
|
+
<textarea name="dummy2" id="address" class="address_class" rows="3" cols="20" value=""></textarea>
|
73
|
+
</p>
|
74
|
+
|
75
|
+
<p>
|
76
|
+
<label for="dummy3">A password field (password)</label><br>
|
77
|
+
<input type="password" class="cls_pwd" id="pwd" name="nm_pwd" value="">
|
78
|
+
</p>
|
79
|
+
|
80
|
+
<p>
|
81
|
+
<label for="dummy4">radio button group (Gender)</label><br>
|
82
|
+
<input type="radio" name="radio_gender" value="M">Male</input>
|
83
|
+
<input type="radio" name="radio_gender" value="F">Female</input>
|
84
|
+
</p>
|
85
|
+
|
86
|
+
<p>
|
87
|
+
<input type="submit" value="Submit" id="submit" name="btn_submit" >
|
88
|
+
<input type="reset" value="Reset" id="reset" name="btn_reset">
|
89
|
+
<input type="button" value="disabledBt" id="disabledBt_id" name="disabledBt_name" disabled>
|
90
|
+
</p>
|
91
|
+
</fieldset>
|
92
|
+
</form>
|
93
|
+
|
94
|
+
<br>
|
95
|
+
|
96
|
+
<fieldset>
|
97
|
+
<legend>Multiselect dropdown</legend>
|
98
|
+
<p>
|
99
|
+
<select name="cars" multiple>
|
100
|
+
<option value="volvo">Volvo</option>
|
101
|
+
<option value="saab">Saab</option>
|
102
|
+
<option value="opel">Opel</option>
|
103
|
+
<option value="audi">Audi</option>
|
104
|
+
</select>
|
105
|
+
</p>
|
106
|
+
</fieldset>
|
107
|
+
|
108
|
+
<br>
|
109
|
+
|
110
|
+
<fieldset>
|
111
|
+
<legend>Dropdown lists</legend>
|
112
|
+
<p>
|
113
|
+
<label for="dummy3">Select field</label><br>
|
114
|
+
<select id="dropdownList1" name="name_select1" value="Please select your choice select">
|
115
|
+
<option value="s1">Select_1</option>
|
116
|
+
<option value="s2">Select_2</option>
|
117
|
+
<option value="s3" selected>Select_3</option>
|
118
|
+
<option value="s4">Select_4</option>
|
119
|
+
<option value="s5">Select_5</option>
|
120
|
+
</select>
|
121
|
+
</p>
|
122
|
+
</fieldset>
|
123
|
+
|
124
|
+
<br>
|
125
|
+
|
126
|
+
<fieldset>
|
127
|
+
<legend>Radio Buttons </legend>
|
128
|
+
<p>
|
129
|
+
<input type="radio" id="rdb1" name="rdb1_name" class="rdb1_class" checked> Radio one<br>
|
130
|
+
<input type="radio" id="rdb2" name="rdb2_name" class="rdb2_class"> Radio two<br>
|
131
|
+
<input type="radio" id="rdb3" name="rdb3_name" class="rdb3_class"> Radio three<br>
|
132
|
+
<input type="radio" id="rdb4" name="rdb4_name" class="rdb4_class"> Radio four<br>
|
133
|
+
<input type="radio" id="rdb5" name="rdb5_name" class="rdb5_class" checked> Radio five<br>
|
134
|
+
</p>
|
135
|
+
</fieldset>
|
136
|
+
|
137
|
+
<br>
|
138
|
+
|
139
|
+
<fieldset>
|
140
|
+
<legend>Checkbox </legend>
|
141
|
+
<p>
|
142
|
+
<input type="checkbox" id="chk1" name="chk1_name" class="chk1_class" checked> Check one<br>
|
143
|
+
<input type="checkbox" id="chk2" name="chk2_name" class="chk2_class"> Check two<br>
|
144
|
+
<input type="checkbox" id="chk3" name="chk3_name" class="chk3_class"> Check three<br>
|
145
|
+
<input type="checkbox" id="chk4" name="chk4_name" class="chk4_class"> Check four<br>
|
146
|
+
<input type="checkbox" id="chk5" name="chk5_name" class="chk5_class" checked> Check five<br>
|
147
|
+
</p>
|
148
|
+
</fieldset>
|
149
|
+
|
150
|
+
<br>
|
151
|
+
|
152
|
+
<fieldset>
|
153
|
+
<legend>Display element after 10 sec</legend>
|
154
|
+
<div id="hiddenElement" name="he_name" class="he_class">This showed after 10 sec</div>
|
155
|
+
</fieldset>
|
156
|
+
|
157
|
+
<br>
|
158
|
+
|
159
|
+
<fieldset>
|
160
|
+
<legend>Enable Button after 10 sec</legend>
|
161
|
+
<input type="button" value="Button" id="disabledBt" onclick="showText()" disabled>
|
162
|
+
<p id="msg"></p>
|
163
|
+
</fieldset>
|
164
|
+
|
165
|
+
<br>
|
166
|
+
|
167
|
+
<fieldset>
|
168
|
+
<legend>Images - valid</legend>
|
169
|
+
JPG image <img id="img1" src="http://s27.postimg.org/xlqzpviyr/original_image.jpg" alt="Image one">
|
170
|
+
PNG image <img id="img2" src="http://s26.postimg.org/itpfqlcop/logo1.png" alt="Image one">
|
171
|
+
</fieldset>
|
172
|
+
|
173
|
+
<br>
|
174
|
+
|
175
|
+
<fieldset>
|
176
|
+
<legend>Images - Invalid</legend>
|
177
|
+
JPG image <img id="img1_incorrect" src="http://s27.postimg.org/kkehri9c3/original_image.jpg" alt="Image one">
|
178
|
+
PNG image <img id="img2_incorrect" src="http://s28.postimg.org/kjqls15el/logo_incorrect.png" alt="Image one">
|
179
|
+
</fieldset>
|
180
|
+
|
181
|
+
<br>
|
182
|
+
|
183
|
+
<fieldset>
|
184
|
+
<legend>Links</legend>
|
185
|
+
<p>
|
186
|
+
<a href="https://rubygems.org/gems/selenium-cucumber">selenium-cucumber gem</a> <br>
|
187
|
+
<a href="http://seleniumcucumber.wordpress.com/" onclick="window.open('http://seleniumcucumber.wordpress.com/', 'newwindow', 'width=500, height=500'); return false;">selenium-cucumber website</a> <br>
|
188
|
+
<a href="https://github.com/sameer49/selenium-cucumber/blob/master/doc/canned_steps.md">Predefined-steps</a>
|
189
|
+
</p>
|
190
|
+
</fieldset>
|
191
|
+
|
192
|
+
<br>
|
193
|
+
|
194
|
+
<fieldset>
|
195
|
+
<legend>Mous hover</legend>
|
196
|
+
<button id="pop_alert" onmouseover="hovered()">Hover It</button>
|
197
|
+
</fieldset>
|
198
|
+
|
199
|
+
<br>
|
200
|
+
|
201
|
+
<fieldset>
|
202
|
+
<legend>Javascript alert</legend>
|
203
|
+
<p name="javascript_alert_msg">Click the button to display a confirm box.</p>
|
204
|
+
<button id="try_it" onclick="callAlert()">Try it</button>
|
205
|
+
<p id="demo">this is demo line</p>
|
206
|
+
</p>
|
207
|
+
</fieldset>
|
208
|
+
|
209
|
+
<br>
|
210
|
+
|
211
|
+
<fieldset>
|
212
|
+
<legend>Double click here</legend>
|
213
|
+
<p id="dbClick" ondblclick="doubleClick()">Double-click this paragraph to trigger a function.</p>
|
214
|
+
<p id="demo2" name="demo2_name"></p>
|
215
|
+
</p>
|
216
|
+
</fieldset>
|
217
|
+
</body>
|
218
|
+
</html>
|
Binary file
|
@@ -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,38 +1,38 @@
|
|
1
|
-
require 'rubygems'
|
2
|
-
require 'selenium-webdriver'
|
3
|
-
|
4
|
-
def print_error
|
5
|
-
puts "\nInappropraite browser \"#{ENV['BROWSER']}\""
|
6
|
-
puts "\nUsage : cucumber BROWSER=browser_name"
|
7
|
-
puts "\nbrowser_name can be one of following :"
|
8
|
-
puts "1.ie\n2.chrome\n3.ff\n4.safari\n5.opera"
|
9
|
-
puts "\nNow using default browser \"Firefox\""
|
10
|
-
end
|
11
|
-
|
12
|
-
case ENV['BROWSER']
|
13
|
-
when 'ie'
|
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
|
29
|
-
|
30
|
-
|
31
|
-
begin
|
32
|
-
$driver = Selenium::WebDriver.for(browser_type)
|
33
|
-
$driver.manage().window().maximize()
|
34
|
-
|
35
|
-
rescue Exception => e
|
36
|
-
puts e.message
|
37
|
-
end
|
38
|
-
|
1
|
+
require 'rubygems'
|
2
|
+
require 'selenium-webdriver'
|
3
|
+
|
4
|
+
def print_error
|
5
|
+
puts "\nInappropraite browser \"#{ENV['BROWSER']}\""
|
6
|
+
puts "\nUsage : cucumber BROWSER=browser_name"
|
7
|
+
puts "\nbrowser_name can be one of following :"
|
8
|
+
puts "1.ie\n2.chrome\n3.ff\n4.safari\n5.opera"
|
9
|
+
puts "\nNow using default browser \"Firefox\""
|
10
|
+
end
|
11
|
+
|
12
|
+
case ENV['BROWSER']
|
13
|
+
when 'ie'
|
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
|
29
|
+
|
30
|
+
|
31
|
+
begin
|
32
|
+
$driver = Selenium::WebDriver.for(browser_type)
|
33
|
+
$driver.manage().window().maximize()
|
34
|
+
|
35
|
+
rescue Exception => e
|
36
|
+
puts e.message
|
37
|
+
end
|
38
|
+
|
@@ -1,34 +1,38 @@
|
|
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
|
-
|
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
|
+
end
|
16
|
+
|
17
|
+
After do |scenario|
|
18
|
+
# Do something after each scenario.
|
19
|
+
# The +scenario+ argument is optional, but
|
20
|
+
# if you use it, you can inspect status with
|
21
|
+
# the #failed?, #passed? and #exception methods.
|
22
|
+
|
23
|
+
if(scenario.failed?)
|
24
|
+
#Do something if scenario fails.
|
25
|
+
end
|
26
|
+
end
|
27
|
+
|
28
|
+
#Tagged hooks
|
29
|
+
|
30
|
+
Before('@Ex_tag1, @Ex_tag2') do
|
31
|
+
# This will only run before scenarios tagged
|
32
|
+
# with @cucumis OR @sativus.
|
33
|
+
end
|
34
|
+
|
35
|
+
AfterStep('@Ex_tag1, @Ex_tag2') do
|
36
|
+
# This will only run after steps within scenarios tagged
|
37
|
+
# with @cucumis AND @sativus.
|
34
38
|
end
|