rwebunit 1.0.3 → 1.3.0

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.
data/CHANGELOG CHANGED
@@ -1,9 +1,73 @@
1
1
  CHANGELOG
2
2
  =========
3
- 1.0.3
4
- -- add method: dubugging?
5
- -- add utils method: this_dir, this_file
3
+
4
+ 1.3
5
+ add new syntax for including pages
6
+ extend RWebUnit::UsingPages
7
+ pages :login_page, :receipt_page, :page_dir => 'c:/temp'
8
+
9
+ 1.2.4
10
+ Generate new rdoc
11
+
12
+ 1.2.3
13
+ New - support_unicode
14
+ More alias assert_select_label_not_present assert_option_not_present
15
+ New - click_button_with_name
16
+
17
+ 1.2.2
18
+
19
+ save_current_page save to ITEST2
20
+
21
+ 1.2.1 (2009-04-02)
22
+
23
+ Fixes - base_url is file://
24
+ New - set_hidden_field
25
+ New - allowing
26
+ New - try { } handles boolean values as well
27
+ Doc update
28
+
29
+ 1.2
30
+ REVISIT all APIs
31
+ - assertions
32
+ - assert_not (new)
33
+ - assert_text_field_value (new)
34
+ - assert_text_present_in_table (renamed)
35
+ - assert_element_present (removed, use assert div(:id, "").exists?)
36
+ - driver.rb
37
+ - wait_until (new)
38
+ - repeat_try_util (new)
39
+ - try (add more clear messages when block failed)
40
+ - add unit tests
41
+ - run unit test against the test page in Firefox Browser
42
+ - major documentation update
43
+
44
+ 1.1.3
45
+ add open_existing_browser
46
+
47
+ 1.1.2 (2009-03-13)
48
+ added goto_url
49
+
50
+ 1.1.1
51
+ add open_browser.rb, check for firefox with jssh is running
52
+ added assert_exists, assert_not_exists
53
+
54
+ 1.1
55
+
56
+ Changed dependency (Assertions) for test-unit 2.0.2, ruby 1.9.1 ready
57
+ Extract popup.rb out
58
+ Added repeat_try in driver.rb
59
+ remove should_not_allow, should_allow. Important!!! don't define methods start with should_not_, should_
60
+
61
+ 1.0.4
62
+ Added: WebBrowser.html WebBrowser.text
63
+ Added: random method in test_utils
64
+ Enhancemet: close_browser works even no browser started in the test
65
+ move open_browser to driver.rb
66
+ fixed include rwebunit causing stack too deep error
6
67
 
68
+ 1.0.3
69
+ - New set of samples (real life tests)
70
+
7
71
  1.0.2
8
72
  - add more unit tests
9
73
  Fixes cell_with_id
@@ -14,7 +78,7 @@ CHANGELOG
14
78
  1.0 (2008-11-25)
15
79
 
16
80
  TODO:
17
- Firefox: check the element is hidden or showing,
81
+ Firefox: check the element is hidden or showing,
18
82
  Checkfor driver.rb: ajax_call_complete_after_element_hidden
19
83
  does not support outerHtml yet
20
84
  Firefox: attach browser,
data/README CHANGED
@@ -1,33 +1,33 @@
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.
3
-
4
- Sample rWebUnit Test:
5
-
6
- require 'rwebunit'
7
-
8
- spec "Locate a Suncorp Branch" do
9
- include RWebUnit::RSpecHelper
10
-
11
- before(:all) do
12
- open_browser_with("http://suncorp.com.au/")
13
- end
14
-
15
- before(:each) do
16
- goto_page("/locator")
17
- end
18
-
19
- after(:all) do
20
- close_browser
21
- end
22
-
23
- scenario "Find by extended trading hours" do
24
- checkbox(:id, "OpenExtendedTradingHoursSerivceId").click # using Watir directly
25
- enter_text("Postcode_Locator__Postcode", "4061")
26
- click_button_with_image("search_button.gif")
27
- page_source.should include("Queen St Mall")
28
- end
29
- end
30
-
31
-
32
- iTest2 Homepage: http://www.itest2.com
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.
3
+
4
+ Sample rWebUnit Test:
5
+
6
+ require 'rwebunit'
7
+
8
+ spec "Locate a Suncorp Branch" do
9
+ include RWebUnit::RSpecHelper
10
+
11
+ before(:all) do
12
+ open_browser_with("http://suncorp.com.au/")
13
+ end
14
+
15
+ before(:each) do
16
+ goto_page("/locator")
17
+ end
18
+
19
+ after(:all) do
20
+ close_browser
21
+ end
22
+
23
+ scenario "Find by extended trading hours" do
24
+ checkbox(:id, "OpenExtendedTradingHoursSerivceId").click # using Watir directly
25
+ enter_text("Postcode_Locator__Postcode", "4061")
26
+ click_button_with_image("search_button.gif")
27
+ page_source.should include("Queen St Mall")
28
+ end
29
+ end
30
+
31
+
32
+ iTest2 Homepage: http://www.itest2.com
33
33
 
