rwebunit 0.1 → 0.1.1

Sign up to get free protection for your applications and to get access to all the features.
data/CHANGELOG CHANGED
@@ -1,4 +1,28 @@
1
1
  CHANGELOG
2
+ =========
3
+
4
+ == 0.1.1
5
+
6
+ New jWebUnit API methods implemented:
7
+ assertOptionEquals(selectName, optionLabel)
8
+ assertOptionValueEquals(selectName, optionValue)
9
+ assertCheckboxNotSelected(checkBoxName)
10
+ assertCheckboxSelected(checkBoxName)
11
+ assertLinkPresentWithExactText(linkText)
12
+ assertLinkNotPresentWithExactText(linkText)
13
+ assertRadioOptionNotPresent(radioGroup, radioOption)
14
+ assertRadioOptionPresent(radioGroup, radioOption)
15
+ assertRadioOptionSelected(radioGroup, radioOption)
16
+ assertRadioOptionNotSelected(radioGroup, radioOption)
17
+ assertTextInTable(tableId, text)
18
+ assertTextNotInTable(tableId, text)
19
+
20
+ API methods modified:
21
+ assertLinkPresentWithText(linkText):
22
+ assertLinkNotPresentWithText(linkText):
23
+
24
+ New rWebUnit API :
25
+ clickRadioOption(radioGroup, radioOption): this method is protected in jWebUnit
2
26
 
3
27
  == 0.1.0
4
28
 
