zhimin-rwebspec 1.4.0.1 → 1.4.0.2

Sign up to get free protection for your applications and to get access to all the features.
data/CHANGELOG CHANGED
@@ -1,5 +1,10 @@
1
1
  CHANGELOG
2
2
  =========
3
+ 1.4.0.2
4
+ Fixed: reuse browser does not work
5
+ Add gem dependency (Watir/Firewatir) depends on platforms
6
+ More rdoc update
7
+
3
8
  1.4.0
4
9
  Renamed to rwebspec
5
10
  1.9 compliance
data/README CHANGED
@@ -1,5 +1,5 @@
1
1
 
2
- rWebUnit wraps the popular web testing framework WATIR with RSpec Syntax to provide better easy to read automated web test cases. By using iTest/Watir recorder, the rWebUnit test scripts can be recorded in Firefox. iTest2 makes editing/executing test cases with ease.
2
+ RWebSpec wraps the popular web testing framework WATIR with RSpec Syntax to provide better easy to read automated web test cases. By using iTest/Watir recorder, the rWebUnit test scripts can be recorded in Firefox. iTest2 makes editing/executing test cases with ease.
3
3
 
4
4
  Sample rWebUnit Test:
5
5
 
data/Rakefile CHANGED
@@ -41,11 +41,14 @@ Rake::RDocTask.new do |rdoc|
41
41
  rdoc.rdoc_dir = 'doc'
42
42
  rdoc.title = 'RWebSpec'
43
43
  rdoc.rdoc_files.include('lib/rwebspec.rb')
44
- rdoc.rdoc_files.include('lib/rwebspec/*.rb')
45
- rdoc.options += [
44
+ rdoc.rdoc_files.include('lib/rwebspec/*.rb')
45
+ rdoc.rdoc_files.delete("lib/rwebspec/test_utils.rb")
46
+ rdoc.rdoc_files.delete("lib/rwebspec/web_testcase.rb")
47
+ rdoc.rdoc_files.delete("lib/rwebspec/checkJSDialog.rb")
48
+ rdoc.options += [
46
49
  '-SHN',
47
50
  '-f', 'darkfish', # This is the important bit
48
- ]
51
+ ]
49
52
  end
50
53
 
51
54
  Rake::RDocTask.new("chm") do |rdoc|
@@ -53,6 +56,9 @@ Rake::RDocTask.new("chm") do |rdoc|
53
56
  rdoc.title = 'RWebSpec'
54
57
  rdoc.rdoc_files.include('lib/rwebspec.rb')
55
58
  rdoc.rdoc_files.include('lib/rwebspec/*.rb')