data/Rakefile CHANGED
@@ -1,15 +1,16 @@
1
1
  require 'rubygems'
2
- require 'rake/testtask'
2
+ require 'spec/rake/spectask'
3
3
  require 'rake/rdoctask'
4
-
5
- Gem::manage_gems
6
4
  require 'rake/gempackagetask'
5
+ require 'rdoc' # require rdoc 2
6
+ gem 'darkfish-rdoc'
7
+ # require 'darkfish-rdoc'
7
8
 
8
9
  $:.unshift(File.dirname(__FILE__) + "/lib")
9
10
  #require 'rwebunit'
10
11
 
11
12
  desc "Default task"
12
- task :default => [ :clean, :test, :doc, :gem]
13
+ task :default => [ :clean, :spec, :rdoc, :gem]
13
14
 
14
15
  desc "Clean generated files"
15
16
  task :clean do
@@ -17,32 +18,45 @@ task :clean do
17
18
  rm_rf 'doc'
18
19
  end
19
20
 
20
- # run the unit tests
21
- Rake::TestTask.new("test") { |t|
22
- t.test_files = FileList['test/test*.rb']
23
- t.verbose= true
24
- }
21
+ desc 'Run all specs'
22
+ Spec::Rake::SpecTask.new('spec') do |t|
23
+ t.spec_opts = ['--format', 'specdoc', '--colour']
24
+ # t.libs = ["lib", "server/lib" ]
25
+ t.spec_files = Dir['spec/**/*_spec.rb'].sort
26
+ end
25
27
 
26
28
  # Generate the RDoc documentation
27
- Rake::RDocTask.new { |rdoc|
29
+ # Rake::RDocTask.new { |rdoc|
30
+ # rdoc.rdoc_dir = 'doc'
31
+ # rdoc.title = 'rWebUnit'
32
+ # rdoc.template = "#{ENV['template']}.rb" if ENV['template']
33
+ # rdoc.rdoc_files.include('README')
34
+ # rdoc.rdoc_files.include('lib/rwebunit.rb')
35
+ # rdoc.rdoc_files.include('lib/rwebunit/*.rb')
36
+ # }
37
+
38
+ # using DarkFish - http://deveiate.org/projects/Darkfish-Rdoc/
39
+ Rake::RDocTask.new do |rdoc|
28
40
  rdoc.rdoc_dir = 'doc'
29
41
  rdoc.title = 'rWebUnit'
30
- rdoc.template = "#{ENV['template']}.rb" if ENV['template']
31
- rdoc.rdoc_files.include('README')
32
42
  rdoc.rdoc_files.include('lib/rwebunit.rb')
33
43
  rdoc.rdoc_files.include('lib/rwebunit/*.rb')
34
- }
44
+ rdoc.options += [
45
+ '-SHN',
46
+ '-f', 'darkfish', # This is the important bit
47
+ ]
48
+ end
35
49
 
36
50
  spec = Gem::Specification.new do |s|
37
51
  s.platform= Gem::Platform::RUBY
38
52
  s.name = "rwebunit"
39
- s.version = "1.0.3"
53
+ s.version = "1.3.0"
40
54
  s.summary = "An wrap of WATIR/FireWatir for functional testing of web applications"