data/Rakefile CHANGED
@@ -37,13 +37,13 @@ Rake::RDocTask.new { |rdoc|
37
37
  spec = Gem::Specification.new do |s|
38
38
  s.platform= Gem::Platform::RUBY
39
39
  s.name = "rwebunit"
40
- s.version = "0.1"
40
+ s.version = "0.1.1"
41
41
  s.summary = "An wrap of WATIR for functional testing of web applications"
42
42
  # s.description = ""
43
43
 
44
44
  s.author = "Zhimin Zhan"
45
45
  s.email = "zhimin@zhimin.com"
46
- s.homepage= "http://www.zhimin.com/rWebUnit"
46
+ s.homepage= "http://www.zhimin.com/software/rwebunit/"
47
47
  # s.rubyforge_project = ""
48
48
 
49
49
  s.has_rdoc = true
data/docs/html/index.html CHANGED
@@ -22,11 +22,11 @@ class WatirSearchExample < Test::Unit::TestCase
22
22
  def test_search
23
23
  ie= Watir::IE.new
24
24
  ie.goto("http://www.google.com")
25
- ie.text_field( :name, " q"). set(" httpunit")
26
- ie.button( :name, " btnG"). click
27
- ie.link( :text, " HttpUnit Home"). click
28
- assert_equal(" HttpUnit Home", ie.document.title)
29
- assert( ie.contains_text(" User' s Manual"))
25
+ ie.text_field( :name, "q"). set("httpunit")
26
+ ie.button( :name, "btnG"). click
27
+ ie.link( :text, "HttpUnit Home"). click
28
+ assert_equal("HttpUnit Home", ie.document.title)
29
+ assert( ie.contains_text("User' s Manual"))
30
30
  end
31
31
 
32
32
  end
@@ -44,11 +44,11 @@ class RWebUnitSearchExample < RWebUnit::WebTestCase
44
44
  def test_search()
45
45
  getTestContext().base_url="http://www.google.com"
46
46
  beginAt("/")
47
- setFormElement(" q", " httpunit")
48
- clickButtonWithValue(" Google Search")
49
- clickLinkWithText(" HttpUnit Home")
50
- assertTitleEquals(" HttpUnit Home")
51
- assertLinkPresentWithText(" User' s Manual")
47
+ setFormElement("q", "httpunit")
48
+ clickButtonWithValue("Google Search")
49
+ clickLinkWithText("HttpUnit Home")
50
+ assertTitleEquals("HttpUnit Home")
51
+ assertLinkPresentWithText("User' s Manual")
52
52
  end
53
53
 
54
54
  end
@@ -100,21 +100,21 @@ require 'rwebunit'
100
100
 
101
101
  class RWebUnitSearchExample < RWebUnit::WebTestCase
102
102
 
103
- def initialize( name)
104
- super( name)
103
+ def initialize(name)
104
+ super(name)
105
105
  end
106
106
 
107
107
  def setup
108
- getTestContext(). setBaseUrl(" http:// www.google.com")
108
+ getTestContext().setBaseUrl("http:// www.google.com")
109
109
  end
110
110
 
111
111
  def test_search
112
112
  beginAt("/")
113
- setFormElement(" q", " httpunit")
114
- submit(" btnG")
115
- clickLinkWithText(" HttpUnit Home")
116
- assertTitleEquals(" HttpUnit Home")
117
- assertLinkPresentWithText(" User' s Manual")
113
+ setFormElement("q", "httpunit")
114
+ submit("btnG")
115
+ clickLinkWithText("HttpUnit Home")
116
+ assertTitleEquals("HttpUnit Home")
117
+ assertLinkPresentWithText("User' s Manual")
118
118
  end
119
119
  end
120
120
  </pre>
@@ -63,6 +63,14 @@ class WebTestCase < Test::Unit::TestCase
63
63
  @web_tester.assertTextNotPresent(text)
64
64
  end
65
65
 
66
+ def assertTextInTable(tableId, text)
67
+ @web_tester.assertTextInTable(tableId, text)
68
+ end
69
+
70
+ def assertTextNotInTable(tableId, text)
71
+ @web_tester.assertTextNotInTable(tableId, text)
72
+ end
73
+
66
74
  # textfields
67
75
  def setFormElement(elementName, elementValue)
68
76
  @web_tester.setFormElement(elementName, elementValue)
@@ -134,6 +142,31 @@ class WebTestCase < Test::Unit::TestCase
134
142
  @web_tester.uncheckCheckbox(checkBoxName)
135
143
  end
136
144
 
145
+ def assertCheckboxNotSelected(checkBoxName)
146
+ @web_tester.assertCheckboxNotSelected(checkBoxName)
147
+ end
148
+
149
+ def assertCheckboxSelected(checkBoxName)
150
+ @web_tester.assertCheckboxSelected(checkBoxName)
151
+ end
152
+
153
+ # radio button
154
+ def assertRadioOptionNotPresent(radioGroup, radioOption)
155
+ @web_tester.assertRadioOptionNotPresent(radioGroup, radioOption)
156
+ end
157
+
158
+ def assertRadioOptionPresent(radioGroup, radioOption)
159
+ @web_tester.assertRadioOptionPresent(radioGroup, radioOption)
160
+ end
161
+
162
+ def assertRadioOptionSelected(radioGroup, radioOption)
163
+ @web_tester.assertRadioOptionSelected(radioGroup, radioOption)
164
+ end
165
+
166
+ def assertRadioOptionNotSelected(radioGroup, radioOption)
167
+ @web_tester.assertRadioOptionNotSelected(radioGroup, radioOption)
168
+ end
169
+
137
170
  # combo box
138
171
  def selectOption(selectName, option)
139
172
  @web_tester.selectOption(selectName, option)
@@ -148,6 +181,31 @@ class WebTestCase < Test::Unit::TestCase
148
181
  @web_tester.assertElementNotPresent(elementID)
149
182
  end
150
183
 
184
+ # Wait for specific seconds for an Ajax update finish.
185
+ # Trick: In your Rails application,
186
+ # :loading => "Element.show('search_indicator');
187
+ # :complete => "Element.hide('search_indicator');
188
+ #
189
+ # <%= image_tag("indicator.gif", :id => 'search_indicator', :style => 'display:none') %>
190
+ #
191
+ # In your test case:
192
+ # wait_ajax_update(ie, 30, "search_indicator", "Indicator", "/images/indicator.gif")
193
+ # or
194
+ # wait_ajax_update(ie, 30, "search_indicator")
195
+ #
196
+ # Warning: this method has not been fully tested, if you are not using Rails, change your parameter accordingly.
197
+ #
198
+ def wait_ajax_update(ie, seconds, indicator_image_id, indicator_alt_text = "Indicator", indicator_image_url = "/images/indicator.gif")
199
+ return if seconds < 1
200
+ seconds.times do
201
+ html_content = ie.html()
202
+ indicator_image_html_fragment = '<IMG id=' + indicator_image_id + ' style="DISPLAY: none" alt=' + indicator_alt_text +' src="' + indicator_image_url + '">'
203
+ puts "checking #{indicator_image_html_fragment}" if $DEBUG
204
+ return if html_content.include? indicator_image_html_fragment
205
+ sleep 1;
206
+ end
207
+ end
208
+
151
209
  # ---
152
210
  # For deubgging
153
211
  # ---
@@ -70,19 +70,33 @@ class WebTester
70
70
  click_link_with_text(linkText)
71
71
  end
72
72
 
73
- def assertLinkPresentWithText(linkText)
73
+ def assertLinkPresentWithExactText(linkText)
74
74
  html_links.each { |link|
75
75
  return if linkText == link.text
76
76
  }
77
- assert(false, "can't find the link with text: #{linkText}")
77
+ fail( "can't find the link with text: #{linkText}")
78
+ end
79
+
80
+ def assertLinkNotPresentWithExactText(linkText)
81
+ html_links.each { |link|
82
+ assert(linkText != link.text, "unexpected link (exact): #{linkText} found")
83
+ }
84
+ end
85
+
86
+ def assertLinkPresentWithText(linkText)
87
+ html_links.each { |link|
88
+ return if link.text.include?(linkText)
89
+ }
90
+ fail( "can't find the link containing text: #{linkText}")
78
91
  end
79
92
 
80
93
  def assertLinkNotPresentWithText(linkText)
81
94
  html_links.each { |link|
82
- assert(linkText != link.text, "unexpected link: #{linkText} found")
95
+ assert(!link.Text.include?(linkText), "unexpected link containing: #{linkText} found")
83
96
  }
84
97
  end
85
98
 
99
+
86
100
  ##
87
101
  # buttons
88
102
 
@@ -147,14 +161,21 @@ class WebTester
147
161
  end
148
162
 
149
163
  def assertCheckboxNotSelected(checkBoxName)
150
- rasie
164
+ html_checkboxes.each { |checkbox|
165
+ if (checkbox.name == checkBoxName) then
166
+ assert(!checkbox.isSet?, "Checkbox #{checkBoxName} checked unexpected")
167
+ end
168
+ }
151
169
  end
152
170
 
153
171
  def assertCheckboxSelected(checkBoxName)
154
- raise
172
+ html_checkboxes.each { |checkbox|
173
+ if (checkbox.name == checkBoxName) then
174
+ assert(checkbox.isSet?, "Checkbox #{checkBoxName} not checked")
175
+ end
176
+ }
155
177
  end
156
178
 
157
-
158
179
  # combo box
159
180
  def selectOption(selectName, option)
160
181
  @@browser.select_from_combobox_with_name(selectName, option)
@@ -162,24 +183,28 @@ class WebTester
162
183
 
163
184
  def assertOptionValueNotPresent(selectName, optionValue)
164
185
  html_selects.each { |select|
186
+ continue unless select.name == selectName
165
187
  select.o.each do |option| # items in the list
166
- assert(!(select.name == selectName && option.value == optionValue), "unexpected select option: #{optionValue} for #{selectName} found")
188
+ assert(!(option.value == optionValue), "unexpected select option: #{optionValue} for #{selectName} found")
167
189
  end
168
190
  }
169
191
  end
170
192
 
171
193
  def assertOptionNotPresent(selectName, optionLabel)
172
194
  html_selects.each { |select|
195
+ next unless select.name == selectName
173
196
  select.o.each do |option| # items in the list
174
- assert(!(select.name == selectName && option.text == optionLabel), "unexpected select option: #{optionLabel} for #{selectName} found")
197
+ assert(!(option.text == optionLabel), "unexpected select option: #{optionLabel} for #{selectName} found")
175
198
  end
176
199
  }
177
200
  end
178
201
 
202
+
179
203
  def assertOptionValuePresent(selectName, optionValue)
180
204
  html_selects.each { |select|
205
+ next unless select.name == selectName
181
206
  select.o.each do |option| # items in the list
182
- return if (select.name == selectName && option.value == optionValue)
207
+ return if option.value == optionValue
183
208
  end
184
209
  }
185
210
  assert(false, "can't find the combob box with value: #{optionValue}")
@@ -187,16 +212,79 @@ class WebTester
187
212
 
188
213
  def assertOptionPresent(selectName, optionLabel)
189
214
  html_selects.each { |select|
215
+ next unless select.name == selectName
190
216
  select.o.each do |option| # items in the list
191
- return if (select.name == selectName && option.text == optionLabel)
217
+ return if option.text == optionLabel
192
218
  end
193
219
  }
194
220
  assert(false, "can't find the combob box: #{selectName} with value: #{optionLabel}")
195
221
  end
196
222
 
223
+ def assertOptionEquals(selectName, optionLabel)
224
+ html_selects.each { |select|
225
+ next unless select.name == selectName
226
+ select.o.each do |option| # items in the list
227
+ if (option.text == optionLabel) then
228
+ assert_equal(select.value, option.value, "Select #{selectName}'s value is not equal to expected option label: '#{optionLabel}'")
229
+ end
230
+ end
231
+ }
232
+ end
233
+
234
+
235
+ def assertOptionValueEquals(selectName, optionValue)
236
+ html_selects.each { |select|
237
+ next unless select.name == selectName
238
+ assert_equal(select.value, optionValue, "Select #{selectName}'s value is not equal to expected: '#{optionValue}'")
239
+ }
240
+ end
241
+
242
+
243
+ #radio
244
+
245
+ # radioGroup is the name field, radio options 'value' field
246
+ def assertRadioOptionNotPresent(radioGroup, radioOption)
247
+ html_radios.each { |radio|
248
+ if (radio.name == radioGroup) then
249
+ assert(!(radioOption == radio.value), "unexpected radio option: " + radioOption + " found")
250
+ end
251
+ }
252
+ end
253
+
254
+ def assertRadioOptionPresent(radioGroup, radioOption)
255
+ html_radios.each { |radio|
256
+ return if (radio.name == radioGroup) and (radioOption == radio.value)
257
+ }
258
+ fail("can't find the radio option : '#{radioOption}'")
259
+ end
260
+
261
+ def assertRadioOptionSelected(radioGroup, radioOption)
262
+ html_radios.each { |radio|
263
+ if (radio.name == radioGroup and radioOption == radio.value) then
264
+ assert(radio.isSet?, "Radio button #{radioGroup}-[#{radioOption}] not checked")
265
+ end
266
+ }
267
+ end
268
+
269
+ def assertRadioOptionNotSelected(radioGroup, radioOption)
270
+ html_radios.each { |radio|
271
+ if (radio.name == radioGroup and radioOption == radio.value) then
272
+ assert(!radio.isSet?, "Radio button #{radioGroup}-[#{radioOption}] checked unexpected")
273
+ end
274
+ }
275
+ end
276
+
277
+ # the method is protected in JWebUnit
278
+ def clickRadioOption(radioGroup, radioOption)
279
+ html_radios.each { |radio|
280
+ if (radio.name == radioGroup and radioOption == radio.value) then
281
+ radio.set
282
+ end
283
+ }
284
+ end
285
+
197
286
  #text
198
287
  def assertTextPresent(text)
199
- puts html_body() if $DEBUG
200
288
  assert((html_body().include? text), 'expected text: ' + text + ' not found')
201
289
  end
202
290
 
@@ -204,6 +292,22 @@ class WebTester
204
292
  assert(!(html_body().include? text), 'expected text: ' + text + ' found')
205
293
  end
206
294
 
295
+
296
+ def assertTextInTable(tableId, text)
297
+ elem = @@browser.document.getElementById(tableId)
298
+ assert_not_nil(elem, "tableId #{tableId} not exists")
299
+ assert_equal(elem.tagName, "TABLE")
300
+ puts elem.innerHTML if $DEBUG
301
+ assert(elem.innerHTML.include?(text), "the text #{text} not found in table #{tableId}")
302
+ end
303
+
304
+ def assertTextNotInTable(tableId, text)
305
+ elem = @@browser.document.getElementById(tableId)
306
+ assert_equal(elem.name.uppercase, "TABLE")
307
+ assert_not_nil(elem, "tableId #{tableId} not exists")
308
+ assert(!elem.innerHTML.include?(text), "unexpected text #{text} found in table #{tableId}")
309
+ end
310
+
207
311
  def assertElementPresent(elementID)
208
312
  elem = @@browser.document.getElementById(elementID)
209
313
  assert_not_nil(elem)
@@ -259,6 +363,14 @@ private
259
363
  @@browser.select_lists
260
364
  end
261
365
 
366
+ def html_checkboxes
367
+ @@browser.checkboxes
368
+ end
369
+
370
+ def html_radios
371
+ @@browser.radios
372
+ end
373
+
262
374
  def assert_equals(expected, actual, msg=nil)
263
375
  assert(expected == actual, (msg.nil?) ? "Expected: #{expected} diff from actual: #{actual}" : msg)
264
376
  end
@@ -272,6 +384,10 @@ private
272
384
  assert(!actual.nil?, msg)
273
385
  end
274
386
 
387
+ def fail(message)
388
+ assert(false, message)
389
+ end
390
+
275
391
  end
276
392
 
277
393
  end
data/sample/README.txt ADDED
@@ -0,0 +1,21 @@
1
+
2
+ Sample tests
3
+ ============
4
+
5
+ 1. Comparing Watir and RWebUnit:
6
+ sample_rwebunit_test.rb
7
+ sample_watir_test.rb
8
+
9
+ 2. Comparing RWebUnit and JWebUnit:
10
+ sample_rwebunit_testcase.rb
11
+
12
+ 3. A more complex single web test
13
+ rwebunit_home_test.rb
14
+
15
+ 4. An organised set of web tets against a web application, using TestCase + TestPage design:
16
+ kangxi_pages.rb
17
+ kangxi_httpcaller_webtest.rb
18
+ kangxi_xml_formatter_webtest.rb
19
+ kangxi_home_webtest.rb
20
+
21
+ Note: Kangxi is a rails web application.
@@ -0,0 +1,37 @@
1
+ #$:.unshift File.join(File.dirname(__FILE__), "..", "lib/rwebunit")
2
+
3
+ require "rwebunit"
4
+
5
+ $:.unshift File.dirname(__FILE__)
6
+ require "kangxi_pages.rb"
7
+
8
+ class TestWuning < RWebUnit::WebTestCase
9
+
10
+ def initialize(name)
11
+ super(name)
12
+ end
13
+
14
+ def setup
15
+ super
16
+ getTestContext().base_url = "http://localhost:3721"
17
+ beginAt("/home")
18
+ end
19
+
20
+ def teardown
21
+ super
22
+ closeBrowser()
23
+ end
24
+
25
+ def test_homepage_exists()
26
+ kangxi_homepage = KangxiHomePage.new(@web_tester, "Welcome")
27
+ end
28
+
29
+ def test_all_links_exist
30
+ kangxi_homepage = KangxiHomePage.new(@web_tester, "Welcome")
31
+ kangxi_homepage.assertTheListLinkPresent()
32
+ kangxi_homepage.assertDashboardLinkPresent
33
+ kangxi_homepage.assertTestCenterLinkPresent
34
+ kangxi_homepage.assertTestWebServiceLinkPresent
35
+ end
36
+
37
+ end
@@ -0,0 +1,33 @@
1
+ #$:.unshift File.join(File.dirname(__FILE__), "..", "lib/rwebunit")
2
+
3
+ require "rwebunit"
4
+
5
+ $:.unshift File.dirname(__FILE__)
6
+ require "kangxi_pages.rb"
7
+
8
+ class TestHttpCaller < RWebUnit::WebTestCase
9
+
10
+ def initialize(name)
11
+ super(name)
12
+ end
13
+
14
+ def setup
15
+ super
16
+ getTestContext().base_url = "http://localhost:3721"
17
+ beginAt("/http")
18
+ end
19
+
20
+ def teardown
21
+ super
22
+ closeBrowser()
23
+ end
24
+
25
+ def test_can_display()
26
+ kangxi_httpcaller_page = KangxiHttpCallerPage.new(@web_tester)
27
+ @web_tester.assertOptionValuePresent("method", "POST")
28
+ @web_tester.assertOptionValuePresent("method", "GET")
29
+
30
+ end
31
+
32
+
33
+ end
@@ -1,6 +1,6 @@
1
1
  require "rwebunit"
2
2
 
3
- class KongmingHomePage < RWebUnit::AbstractWebPage
3
+ class KangxiHomePage < RWebUnit::AbstractWebPage
4
4
 
5
5
  def initialize(browser, title)
6
6
  super(browser, title)
@@ -24,20 +24,15 @@ class KongmingHomePage < RWebUnit::AbstractWebPage
24
24
 
25
25
  def clickXMLFormatterLink
26
26
  @browser.clickLinkWithText("XML Formatter")
27
- KongmingXMLFormatterPage.new(@browser)
28
- end
29
-
30
- def clickHttpCallerLink
31
- @browser.clickLinkWithText("Http Caller")
32
- KongmingXMLFormatterPage.new(@browser)
27
+ KangxiXMLFormatterPage.new(@browser, "Format XML")
33
28
  end
34
29
 
35
30
  end
36
31
 
37
- class KongmingXMLFormatterPage < RWebUnit::AbstractWebPage
32
+ class KangxiXMLFormatterPage < RWebUnit::AbstractWebPage
38
33
 
39
- def initialize(browser)
40
- super(browser, "Format XML")
34
+ def initialize(browser, title)
35
+ super(browser, title)
41
36
  end
42
37
 
43
38
  def clickFillExampleLink
@@ -54,10 +49,14 @@ class KongmingXMLFormatterPage < RWebUnit::AbstractWebPage
54
49
 
55
50
  end
56
51
 
57
- class KongmingXMLFormatterPage < RWebUnit::AbstractWebPage
58
-
52
+ class KangxiHttpCallerPage < RWebUnit::AbstractWebPage
59
53
  def initialize(browser)
60
- super(browser, "Http Caller")
54
+ super(browser,"Http Caller")
61
55
  end
56
+ end
62
57
 
63
- end
58
+ class KangxiCookbookPage < RWebUnit::AbstractWebPage
59
+ def initialize(browser)
60
+ super(browser,"code recipes")
61
+ end
62
+ end
@@ -0,0 +1,44 @@
1
+ #$:.unshift File.join(File.dirname(__FILE__), "..", "lib/rwebunit")
2
+
3
+ require "rwebunit"
4
+
5
+ $:.unshift File.dirname(__FILE__)
6
+ require "kangxi_pages.rb"
7
+
8
+ class TestXmlFormatter < RWebUnit::WebTestCase
9
+
10
+ def initialize(name)
11
+ super(name)
12
+ end
13
+
14
+ def setup
15
+ super
16
+ getTestContext().base_url = "http://localhost:3721"
17
+ beginAt("/home")
18
+ kangxi_homepage = KangxiHomePage.new(@web_tester, "Welcome")
19
+ @kangxi_xmlformatter_page = kangxi_homepage.clickXMLFormatterLink
20
+ end
21
+
22
+ def teardown
23
+ super
24
+ closeBrowser()
25
+ end
26
+
27
+ def test_can_invoke_format
28
+ @kangxi_xmlformatter_page.enterXml("<name><first>James</first><last>Bond</last></name>")
29
+ @kangxi_xmlformatter_page.clickFormat
30
+ end
31
+
32
+ def test_format_sample_xml
33
+ @kangxi_xmlformatter_page.clickFillExampleLink
34
+ @web_tester.assertElementNotPresent("formatted_xml")
35
+ @kangxi_xmlformatter_page.submit
36
+ @web_tester.assertElementPresent("formatted_xml")
37
+ end
38
+
39
+ def test_can_call_utils
40
+ @kangxi_xmlformatter_page.enterXml("<date><now>" + getToday + "</now></date>")
41
+ @kangxi_xmlformatter_page.clickFormat
42
+ end
43
+
44
+ end
@@ -0,0 +1,22 @@
1
+ # the same test used in jWebUnit home page written in rWebUnit
2
+ require 'rwebunit'
3
+
4
+ class TestRWebUnitHome < RWebUnit::WebTestCase
5
+
6
+ def initialize(name)
7
+ super(name)
8
+ end
9
+
10
+ def setup
11
+ getTestContext().setBaseUrl("http://www.zhimin.com")
12
+ beginAt("/")
13
+ end
14
+
15
+ def test_rdoc()
16
+ setFormElement("q", "httpunit")
17
+ submit("btnG")
18
+ clickLinkWithText("HttpUnit Home")
19
+ assertTitleEquals("HttpUnit Home")
20
+ assertLinkPresentWithText("User's Manual")
21
+ end
22
+ end
@@ -1,3 +1,4 @@
1
+ # a sample rwebunit test check HttpUnit home page
1
2
  require 'rwebunit'
2
3
 
3
4
  class RWebUnitSearchExample < RWebUnit::WebTestCase
@@ -1,3 +1,4 @@
1
+ # a sample watir test check HttpUnit home page
1
2
  require 'watir'
2
3
  require 'test/unit'
3
4
 
metadata CHANGED
@@ -3,13 +3,13 @@ rubygems_version: 0.8.11
3
3
  specification_version: 1
4
4
  name: rwebunit
5
5
  version: !ruby/object:Gem::Version
6
- version: "0.1"
7
- date: 2006-04-11 00:00:00 +10:00
6
+ version: 0.1.1
7
+ date: 2006-05-14 00:00:00 +10:00
8
8
  summary: An wrap of WATIR for functional testing of web applications
9
9
  require_paths:
10
10
  - lib
11
11
  email: zhimin@zhimin.com
12
- homepage: http://www.zhimin.com/rWebUnit
12
+ homepage: http://www.zhimin.com/software/rwebunit/
13
13
  rubyforge_project:
14
14
  description:
15
15
  autorequire: rwebunit
@@ -40,11 +40,15 @@ files:
40
40
  - lib/rwebunit/web_testcase.rb
41
41
  - lib/rwebunit/web_tester.rb
42
42
  - test/test_test_utils.rb
43
- - sample/kongming_pages.rb
44
- - sample/kongming_webtest.rb
43
+ - sample/kangxi_pages.rb
45
44
  - sample/sample_rwebunit_test.rb
46
45
  - sample/sample_rwebunit_testcase.rb
47
46
  - sample/sample_watir_test.rb
47
+ - sample/README.txt
48
+ - sample/kangxi_home_webtest.rb
49
+ - sample/kangxi_httpcaller_webtest.rb
50
+ - sample/kangxi_xml_formatter_webtest.rb
51
+ - sample/rwebunit_home_testcase.rb
48
52
  - docs/html
49
53
  - docs/html/index.html
50
54
  test_files: []
@@ -1,79 +0,0 @@
1
- require "rwebunit"
2
-
3
- $:.unshift File.dirname(__FILE__)
4
- require "kongming_pages.rb"
5
-
6
- class TestWuning < RWebUnit::WebTestCase
7
-
8
- def initialize(name)
9
- super(name)
10
- end
11
-
12
- def setup
13
- super
14
- openBrowser("http://localhost:3721", "/home")
15
- end
16
-
17
- def teardown
18
- super
19
- closeBrowser()
20
- end
21
-
22
- def test_homepage_exists()
23
- kongming_homepage = KongmingHomePage.new(@web_tester, "Welcome")
24
- end
25
-
26
- def test_all_links_exist
27
- kongming_homepage = KongmingHomePage.new(@web_tester, "Welcome")
28
- kongming_homepage.assertTheListLinkPresent()
29
- kongming_homepage.assertDashboardLinkPresent
30
- kongming_homepage.assertTestCenterLinkPresent
31
- kongming_homepage.assertTestWebServiceLinkPresent
32
- end
33
-
34
- # enter text in a text field, then click a button
35
- def test_format_xml
36
- kongming_homepage = KongmingHomePage.new(@web_tester, "Welcome")
37
- kongming_xmlformatter_page = kongming_homepage.clickXMLFormatterLink
38
- kongming_xmlformatter_page.enterXml("<name><first>James</first><last>Bond</last></name>")
39
- kongming_xmlformatter_page.clickFormat
40
- end
41
-
42
- # Invoke link to populate date using javascripts (clickFillExampleLink)
43
- # Calling submit
44
- # Check special text before and after submit
45
- def test_format_xml_sample
46
- kongming_homepage = KongmingHomePage.new(@web_tester, "Welcome")
47
- kongming_xmlformatter_page = kongming_homepage.clickXMLFormatterLink
48
- kongming_xmlformatter_page.clickFillExampleLink
49
- @web_tester.assertElementNotPresent("formatted_xml")
50
- kongming_xmlformatter_page.submit
51
- @web_tester.assertElementPresent("formatted_xml")
52
- end
53
-
54
- # web testcase can utilize useful methods defined in test_utils
55
- def test_can_call_utils
56
- kongming_homepage = KongmingHomePage.new(@web_tester, "Welcome")
57
- kongming_xmlformatter_page = kongming_homepage.clickXMLFormatterLink
58
- kongming_xmlformatter_page.enterXml("<date><now>" + getToday + "</now></date>")
59
- kongming_xmlformatter_page.clickFormat
60
- end
61
-
62
- def test_combobox
63
- kongming_homepage = KongmingHomePage.new(@web_tester, "Welcome")
64
- kongming_httpcaller_page = kongming_homepage.clickHttpCallerLink
65
- # html:
66
- # <select name="method">
67
- # <option value="POST">HTTP POST </option>
68
- # <option value="GET"> HTTP GET </option>
69
- # </select>
70
-
71
- @web_tester.assertOptionPresent("method", "HTTP POST") # trimmed
72
- @web_tester.assertOptionPresent("method", "HTTP GET")
73
- @web_tester.assertOptionNotPresent("method", "PUT")
74
- @web_tester.assertOptionValuePresent("method", "POST")
75
- @web_tester.assertOptionValuePresent("method", "GET")
76
- @web_tester.assertOptionValueNotPresent("method", "HEAD")
77
- end
78
-
79
- end