rwebunit 0.2.0 → 0.7.2

Sign up to get free protection for your applications and to get access to all the features.
data/CHANGELOG CHANGED
@@ -1,35 +1,110 @@
1
- CHANGELOG
2
- =========
3
-
4
- == 0.2.0
5
-
6
- Added wait_ajax
7
- ?Reuse IE instance cross testcases
8
-
9
- == 0.1.1
10
-
11
- New jWebUnit API methods implemented:
12
- assertOptionEquals(selectName, optionLabel)
13
- assertOptionValueEquals(selectName, optionValue)
14
- assertCheckboxNotSelected(checkBoxName)
15
- assertCheckboxSelected(checkBoxName)
16
- assertLinkPresentWithExactText(linkText)
17
- assertLinkNotPresentWithExactText(linkText)
18
- assertRadioOptionNotPresent(radioGroup, radioOption)
19
- assertRadioOptionPresent(radioGroup, radioOption)
20
- assertRadioOptionSelected(radioGroup, radioOption)
21
- assertRadioOptionNotSelected(radioGroup, radioOption)
22
- assertTextInTable(tableId, text)
23
- assertTextNotInTable(tableId, text)
24
-
25
- API methods modified:
26
- assertLinkPresentWithText(linkText):
27
- assertLinkNotPresentWithText(linkText):
28
-
29
- New rWebUnit API :
30
- clickRadioOption(radioGroup, radioOption): this method is protected in jWebUnit
31
-
32
- == 0.1.0
33
-
34
- * Initial release.
35
- * Most common web actions and assertions implemented.
1
+ CHANGELOG
2
+ =========
3
+
4
+ == 0.7.2 (2007-12-31)
5
+ - Change dependency from Watir => Watir or FireWatir
6
+ Now can run on Mac or Linux
7
+
8
+ == 0.7.1 (2007-12-24)
9
+ - Fixes error when firefox is not available
10
+
11
+ == 0.7 (2007-12-18)
12
+ - support Firefox using FireWatir
13
+
14
+ == 0.6.9
15
+ - add shall_not_allow
16
+ - more watir wrapper methods
17
+
18
+ == 0.6.4 (2007-11-30)
19
+ - updated rwebunit 0.6.4
20
+ - support javascript window
21
+ - support watir td, tr...
22
+
23
+ == 0.6.0 (2007-11-18)
24
+ - support watir convenient methods
25
+
26
+ == 0.5.4 (2007-11-12)
27
+ - fixed element_by_id
28
+
29
+ == 0.5.3 (2007-11-07)
30
+ - fixed ajax_wait_element with web_tester changes
31
+ - added wait_for_element
32
+
33
+ == 0.5.2 (2007-09-27)
34
+ - added element_text
35
+
36
+ == 0.5.1 (2007-09-21)
37
+ - add wrap of Watir methods, such as buttons, button(...)
38
+ - expose Watir low level methods to test/spec through Driver.rb
39
+ - removed old way using array and comparision to access individual control
40
+ - renamed html_title to page_title
41
+ - add method contains_text
42
+ - make faster checkbox operations
43
+ - make faster radio operations
44
+ - added radio opration in driver.rb
45
+ - renamed ajax_wait_for_element
46
+ - added some comments
47
+
48
+ == 0.5.0
49
+ - Support Watir 1.5.2
50
+
51
+ == 0.4.5
52
+ - support checkboxes with same name
53
+
54
+ == 0.4.2
55
+
56
+ New Features
57
+ - Drop support for java syntax methods
58
+ - remove assert helper methods in web_tester
59
+ - improve support for RSpecs
60
+
61
+ == 0.4.0 (2007-05-29)
62
+
63
+ New features
64
+ - Support RSpec
65
+
66
+ == 0.3.1 (2007-04-18)
67
+
68
+ Bug fix reelase
69
+
70
+ == 0.3.0 (2007-02-16)
71
+
72
+ New features
73
+ - Deprecated Java like method name, use ruby naming convention instead, beginAt => begin_at
74
+ - More ajax related calls: ajax_wait_for_element_show, ajax_wait_for_element_hide, assert_position_in_list
75
+
76
+ == 0.2.0 (2006-11-28)
77
+
78
+ New features:
79
+ - wait_ajax_udpate(elem_id, seconds) - use indicator image id to determine whether the ajax request is completed or not
80
+ - browser_opened?
81
+
82
+ A number of general fixes and code improvements.
83
+
84
+ == 0.1.1
85
+
86
+ New jWebUnit API methods implemented:
87
+ assertOptionEquals(selectName, optionLabel)
88
+ assertOptionValueEquals(selectName, optionValue)
89
+ assertCheckboxNotSelected(checkBoxName)
90
+ assertCheckboxSelected(checkBoxName)
91
+ assertLinkPresentWithExactText(linkText)
92
+ assertLinkNotPresentWithExactText(linkText)
93
+ assertRadioOptionNotPresent(radioGroup, radioOption)
94
+ assertRadioOptionPresent(radioGroup, radioOption)
95
+ assertRadioOptionSelected(radioGroup, radioOption)
96
+ assertRadioOptionNotSelected(radioGroup, radioOption)
97
+ assertTextInTable(tableId, text)
98
+ assertTextNotInTable(tableId, text)
99
+
100
+ API methods modified:
101
+ assertLinkPresentWithText(linkText):
102
+ assertLinkNotPresentWithText(linkText):
103
+
104
+ New rWebUnit API :
105
+ clickRadioOption(radioGroup, radioOption): this method is protected in jWebUnit
106
+
107
+ == 0.1.0
108
+
109
+ * Initial release.
110
+ * Most common web actions and assertions implemented.
data/Rakefile CHANGED
@@ -9,7 +9,7 @@ $:.unshift(File.dirname(__FILE__) + "/lib")
9
9
  require 'rwebunit'