59
+ rdoc.rdoc_files.delete("lib/rwebspec/test_utils.rb")
60
+ rdoc.rdoc_files.delete("lib/rwebspec/web_testcase.rb")
61
+ rdoc.rdoc_files.delete("lib/rwebspec/checkJSDialog.rb")
56
62
  rdoc.options += [
57
63
  '-SHN',
58
64
  '-f', 'chm', # This is the important bit
@@ -63,7 +69,7 @@ end
63
69
  spec = Gem::Specification.new do |s|
64
70
  s.platform= Gem::Platform::RUBY
65
71
  s.name = "rwebspec"
66
- s.version = "1.4.0.1"
72
+ s.version = "1.4.0.2"
67
73
  s.summary = "Executable functional specification for web applications in RSpec syntax and Watir"
68
74
  # s.description = ""
69
75
 
@@ -83,10 +89,14 @@ spec = Gem::Specification.new do |s|
83
89
  s.files = s.files + Dir.glob( "sample/**/*")
84
90
  s.files = s.files + Dir.glob( "docs/**/*" )
85
91
  s.add_dependency(%q<rspec>, ["= 1.1.12"])
92
+ if RUBY_PLATFORM.downcase.include?("mswin") or RUBY_PLATFORM.downcase.include?("mingw")
93
+ s.add_dependency("watir", ">= 1.6.2")
94
+ else
95
+ s.add_dependency("firewatir", ">= 1.6.2")
96
+ end
97
+
86
98
  s.add_dependency("commonwatir", ">= 1.6.2")
87
99
  s.add_dependency("test-unit", ">= 2.0.2")
88
- # s.add_dependency("watir", ">= 1.6.2")
89
- # s.add_dependency("firewatir", ">= 1.6.2")
90
100
  end
91
101
 
92
102
  Rake::GemPackageTask.new(spec) do |pkg|
@@ -13,7 +13,7 @@ end
13
13
  require 'active_support/core_ext'
14
14
  require 'spec'
15
15
 
16
- RWEBSPEC_VERSION = RWEBUNIT_VERSION = "1.4.0.1"
16
+ RWEBSPEC_VERSION = RWEBUNIT_VERSION = "1.4.0.2"
17
17
 
18
18
  # Extra full path to load libraries
19
19
  require File.dirname(__FILE__) + "/rwebspec/using_pages"
@@ -43,43 +43,42 @@ module RWebSpec
43
43
 
44
44
  def initialize(base_url = nil, existing_browser = nil, options = {})
45
45
  default_options = {:speed => "zippy",
46
- :visible => true,
47
- :highlight_colour => 'yellow',
48
- :close_others => true
46
+ :visible => true,
47
+ :highlight_colour => 'yellow',
48
+ :close_others => true
49
49
  }
50
50
  options = default_options.merge options
51
51
  @context = Context.new base_url if base_url
52
52
 
53
53
  case RUBY_PLATFORM
54
- when /java/i
55
- # Java, maybe firewatir or celerity
56
- puts "Ruby java platform"
57
- raise "Not supported, no FireWatir or Celerity detected" unless $firewatir_loaded || $celerity_loaded
58
- if $firewatir_loaded && $celerity_loaded then
59
- # choose one out of two, :default to celerity
60
- if options[:firefox] then
61
- initialize_firefox_browser(existing_browser, base_url, options)
62
- else
63
- initialize_celerity_browser(base_url, options)
64
- end
65
- elsif $firewatir_loaded
54
+ when /java/i
55
+ # Java, maybe firewatir or celerity
56
+ puts "Ruby java platform"
57
+ raise "Not supported, no FireWatir or Celerity detected" unless $firewatir_loaded || $celerity_loaded
58
+ if $firewatir_loaded && $celerity_loaded then
59
+ # choose one out of two, :default to celerity
60
+ if options[:firefox] then
66
61
  initialize_firefox_browser(existing_browser, base_url, options)
67
62
  else
68
63
  initialize_celerity_browser(base_url, options)
69
64
  end
65
+ elsif $firewatir_loaded
66
+ initialize_firefox_browser(existing_browser, base_url, options)
67
+ else
68
+ initialize_celerity_browser(base_url, options)
69
+ end
70
70
 
71
- when /mswin|windows|mingw/i
72
- puts "Ruby windows platform"
73
- raise "Not supported, no Watir or FireWatir detected" unless $watir_loaded || $firewatir_loaded
74
- if $firewatir_loaded && options[:firefox] then
75
- initialize_firefox_browser(existing_browser, base_url, options)
76
- else
77
- initialize_ie_browser(existing_browser, options)
78
- end
71
+ when /mswin|windows|mingw/i
72
+ raise "Not supported, no Watir or FireWatir detected" unless $watir_loaded || $firewatir_loaded
73
+ if $firewatir_loaded && options[:firefox] then
74
+ initialize_firefox_browser(existing_browser, base_url, options)
79
75
  else
80
- raise "Not supported, no FireWatirdetected" unless $firewatir_loaded
81
- puts "Ruby Linux or Mac platform: firefox"
82
- initialize_firefox_browser(base_url, options)
76
+ initialize_ie_browser(existing_browser, options)
77
+ end
78
+ else
79
+ raise "Not supported, no FireWatirdetected" unless $firewatir_loaded
80
+ puts "Ruby Linux or Mac platform: firefox"
81
+ initialize_firefox_browser(existing_browser, base_url, options)
83
82
  end
84
83
  end
85
84
 
@@ -133,7 +132,7 @@ module RWebSpec
133
132
  end
134
133
 
135
134
  def self.reuse(base_url, options)
136
- if RUBY_PLATFORM.downcase.include?("mswin") && $ITEST2_BROWSER != "Firefox"
135
+ if self.is_windows? && $ITEST2_BROWSER != "Firefox"
137
136
  Watir::IE.each do |browser_window|
138
137
  return WebBrowser.new(base_url, browser_window, options)
139
138
  end
@@ -162,7 +161,9 @@ module RWebSpec
162
161
  alias check_box checkbox # seems watir doc is wrong, checkbox not check_box
163
162
  alias tr row
164
163
 
165
- # FireWatir does not support area directly, treat it as text_field
164
+ # Wrapp of Watir's area to support Firefox and Watir
165
+ #
166
+ # Note: FireWatir does not support area directly, treat it as text_field
166
167
  def area(*args)
167
168
  if is_firefox?
168
169
  text_field(*args)
@@ -175,24 +176,23 @@ module RWebSpec
175
176
  @browser.contains_text(text);
176
177
  end
177
178
 
179
+ # return HTML of current web page
178
180
  def page_source
179
181
  @browser.html()
180
182
  #@browser.document.body
181
183
  end
182
-
183
184
  alias html_body page_source
185
+ alias html page_source
184
186
 
185
- def html
186
- @browser.html
187
- end
188
187
 
188
+ # return plain text of current web page
189
189
  def text
190
190
  @browser.text
191
191
  end
192
192
 
193
193
  def page_title
194
- case @browser.class.to_s
195
- when "FireWatir::Firefox"
194
+ case @browser.class.to_s
195
+ when "FireWatir::Firefox"
196
196
  @browser.title
197
197
  when "Watir::IE"
198
198
  @browser.document.title
@@ -232,11 +232,11 @@ module RWebSpec
232
232
  # Close the browser window. Useful for automated test suites to reduce
233
233
  # test interaction.
234
234
  def close_browser
235
- case @browser.class.to_s
236
- when "FireWatir::Firefox"
235
+ case @browser.class.to_s
236
+ when "FireWatir::Firefox"
237
237
  @browser.close
238
238
  when "Watir::IE"
239
- @browser.getIE.quit
239
+ @browser.getIE.quit
240
240
  else
241
241
  puts "#{@browser.class} can't close, ignore"
242
242
  end
@@ -304,10 +304,17 @@ module RWebSpec
304
304
  alias go_back back
305
305
  alias go_forward forward
306
306
 
307
+ # Go to a page
308
+ # Usage:
309
+ # open_browser("http://www.itest2.com"
310
+ # ....
311
+ # goto_page("/purchase") # full url => http://www.itest.com/purchase
307
312
  def goto_page(page)
308
313
  @browser.goto full_url(page);
309
314
  end
310
315
 
316
+ # Go to a URL directly
317
+ # goto_url("http://www.itest2.com/downloads")
311
318
  def goto_url(url)
312
319
  @browser.goto url
313
320
  end
@@ -334,25 +341,37 @@ module RWebSpec
334
341
  wait_before_and_after { link(:text, text).click }
335
342
  end
336
343
 
337
- ##
338
- # buttons
339
-
344
+ # Click a button with give HTML id
345
+ # Usage:
346
+ # click_button_with_id("btn_sumbit")
340
347
  def click_button_with_id(id)
341
348
  wait_before_and_after { button(:id, id).click }
342
349
  end
343
350
 
351
+ # Click a button with give name
352
+ # Usage:
353
+ # click_button_with_name("confirm")
344
354
  def click_button_with_name(name)
345
355
  wait_before_and_after { button(:name, name).click }
346
356
  end
347
357
 
358
+ # Click a button with caption
359
+ # Usage:
360
+ # click_button_with_caption("Confirm payment")
348
361
  def click_button_with_caption(caption)
349
362
  wait_before_and_after { button(:caption, caption).click }
350
363
  end
351
364
 
365
+ # Click a button with value
366
+ # Usage:
367
+ # click_button_with_value("Confirm payment")
352
368
  def click_button_with_value(value)
353
369
  wait_before_and_after { button(:value, value).click }
354
370
  end
355
371
 
372
+ # Select a dropdown list by name
373
+ # Usage:
374
+ # select_option("country", "Australia")
356
375
  def select_option(selectName, option)
357
376
  select_list(:name, selectName).select(option)
358
377
  end
@@ -370,7 +389,10 @@ module RWebSpec
370
389
  end
371
390
  end
372
391
 
373
- # checkbox
392
+ # Check a checkbox
393
+ # Usage:
394
+ # check_checkbox("agree")
395
+ # check_checkbox("agree", "true")
374
396
  def check_checkbox(checkBoxName, values=nil)
375
397
  if values
376
398
  values.class == Array ? arys = values : arys = [values]
@@ -382,6 +404,10 @@ module RWebSpec
382
404
  end
383
405
  end
384
406
 
407
+ # Check a checkbox
408
+ # Usage:
409
+ # uncheck_checkbox("agree")
410
+ # uncheck_checkbox("agree", "false")
385
411
  def uncheck_checkbox(checkBoxName, values = nil)
386
412
  if values
387
413
  values.class == Array ? arys = values : arys = [values]
@@ -394,15 +420,21 @@ module RWebSpec
394
420
  end
395
421
 
396
422
 
397
- # the method is protected in JWebUnit
423
+ # Click a radio button
424
+ # Usage:
425
+ # click_radio_option("country", "Australia")
398
426
  def click_radio_option(radio_group, radio_option)
399
427
  radio(:name, radio_group, radio_option).set
400
428
  end
401
429
 
430
+ # Clear a radio button
431
+ # Usage:
432
+ # click_radio_option("country", "Australia")
402
433
  def clear_radio_option(radio_group, radio_option)
403
434
  radio(:name, radio_group, radio_option).clear
404
435
  end
405
436
 
437
+ # Deprecated: using Watir style directly instead
406
438
  def element_by_id(elem_id)
407
439
  if is_firefox?
408
440
  # elem = @browser.document.getElementById(elem_id)
@@ -508,18 +540,24 @@ module RWebSpec
508
540
  @browser
509
541
  end
510
542
 
543
+ # return underlying firefox browser object, raise error if not running using Firefox
511
544
  def firefox
512
545
  raise "can't call this as it is configured to use IE" unless is_firefox?
513
546
  @browser
514
547
  end
515
548
 
549
+ # Save current web page source to file
550
+ # usage:
551
+ # save_page("/tmp/01.html")
552
+ # save_page() => # will save to "20090830112200.html"
516
553
  def save_page(file_name = nil)
517
554
  file_name ||= Time.now.strftime("%Y%m%d%H%M%S") + ".html"
518
- puts "about to save page: #{File.expand_path(file_name)}"
555
+ puts "about to save page: #{File.expand_path(file_name)}" if $DEBUG
519
556
  File.open(file_name, "w").puts page_source
520
557
  end
521
558
 
522
559
 
560
+ # is it running in MS Windows platforms?
523
561
  def self.is_windows?
524
562
  RUBY_PLATFORM.downcase.include?("mswin") or RUBY_PLATFORM.downcase.include?("mingw")
525
563
  end
@@ -42,10 +42,16 @@ module RWebSpec
42
42
  assert_on_page
43
43
  end
44
44
 
45
+ # return the browser instance in page objects
45
46
  def browser
46
47
  @web_browser
47
48
  end
48
49
 
50
+ # Assert is on current page
51
+ # Example
52
+ # home_page = HomePage.new("Welcome to iTest2")
53
+ # ....
54
+ # home_page.assert_on_page # will check the text 'Welcome to iTest2' still present on the page
49
55
  def assert_on_page()
50
56
  assert_text_present(@page_text) if @page_text
51
57
  end
@@ -58,7 +64,7 @@ module RWebSpec
58
64
  @web_browser.dump_response(stream)
59
65
  end
60
66
 
61
-
67
+ # Page source (html)
62
68
  def source
63
69
  @web_browser.page_source
64
70
  end
@@ -85,6 +91,10 @@ module RWebSpec
85
91
  return found
86
92
  end
87
93
 
94
+ # Will save current page source to a file
95
+ # home_page = HomePage.new("Welcome to iTest2")
96
+ # ...
97
+ # home_page.snapshot() # => save to 20090830100102_HomePage.html
88
98
  def snapshot(replace_css = false)
89
99
  save_current_page(:filename => Time.now.strftime("%m%d%H%M%S") + "_" + self.class.name.gsub(" ", "") + ".html" )
90
100
  end
@@ -3,6 +3,8 @@
3
3
  #* Distributed open-source, see full license in MIT-LICENSE
4
4
  #***********************************************************
5
5
 
6
+ # Deprecated, use RSpec syntax instead
7
+
6
8
  require 'test/unit'
7
9
  require File.join(File.dirname(__FILE__), 'assert')
8
10
  require File.join(File.dirname(__FILE__), 'driver')
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: zhimin-rwebspec
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.4.0.1
4
+ version: 1.4.0.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Zhimin Zhan