41
- # s.description = ""
55
+ # s.description = ""
42
56
 
43
57
  s.author = "Zhimin Zhan"
44
58
  s.email = "zhimin@agileway.net"
45
- s.homepage= "http://code.google.com/p/rwebunit/"
59
+ s.homepage= "http://github.com/zhimin/rwebunit/tree/master"
46
60
  s.rubyforge_project = "rwebunit"
47
61
 
48
62
  s.has_rdoc = true
@@ -51,19 +65,17 @@ spec = Gem::Specification.new do |s|
51
65
  s.autorequire = "rwebunit"
52
66
 
53
67
  s.files = [ "Rakefile", "README", "CHANGELOG", "MIT-LICENSE" ]
54
- # s.files = s.files + Dir.glob( "bin/**/*" ).delete_if { |item| item.include?( "\.svn" ) }
55
- s.files = s.files + Dir.glob( "lib/**/*" ).delete_if { |item| item.include?( "\.svn" ) }
56
- s.files = s.files + Dir.glob( "test/**/*" ).delete_if { |item| item.include?( "\.svn" ) }
57
- s.files = s.files + Dir.glob( "sample/**/*" ).delete_if { |item| item.include?( "\.svn" ) }
58
- s.files = s.files + Dir.glob( "docs/**/*" ).delete_if { |item| item.include?( "\.svn" ) }
59
- s.add_dependency(%q<rspec>, ["= 1.1.4"])
68
+ s.files = s.files + Dir.glob( "lib/**/*" )
69
+ s.files = s.files + Dir.glob( "test/**/*" )
70
+ s.files = s.files + Dir.glob( "sample/**/*")
71
+ s.files = s.files + Dir.glob( "docs/**/*" )
72
+ s.add_dependency(%q<rspec>, ["= 1.1.12"])
60
73
  s.add_dependency("commonwatir", ">= 1.6.2")
61
- # s.add_dependency("watir", ">= 1.6.2")
62
- # s.add_dependency("firewatir", ">= 1.6.2")
74
+ s.add_dependency("test-unit", ">= 2.0.2")
75
+ # s.add_dependency("watir", ">= 1.6.2")
76
+ # s.add_dependency("firewatir", ">= 1.6.2")
63
77
  end
64
78
 
65
79
  Rake::GemPackageTask.new(spec) do |pkg|
66
80
  pkg.need_zip = true
67
81
  end
68
-
69
-
@@ -11,105 +11,41 @@ module Spec
11
11
  end
12
12
  end
13
13
 
14
-
14
+ # For RSpec 1.1.12
15
15
  module Spec
16
- module Example
17
- module ExampleGroupMethods
18
-
19
- alias_method :scenario, :it
20
- alias_method :story, :it
21
- alias_method :test_case, :it
22
- alias_method :test, :it
23
- end
24
- end
25
- end
16
+ module DSL
17
+ module Main
26
18
 
27
- module Spec
28
- module Runner
29
- class SpecParser
30
- def example_group_at_line(source, line_number)
31
- find_above(source, line_number, /^\s*(context|describe|specification|spec|test_suite|suite)\s+(.*)\s+do/)
32
- end
19
+ alias :spec :describe
20
+ alias :specification :describe
21
+ alias :test_suite :describe
22
+ alias :suite :describe
33
23
 
34
- def example_at_line(source, line_number)
35
- find_above(source, line_number, /^\s*(specify|it|story|scenario|test_case|test)\s+(.*)\s+do/)
36
- end
37
24
  end
38
25
  end
39
26
  end
40
27
 
28
+ # ZZ patches to RSpec 1.1.4
29
+ # - add to_s method to example_group
41
30
  module Spec
42
- module Runner
43
- class << self
44
- def register_at_exit_hook # :nodoc:
45
- #ignore at exit hook
46
- end
31
+ module Example
32
+ class ExampleGroup
33
+ def to_s
34
+ @_defined_description
47
35
  end
48
36
  end
37
+ end
49
38
  end
50
39
 
51
40
  module Spec