10
10
 
11
11
  desc "Default task"
12
- task :default => [ :clean, :test , :gem]
12
+ task :default => [ :clean, :test, :doc, :gem]
13
13
 
14
14
  desc "Clean generated files"
15
15
  task :clean do
@@ -36,13 +36,13 @@ Rake::RDocTask.new { |rdoc|
36
36
  spec = Gem::Specification.new do |s|
37
37
  s.platform= Gem::Platform::RUBY
38
38
  s.name = "rwebunit"
39
- s.version = "0.2.0"
40
- s.summary = "An wrap of WATIR for functional testing of web applications"
39
+ s.version = "0.7.2"
40
+ s.summary = "An wrap of WATIR/FireWatir for functional testing of web applications"
41
41
  # s.description = ""
42
42
 
43
43
  s.author = "Zhimin Zhan"
44
44
  s.email = "zhimin@zhimin.com"
45
- s.homepage= "http://www.zhimin.com/software/rwebunit/"
45
+ s.homepage= "http://code.google.com/p/rwebunit/"
46
46
  # s.rubyforge_project = ""
47
47
 
48
48
  s.has_rdoc = true
@@ -57,7 +57,8 @@ spec = Gem::Specification.new do |s|
57
57
  s.files = s.files + Dir.glob( "sample/**/*" ).delete_if { |item| item.include?( "\.svn" ) }
58
58
  s.files = s.files + Dir.glob( "docs/**/*" ).delete_if { |item| item.include?( "\.svn" ) }
59
59
 
60
- s.add_dependency("watir", ">= 1.4.1")
60
+ # s.add_dependency("watir", ">= 1.5.3")
61
+ # s.add_dependency("firewatir", ">= 1.1")
61
62
  end
62
63
 
63
64
  Rake::GemPackageTask.new(spec) do |pkg|
@@ -0,0 +1,249 @@
1
+ require 'runit/assert'
2
+
3
+ module RWebUnit
4
+ module Assert
5
+
6
+ include RUNIT::Assert
7
+
8
+ #TODO for drag-n-drop, check the postion in list
9
+ # def assert_position_in_list(list_element_id)
10
+ # raise "not implemented"
11
+ # end
12
+
13
+ ##
14
+ # text
15
+ def assert_text_present(text)
16
+ assert((@web_tester.page_source.include? text), 'expected text: ' + text + ' not found')
17
+ end
18
+
19
+ def assert_text_not_present(text)
20
+ assert(!(@web_tester.page_source.include? text), 'expected text: ' + text + ' found')
21
+ end
22
+
23
+ def assert_text_in_table(tableId, text)
24
+ elem = element_by_id(tableId)
25
+ assert_not_nil(elem, "tableId #{tableId} not exists")
26
+ assert_equal(elem.tagName.upcase, "TABLE")
27
+ puts elem.innerHTML if $DEBUG
28
+ assert(elem.innerHTML.include?(text), "the text #{text} not found in table #{tableId}")
29
+ end
30
+
31
+ def assert_text_not_in_table(tableId, text)
32
+ elem = element_by_id(tableId)
33
+ assert_equal(elem.tagName.upcase, "TABLE")
34
+ assert_not_nil(elem, "tableId #{tableId} not exists")
35
+ assert(!elem.innerHTML.include?(text), "unexpected text #{text} found in table #{tableId}")
36
+ end
37
+
38
+ def assert_element_present(elementID)
39
+ assert_not_nil(element_by_id(elementID), "element with id #{elementID} not found")
40
+ end
41
+
42
+ def assert_element_not_present(elementID)
43
+ assert_nil(element_by_id(elementID), "unexpected element with id #{elementID} found")
44
+ end
45
+
46
+ def assert_text_in_element(elementID, text)
47
+ elem = element_by_id(elementID)
48
+ assert_not_nil(elem.innerText, "element #{elementID} has no text")
49
+ assert(elem.innerText.include?(text), "the text #{text} not found in element #{elementID}")
50
+ end
51
+
52
+ ##
53
+ # Checkbox
54
+ def assert_checkbox_not_selected(checkBoxName)
55
+ @web_tester.checkboxes.each { |checkbox|
56
+ if (checkbox.name == checkBoxName) then
57
+ assert(!checkbox.isSet?, "Checkbox #{checkBoxName} checked unexpected")
58
+ end
59
+ }
60
+ end
61
+
62
+ def assert_checkbox_selected(checkBoxName)
63
+ @web_tester.checkboxes.each { |checkbox|
64
+ if (checkbox.name == checkBoxName) then
65
+ assert(checkbox.isSet?, "Checkbox #{checkBoxName} not checked")
66
+ end
67
+ }
68
+ end
69
+
70
+ ##
71
+ # select
72
+ def assert_option_value_not_present(selectName, optionValue)
73
+ @web_tester.select_lists.each { |select|
74
+ continue unless select.name == selectName
75
+ select.o.each do |option| # items in the list
76
+ assert(!(option.value == optionValue), "unexpected select option: #{optionValue} for #{selectName} found")
77
+ end
78
+ }
79
+ end
80
+
81
+ def assert_option_not_present(selectName, optionLabel)
82
+ @web_tester.select_lists.each { |select|
83
+ next unless select.name == selectName
84
+ select.o.each do |option| # items in the list
85
+ assert(!(option.text == optionLabel), "unexpected select option: #{optionLabel} for #{selectName} found")
86
+ end
87
+ }
88
+ end
89
+
90
+ def assert_option_value_present(selectName, optionValue)
91
+ @web_tester.select_lists.each { |select|
92
+ next unless select.name == selectName
93
+ select.o.each do |option| # items in the list
94
+ return if option.value == optionValue
95
+ end
96
+ }
97
+ assert(false, "can't find the combob box with value: #{optionValue}")
98
+ end
99
+
100
+ def assert_option_present(selectName, optionLabel)
101
+ @web_tester.select_lists.each { |select|
102
+ next unless select.name == selectName
103
+ select.o.each do |option| # items in the list
104
+ return if option.text == optionLabel
105
+ end
106
+ }
107
+ assert(false, "can't find the combob box: #{selectName} with value: #{optionLabel}")
108
+ end
109
+
110
+ def assert_option_equals(selectName, optionLabel)
111
+ @web_tester.select_lists.each { |select|
112
+ next unless select.name == selectName
113
+ select.o.each do |option| # items in the list
114
+ if (option.text == optionLabel) then
115
+ assert_equal(select.value, option.value, "Select #{selectName}'s value is not equal to expected option label: '#{optionLabel}'")
116
+ end
117
+ end
118
+ }
119
+ end
120
+
121
+ def assert_option_value_equals(selectName, optionValue)
122
+ @web_tester.select_lists.each { |select|
123
+ next unless select.name == selectName
124
+ assert_equal(select.value, optionValue, "Select #{selectName}'s value is not equal to expected: '#{optionValue}'")
125
+ }
126
+ end
127
+
128
+ ##
129
+ # radio
130
+
131
+ # radioGroup is the name field, radio options 'value' field
132
+ def assert_radio_option_not_present(radioGroup, radioOption)
133
+ @web_tester.radios.each { |radio|
134
+ if (radio.name == radioGroup) then
135
+ assert(!(radioOption == radio.value), "unexpected radio option: " + radioOption + " found")
136
+ end
137
+ }
138
+ end
139
+
140
+ def assert_radio_option_present(radioGroup, radioOption)
141
+ @web_tester.radios.each { |radio|
142
+ return if (radio.name == radioGroup) and (radioOption == radio.value)
143
+ }
144
+ fail("can't find the radio option : '#{radioOption}'")
145
+ end
146
+
147
+ def assert_radio_option_selected(radioGroup, radioOption)
148
+ @web_tester.radios.each { |radio|
149
+ if (radio.name == radioGroup and radioOption == radio.value) then
150
+ assert(radio.isSet?, "Radio button #{radioGroup}-[#{radioOption}] not checked")
151
+ end
152
+ }
153
+ end
154
+
155
+ def assert_radio_option_not_selected(radioGroup, radioOption)
156
+ @web_tester.radios.each { |radio|
157
+ if (radio.name == radioGroup and radioOption == radio.value) then
158
+ assert(!radio.isSet?, "Radio button #{radioGroup}-[#{radioOption}] checked unexpected")
159
+ end
160
+ }
161
+ end
162
+
163
+ ##
164
+ # Button
165
+ def assert_button_not_present(buttonId)
166
+ @web_tester.buttons.each { |button|
167
+ assert(button.id != buttonId, "unexpected button id: #{buttonId} found")
168
+ }
169
+ end
170
+
171
+ def assert_button_not_present_with_text(text)
172
+ @web_tester.buttons.each { |button|
173
+ assert(button.value != text, "unexpected button id: #{text} found")
174
+ }
175
+ end
176
+
177
+ def assert_button_present(buttonID)
178
+ @web_tester.buttons.each { |button|
179
+ return if buttonID == button.id
180
+ }
181
+ assert(false, "can't find the button with id: #{buttonID}")
182
+ end
183
+
184
+ def assert_button_present_with_text(buttonText)
185
+ @web_tester.buttons.each { |button|
186
+ return if buttonText == button.value
187
+ }
188
+ assert(false, "can't find the button with text: #{buttonText}")
189
+ end
190
+
191
+ ##
192
+ # Link
193
+ def assert_link_present_with_exact(linkText)
194
+ @web_tester.links.each { |link|
195
+ return if linkText == link.text
196
+ }
197
+ fail( "can't find the link with text: #{linkText}")
198
+ end
199
+
200
+ def assert_link_not_present_with_exact(linkText)
201
+ @web_tester.links.each { |link|
202
+ assert(linkText != link.text, "unexpected link (exact): #{linkText} found")
203
+ }
204
+ end
205
+
206
+ def assert_link_present_with_text(linkText)
207
+ @web_tester.links.each { |link|
208
+ return if link.text.include?(linkText)
209
+ }
210
+ fail( "can't find the link containing text: #{linkText}")
211
+ end
212
+
213
+ def assert_link_not_present_with_text(linkText)
214
+ @web_tester.links.each { |link|
215
+ assert(!link.Text.include?(linkText), "unexpected link containing: #{linkText} found")
216
+ }
217
+ end
218
+
219
+ def assert_text_present_in_text_field(textfieldName, text, msg = nil)
220
+ @web_tester.textfields.each { |textfield|
221
+ if (textfield.name == textfieldName) then
222
+ assert(text_field.value.include?(text), "text: #{text} not in text field: " + textfieldName)
223
+ end
224
+ }
225
+ end
226
+
227
+ # assertions
228
+ def assert_title_equals(title)
229
+ assert_equals(title, @web_tester.page_title)
230
+ end
231
+
232
+ def assert_equals(expected, actual, msg=nil)
233
+ assert(expected == actual, (msg.nil?) ? "Expected: #{expected} diff from actual: #{actual}" : msg)
234
+ end
235
+
236
+ def assert_nil(actual, msg="")
237
+ assert(actual.nil?, msg)
238
+ end
239
+
240
+ def assert_not_nil(actual, msg="")
241
+ assert(!actual.nil?, msg)
242
+ end
243
+
244
+ def fail(message)
245
+ assert(false, message)
246
+ end
247
+
248
+ end
249
+ end