52
- class Translator
53
-
54
- def translate_line(line)
55
- # Translate deprecated mock constraints
56
- line.gsub!(/:any_args/, 'any_args')
57
- line.gsub!(/:anything/, 'anything')
58
- line.gsub!(/:boolean/, 'boolean')
59
- line.gsub!(/:no_args/, 'no_args')
60
- line.gsub!(/:numeric/, 'an_instance_of(Numeric)')
61
- line.gsub!(/:string/, 'an_instance_of(String)')
62
-
63
- return line if line =~ /(should_not|should)_receive/
64
-
65
- line.gsub!(/(^\s*)context([\s*|\(]['|"|A-Z])/, '\1describe\2')
66
- line.gsub!(/(^\s*)test_suite([\s*|\(]['|"|A-Z])/, '\1describe\2')
67
- line.gsub!(/(^\s*)suite([\s*|\(]['|"|A-Z])/, '\1describe\2')
68
- line.gsub!(/(^\s*)spec([\s*|\(]['|"|A-Z])/, '\1describe\2') #new
69
- line.gsub!(/(^\s*)specification([\s*|\(]['|"|A-Z])/, '\1describe\2') #new
70
- line.gsub!(/(^\s*)specify([\s*|\(]['|"|A-Z])/, '\1it\2')
71
- line.gsub!(/(^\s*)scenario([\s*|\(]['|"|A-Z])/, '\1it\2') #new
72
- line.gsub!(/(^\s*)story([\s*|\(]['|"|A-Z])/, '\1it\2') #new
73
- line.gsub!(/(^\s*)test_case([\s*|\(]['|"|A-Z])/, '\1it\2') #new
74
- line.gsub!(/(^\s*)test([\s*|\(]['|"|A-Z])/, '\1it\2') #new
75
- line.gsub!(/(^\s*)context_setup(\s*[do|\{])/, '\1before(:all)\2')
76
- line.gsub!(/(^\s*)context_teardown(\s*[do|\{])/, '\1after(:all)\2')
77
- line.gsub!(/(^\s*)setup(\s*[do|\{])/, '\1before(:each)\2')
78
- line.gsub!(/(^\s*)teardown(\s*[do|\{])/, '\1after(:each)\2')
79
-
80
- if line =~ /(.*\.)(should_not|should)(?:_be)(?!_)(.*)/m
81
- pre = $1
82
- should = $2
83
- post = $3
84
- be_or_equal = post =~ /(<|>)/ ? "be" : "equal"
85
-
86
- return "#{pre}#{should} #{be_or_equal}#{post}"
87
- end
88
-
89
- if line =~ /(.*\.)(should_not|should)_(?!not)\s*(.*)/m
90
- pre = $1
91
- should = $2
92
- post = $3
93
-
94
- post.gsub!(/^raise/, 'raise_error')
95
- post.gsub!(/^throw/, 'throw_symbol')
96
-
97
- unless standard_matcher?(post)
98
- post = "be_#{post}"
99
- end
100
-
101
- # Add parenthesis
102
- post.gsub!(/^(\w+)\s+([\w|\.|\,|\(.*\)|\'|\"|\:|@| ]+)(\})/, '\1(\2)\3') # inside a block
103
- post.gsub!(/^(redirect_to)\s+(.*)/, '\1(\2)') # redirect_to, which often has http:
104
- post.gsub!(/^(\w+)\s+([\w|\.|\,|\(.*\)|\{.*\}|\'|\"|\:|@| ]+)/, '\1(\2)')
105
- post.gsub!(/(\s+\))/, ')')
106
- post.gsub!(/\)\}/, ') }')
107
- post.gsub!(/^(\w+)\s+(\/.*\/)/, '\1(\2)') #regexps
108
- line = "#{pre}#{should} #{post}"
109
- end
41
+ module Example
42
+ module ExampleGroupMethods
110
43
 
111
- line
44
+ alias_method :scenario, :it
45
+ alias_method :story, :it
46
+ alias_method :test_case, :it
47
+ alias_method :use_case, :it
48
+ alias_method :test, :it
112
49
  end
113
50
  end
114
- end
115
-
51
+ end