bret-watircraft 0.4.3 → 0.4.4
Sign up to get free protection for your applications and to get access to all the features.
- data/History.txt +24 -0
- data/Manifest.txt +1 -1
- data/README.rdoc +7 -2
- data/VERSION.yml +2 -2
- data/app_generators/watircraft/USAGE +4 -5
- data/app_generators/watircraft/templates/config.yml.erb +8 -3
- data/app_generators/watircraft/templates/readme.txt +38 -0
- data/app_generators/watircraft/watircraft_generator.rb +3 -1
- data/lib/taza/browser.rb +67 -50
- data/lib/taza/page.rb +11 -15
- data/lib/taza/settings.rb +91 -67
- data/lib/taza/site.rb +22 -10
- data/lib/watircraft/version.rb +1 -1
- data/spec/browser_spec.rb +6 -6
- data/spec/project_generator_spec.rb +2 -2
- data/spec/settings_spec.rb +20 -13
- data/spec/site_spec.rb +20 -0
- data/watircraft.gemspec +3 -3
- metadata +3 -3
- data/BUGS.txt +0 -6
data/History.txt
CHANGED
@@ -1,3 +1,27 @@
|
|
1
|
+
=== 0.4.4 / 2009-04-02
|
2
|
+
|
3
|
+
This release provides a number of new configuration options for managing
|
4
|
+
browsers. Detailed instructions are now displayed after creating a new
|
5
|
+
project. We've also updated the Rdoc.
|
6
|
+
|
7
|
+
New Features
|
8
|
+
|
9
|
+
* Added several new browser configuration options. These are: attach, leave_open
|
10
|
+
speed, visible, and bring_to_front. Like "browser" these can be specified
|
11
|
+
as env vars, as rake arguments, or in the config.yml file. See config.yml
|
12
|
+
file in a new project for exact syntax. Currently all but leave_open only work
|
13
|
+
with IE; inapplicable settings will simply be ignored when running with Firefox.
|
14
|
+
* Extracted Site#initialize_browser method. This does all the standard
|
15
|
+
initialization of the browser as per configuration settings. However, in
|
16
|
+
cases where exceptional measures must me taken (e.g. security popups), the
|
17
|
+
standard method can now be to overriden or extended.
|
18
|
+
|
19
|
+
Documentation
|
20
|
+
|
21
|
+
* Corrected and expanded Rdoc for Page.
|
22
|
+
* Detailed instructions are now displayed after you execute the "watircraft"
|
23
|
+
command.
|
24
|
+
|
1
25
|
=== 0.4.3 / 2009-03-31
|
2
26
|
|
3
27
|
Bug Fixes
|
data/Manifest.txt
CHANGED
@@ -1,4 +1,3 @@
|
|
1
|
-
BUGS.txt
|
2
1
|
History.txt
|
3
2
|
Manifest.txt
|
4
3
|
README.rdoc
|
@@ -73,6 +72,7 @@ app_generators/watircraft/templates/environments.yml.erb
|
|
73
72
|
app_generators/watircraft/templates/feature_helper.rb
|
74
73
|
app_generators/watircraft/templates/initialize.rb.erb
|
75
74
|
app_generators/watircraft/templates/rakefile.rb
|
75
|
+
app_generators/watircraft/templates/readme.txt
|
76
76
|
app_generators/watircraft/templates/script
|
77
77
|
app_generators/watircraft/templates/script/console
|
78
78
|
app_generators/watircraft/templates/script/console.cmd
|
data/README.rdoc
CHANGED
@@ -13,7 +13,8 @@ a place to put things.
|
|
13
13
|
|
14
14
|
* Generates a directory structure for your test suite with one command.
|
15
15
|
* Provides page adapters you can customize for your application.
|
16
|
-
* Configure
|
16
|
+
* Configure environment URLs and browser type (IE, Firefox) in one location.
|
17
|
+
* Supports multiple environments; specify which to test at run time.
|
17
18
|
* Uses templates to create tests and libraries.
|
18
19
|
* Automatically initializes browser for testing.
|
19
20
|
* Provides the glue to ensure your tests can find your libraries. Don't
|
@@ -129,11 +130,15 @@ examples project on github. Look in the +watircraft+ directory.
|
|
129
130
|
|
130
131
|
== QUESTIONS AND FEEDBACK
|
131
132
|
|
133
|
+
Known bugs and road map. You can report bugs and request features here.
|
134
|
+
* http://watircraft.lighthouseapp.com/projects/28400-watircraft/overview
|
135
|
+
|
132
136
|
Join our mailing list for WatirCraft users.
|
133
137
|
* http://tech.groups.yahoo.com/group/watir-framework
|
134
138
|
|
135
139
|
The WatirCraft framework is developed by WatirCraft LLC, based on Taza[http://github.com/scudco/taza/wikis].
|
136
|
-
Please send
|
140
|
+
Please send your comments to us at feedback@watircraft.com[mailto:feedback@watircraft.com]
|
141
|
+
We love getting your emails.
|
137
142
|
|
138
143
|
WatirCraft LLC provides training and consulting for Watir, Ruby and the
|
139
144
|
WatirCraft framework.
|
data/VERSION.yml
CHANGED
@@ -1,11 +1,10 @@
|
|
1
1
|
Description:
|
2
2
|
|
3
|
-
Creates a watircraft test project.
|
4
|
-
|
5
|
-
To update an existing project to this version, run this command on the project.
|
3
|
+
Creates a watircraft test project. To update an existing project to
|
4
|
+
this version, run this command from the base of the project.
|
6
5
|
|
7
6
|
Examples:
|
8
7
|
|
9
|
-
watircraft google #
|
10
|
-
watircraft . #
|
8
|
+
watircraft google # creates new project called google
|
9
|
+
watircraft . # updates current project
|
11
10
|
|
@@ -0,0 +1,38 @@
|
|
1
|
+
|
2
|
+
How to create a WatirCraft Project
|
3
|
+
==================================
|
4
|
+
|
5
|
+
1. DONE - Run the WatirCraft command: watircraft projectname
|
6
|
+
2. Edit config/config.yml to include the base url of your application.
|
7
|
+
3. CD into your new project directory. All of the following commands assume
|
8
|
+
that your current directory is the base of your project.
|
9
|
+
|
10
|
+
WatirCraft allows you to create Rspec tests, Cucumber tests or both.
|
11
|
+
|
12
|
+
Rspec Tests
|
13
|
+
|
14
|
+
4. Create Test: script\generate spec testname
|
15
|
+
5. Edit the file, adding Watir commands where specified.
|
16
|
+
6. Run one test: ruby test\specs\testname_spec.rb
|
17
|
+
Or you can just use F5 if using the Scite editor.
|
18
|
+
7. Run all spec-tests: rake spec
|
19
|
+
|
20
|
+
Cucumber Tests
|
21
|
+
|
22
|
+
8. Create Feature. Place your feature-tests in the test\features directory.
|
23
|
+
They should follow the standard cucumber format.
|
24
|
+
9. Create Steps File: script\generate steps filename
|
25
|
+
10. Dry Run: cucumber test\features\featurename
|
26
|
+
This will create step outlines.
|
27
|
+
11. Paste these step outlines into the step definition templates.
|
28
|
+
12. Add Watir command to these steps to make them work.
|
29
|
+
13. Run one feature: cucumber test\features\featurename
|
30
|
+
14. Run all features: rake features
|
31
|
+
|
32
|
+
Pages are optional and can be used with either Rspec or Cucumber tests.
|
33
|
+
|
34
|
+
15. Create a page: script\generate page pagename
|
35
|
+
16. Pages can be referenced from rspec tests or cucumber steps.
|
36
|
+
|
37
|
+
Enter "script\generate" to see a complete list of WatirCraft files that
|
38
|
+
you can create.
|
@@ -56,6 +56,8 @@ class WatircraftGenerator < RubiGen::Base
|
|
56
56
|
|
57
57
|
m.template "site.rb.erb", "lib/#{@site}.rb", :collision => :skip
|
58
58
|
m.template "environments.yml.erb", "config/environments.yml", :collision => :skip
|
59
|
+
|
60
|
+
m.readme "readme.txt"
|
59
61
|
end
|
60
62
|
end
|
61
63
|
|
@@ -104,7 +106,7 @@ EOS
|
|
104
106
|
# raw instance variable value.
|
105
107
|
# @author = options[:author]
|
106
108
|
@site = options[:site]
|
107
|
-
@driver = options[:driver] ||
|
109
|
+
@driver = options[:driver] || 'watir'
|
108
110
|
end
|
109
111
|
|
110
112
|
end
|
data/lib/taza/browser.rb
CHANGED
@@ -1,50 +1,67 @@
|
|
1
|
-
module Taza
|
2
|
-
class Browser
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
require 'watir
|
20
|
-
Watir.
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
end
|
50
|
-
|
1
|
+
module Taza
|
2
|
+
class Browser
|
3
|
+
|
4
|
+
class << self
|
5
|
+
|
6
|
+
# Create a browser instance depending on configuration. Configuration should be read in via Taza::Settings.config.
|
7
|
+
#
|
8
|
+
# Example:
|
9
|
+
# browser = Taza::Browser.create(Taza::Settings.config)
|
10
|
+
#
|
11
|
+
def create(params={})
|
12
|
+
send("create_#{params[:driver]}", params)
|
13
|
+
end
|
14
|
+
|
15
|
+
private
|
16
|
+
|
17
|
+
def create_watir(params)
|
18
|
+
require 'watir'
|
19
|
+
require 'extensions/watir'
|
20
|
+
Watir::Browser.default = params[:browser]
|
21
|
+
case params[:browser]
|
22
|
+
when 'ie'
|
23
|
+
require 'watir/ie'
|
24
|
+
Watir.add_display_value_methods_to Watir
|
25
|
+
Watir::IE.set_options(:visible => params[:visible])
|
26
|
+
browser = provision_watir_browser params
|
27
|
+
browser.speed = params[:speed]
|
28
|
+
when 'firefox'
|
29
|
+
require 'firewatir'
|
30
|
+
Watir.add_display_value_methods_to FireWatir
|
31
|
+
browser = provision_watir_browser params
|
32
|
+
else
|
33
|
+
browser = provision_watir_browser params
|
34
|
+
end
|
35
|
+
|
36
|
+
browser
|
37
|
+
end
|
38
|
+
|
39
|
+
def provision_watir_browser(params)
|
40
|
+
if params[:attach] && params[:browser] == 'ie'
|
41
|
+
browser = Watir::IE.find(:title, //)
|
42
|
+
end
|
43
|
+
browser || Watir::Browser.new
|
44
|
+
end
|
45
|
+
|
46
|
+
def create_selenium(params)
|
47
|
+
require 'selenium'
|
48
|
+
Selenium::SeleniumDriver.new(params[:server_ip],params[:server_port],'*' + params[:browser],params[:timeout])
|
49
|
+
end
|
50
|
+
|
51
|
+
def create_fake(params)
|
52
|
+
FakeBrowser.new
|
53
|
+
end
|
54
|
+
end
|
55
|
+
|
56
|
+
end
|
57
|
+
|
58
|
+
class FakeBrowser
|
59
|
+
def goto(*args)
|
60
|
+
end
|
61
|
+
def close
|
62
|
+
end
|
63
|
+
|
64
|
+
end
|
65
|
+
|
66
|
+
end
|
67
|
+
|
data/lib/taza/page.rb
CHANGED
@@ -8,7 +8,7 @@ module Taza
|
|
8
8
|
# Example:
|
9
9
|
# require 'taza'
|
10
10
|
# class HomePage < Taza::Page
|
11
|
-
# element(:
|
11
|
+
# element(:submit) {browser.button(:value, 'Submit')}
|
12
12
|
# filter :title_given, :foo
|
13
13
|
#
|
14
14
|
# def title_given
|
@@ -16,7 +16,7 @@ module Taza
|
|
16
16
|
# end
|
17
17
|
# end
|
18
18
|
#
|
19
|
-
#
|
19
|
+
# <tt>home_page.submit</tt> will return the button specified if the filter returned true
|
20
20
|
class Page
|
21
21
|
attr_accessor :browser, :site
|
22
22
|
|
@@ -48,7 +48,8 @@ module Taza
|
|
48
48
|
# class HomePage < Taza::Page
|
49
49
|
# element(:next_button) {browser.button(:value, 'Next'}
|
50
50
|
# end
|
51
|
-
#
|
51
|
+
#
|
52
|
+
# home_page.next_button.click
|
52
53
|
def element(name, &block)
|
53
54
|
name = name.to_s.computerize.to_sym
|
54
55
|
elements[name] = block
|
@@ -61,24 +62,18 @@ module Taza
|
|
61
62
|
# field(:name) {browser.text_field(:name, 'user_name')}
|
62
63
|
# end
|
63
64
|
#
|
64
|
-
#
|
65
|
-
#
|
66
|
-
#
|
67
|
-
#
|
65
|
+
# home_page.name_field # returns the text element
|
66
|
+
# home_page.name_field.exists?
|
67
|
+
# home_page.name = "Fred" # sets the text element (A)
|
68
|
+
# home_page.name # returns the value of the text element (B)
|
68
69
|
#
|
69
|
-
# The following Watir elements provide both #set and #display_value methods
|
70
|
+
# The following Watir elements provide both #set (A) and #display_value (B) methods
|
70
71
|
# text_field (both text boxes and text areas)
|
71
|
-
# hidden
|
72
72
|
# file_field
|
73
73
|
# select_list
|
74
74
|
# checkbox
|
75
|
-
# (radios are the obvious item missing from this list -- we're working on it.)
|
76
75
|
#
|
77
|
-
#
|
78
|
-
# button
|
79
|
-
# cell
|
80
|
-
# hidden
|
81
|
-
# all non-control elements, including divs, spans and most other elements.
|
76
|
+
# Most other Watir elements provide #display_value (B) methods only.
|
82
77
|
def field(name, suffix='field', &block)
|
83
78
|
name = name.to_s.computerize.to_sym
|
84
79
|
fields << name
|
@@ -136,6 +131,7 @@ module Taza
|
|
136
131
|
# field(:description) {@row.cell(:index, 2)}
|
137
132
|
# end
|
138
133
|
# field(:total) {@browser.cell(:id, 'totalcell')}
|
134
|
+
# end
|
139
135
|
#
|
140
136
|
# Example usage
|
141
137
|
#
|
data/lib/taza/settings.rb
CHANGED
@@ -2,79 +2,103 @@ require 'activesupport'
|
|
2
2
|
|
3
3
|
module Taza
|
4
4
|
class Settings
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
5
|
+
class << self
|
6
|
+
# The config settings from the site.yml and config.yml files.
|
7
|
+
# ENV variables will override the settings.
|
8
|
+
#
|
9
|
+
# Example:
|
10
|
+
# Taza::Settings.config('google')
|
11
|
+
def config(site_name=nil)
|
12
|
+
keys = %w(browser driver timeout server_ip server_port visible speed attach leave_open bring_to_front)
|
13
|
+
default_settings = {
|
14
|
+
:browser => 'firefox',
|
15
|
+
:driver => 'watir',
|
16
|
+
:visible => true,
|
17
|
+
:speed => 'fast',
|
18
|
+
:attach => false,
|
19
|
+
:bring_to_front => false,
|
20
|
+
:leave_open => false,
|
21
|
+
}
|
22
|
+
|
23
|
+
env_settings = {}
|
24
|
+
keys.each do |key|
|
25
|
+
env_settings[key.to_sym] = ENV[key.upcase] if ENV[key.upcase]
|
26
|
+
end
|
27
|
+
|
28
|
+
# Because of the way #merge works, the settings at the bottom of the list
|
29
|
+
# trump those at the top.
|
30
|
+
settings = environment_settings.merge(
|
31
|
+
default_settings.merge(
|
32
|
+
config_file.merge(
|
33
|
+
env_settings)))
|
34
|
+
|
35
|
+
settings[:browser] = settings[:browser].to_s
|
36
|
+
settings[:driver] = settings[:driver].to_s
|
37
|
+
settings[:speed] = settings[:speed].to_sym
|
38
|
+
settings[:visible] = to_bool(settings[:visible])
|
39
|
+
settings[:leave_open] = to_bool(settings[:leave_open])
|
40
|
+
settings[:attach] = to_bool(settings[:attach])
|
41
|
+
settings[:bring_to_front] = to_bool(settings[:bring_to_front])
|
42
|
+
settings
|
43
|
+
end
|
44
|
+
|
45
|
+
# Returns a hash corresponding to the project config file.
|
46
|
+
def config_file
|
47
|
+
if File.exists?(config_file_path)
|
48
|
+
hash = YAML.load_file(config_file_path)
|
49
|
+
else
|
50
|
+
hash = {}
|
51
|
+
end
|
52
|
+
convert_string_keys_to_symbols hash
|
53
|
+
end
|
54
|
+
|
55
|
+
def config_file_path # :nodoc:
|
56
|
+
File.join(path, 'config', 'config.yml')
|
15
57
|
end
|
16
58
|
|
17
|
-
|
59
|
+
# Returns a hash for the currently specified test environment
|
60
|
+
def environment_settings # :nodoc:
|
61
|
+
file = File.join(path, environment_file)
|
62
|
+
hash_of_hashes = YAML.load_file(file)
|
63
|
+
unless hash_of_hashes.has_key? environment
|
64
|
+
raise "Environment #{environment} not found in #{file}"
|
65
|
+
end
|
66
|
+
convert_string_keys_to_symbols hash_of_hashes[environment]
|
67
|
+
end
|
18
68
|
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
config_file.merge(
|
24
|
-
env_settings)))
|
25
|
-
|
26
|
-
settings[:browser] = settings[:browser].to_sym
|
27
|
-
settings[:driver] = settings[:driver].to_sym
|
28
|
-
settings
|
29
|
-
end
|
30
|
-
|
31
|
-
# Returns a hash corresponding to the project config file.
|
32
|
-
def self.config_file
|
33
|
-
if File.exists?(config_file_path)
|
34
|
-
hash = YAML.load_file(config_file_path)
|
35
|
-
else
|
36
|
-
hash = {}
|
69
|
+
@@root = nil
|
70
|
+
|
71
|
+
def path # :nodoc:
|
72
|
+
@@root || APP_ROOT
|
37
73
|
end
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
def self.config_file_path # :nodoc:
|
42
|
-
File.join(path, 'config', 'config.yml')
|
43
|
-
end
|
44
|
-
|
45
|
-
# Returns a hash for the currently specified test environment
|
46
|
-
def self.environment_settings # :nodoc:
|
47
|
-
file = File.join(path, environment_file)
|
48
|
-
hash_of_hashes = YAML.load_file(file)
|
49
|
-
unless hash_of_hashes.has_key? environment
|
50
|
-
raise "Environment #{environment} not found in #{file}"
|
74
|
+
|
75
|
+
def path= path
|
76
|
+
@@root = path
|
51
77
|
end
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
|
56
|
-
|
57
|
-
|
58
|
-
|
59
|
-
|
60
|
-
|
61
|
-
|
62
|
-
|
63
|
-
|
64
|
-
|
65
|
-
|
66
|
-
|
67
|
-
|
68
|
-
|
69
|
-
|
70
|
-
|
71
|
-
|
78
|
+
|
79
|
+
def environment
|
80
|
+
ENV['ENVIRONMENT'] || 'test'
|
81
|
+
end
|
82
|
+
|
83
|
+
def convert_string_keys_to_symbols hash
|
84
|
+
returning Hash.new do |new_hash|
|
85
|
+
hash.each_pair {|k, v| new_hash[k.to_sym] = v}
|
86
|
+
end
|
87
|
+
end
|
88
|
+
|
89
|
+
def to_bool value
|
90
|
+
case value
|
91
|
+
when true, /true/i
|
92
|
+
true
|
93
|
+
else
|
94
|
+
false
|
95
|
+
end
|
96
|
+
end
|
97
|
+
|
98
|
+
private
|
99
|
+
def environment_file
|
100
|
+
'config/environments.yml'
|
72
101
|
end
|
73
|
-
end
|
74
|
-
|
75
|
-
private
|
76
|
-
def self.environment_file
|
77
|
-
'config/environments.yml'
|
78
102
|
end
|
79
103
|
end
|
80
104
|
end
|
data/lib/taza/site.rb
CHANGED
@@ -81,23 +81,29 @@ module Taza
|
|
81
81
|
|
82
82
|
define_flows
|
83
83
|
|
84
|
-
if params[:browser]
|
85
|
-
@browser = params[:browser]
|
86
|
-
else
|
87
|
-
@browser = Browser.create(config)
|
88
|
-
@i_created_browser = true
|
89
|
-
end
|
90
|
-
|
91
84
|
page_loader = PageLoader.new(@module_name, pages_path)
|
92
85
|
@pages = page_loader.page_names
|
93
86
|
@methods_module = page_loader.page_methods
|
94
87
|
@methods_module.send(:include, Methods)
|
95
88
|
self.extend(@methods_module)
|
96
|
-
|
97
|
-
@browser
|
89
|
+
|
90
|
+
@browser = params[:browser]
|
91
|
+
initialize_browser
|
98
92
|
|
99
93
|
execute_block_and_close_browser(&block) if block_given?
|
100
94
|
end
|
95
|
+
|
96
|
+
# Initializes browser based on configuration settings.
|
97
|
+
def initialize_browser
|
98
|
+
if @browser
|
99
|
+
@leave_open = true
|
100
|
+
else
|
101
|
+
@browser = Browser.create(config)
|
102
|
+
end
|
103
|
+
@browser.goto origin
|
104
|
+
bring_to_front_if_appropriate
|
105
|
+
@leave_open ||= config[:leave_open]
|
106
|
+
end
|
101
107
|
|
102
108
|
def config
|
103
109
|
Settings.config(@class_name)
|
@@ -108,6 +114,12 @@ module Taza
|
|
108
114
|
config[:url]
|
109
115
|
end
|
110
116
|
|
117
|
+
def bring_to_front_if_appropriate
|
118
|
+
return unless config[:bring_to_front]
|
119
|
+
return unless config[:browser] == 'ie'
|
120
|
+
@browser.bring_to_front
|
121
|
+
end
|
122
|
+
|
111
123
|
def execute_block_and_close_browser
|
112
124
|
begin
|
113
125
|
yield self
|
@@ -131,7 +143,7 @@ module Taza
|
|
131
143
|
"" # so basically rcov has a bug where it would insist this block is uncovered when empty
|
132
144
|
end
|
133
145
|
begin
|
134
|
-
@browser.close
|
146
|
+
@browser.close unless @leave_open
|
135
147
|
ensure
|
136
148
|
raise before_browser_closes_block_exception if before_browser_closes_block_exception
|
137
149
|
end
|
data/lib/watircraft/version.rb
CHANGED
data/spec/browser_spec.rb
CHANGED
@@ -25,21 +25,21 @@ describe Taza::Browser do
|
|
25
25
|
end
|
26
26
|
|
27
27
|
it "should raise unknown browser error for unsupported watir browsers" do
|
28
|
-
lambda { Taza::Browser.create(:browser => :
|
28
|
+
lambda { Taza::Browser.create(:browser => 'foo_browser_9000', :driver => 'watir') }.should raise_error(StandardError)
|
29
29
|
end
|
30
30
|
|
31
31
|
it "should use params browser type when creating selenium" do
|
32
|
-
browser_type =
|
32
|
+
browser_type = 'opera'
|
33
33
|
Selenium::SeleniumDriver.expects(:new).with(anything,anything,'*opera',anything)
|
34
|
-
Taza::Browser.create(:browser => browser_type, :driver =>
|
34
|
+
Taza::Browser.create(:browser => browser_type, :driver => 'selenium')
|
35
35
|
end
|
36
36
|
|
37
37
|
it "should raise selenium unsupported browser error" do
|
38
|
-
Taza::Browser.create(:browser =>
|
38
|
+
Taza::Browser.create(:browser => 'foo', :driver => 'selenium')
|
39
39
|
end
|
40
40
|
|
41
41
|
it "should be able to create a selenium instance" do
|
42
|
-
browser = Taza::Browser.create(:browser =>
|
42
|
+
browser = Taza::Browser.create(:browser => 'firefox', :driver => 'selenium')
|
43
43
|
browser.should be_a_kind_of(Selenium::SeleniumDriver)
|
44
44
|
end
|
45
45
|
|
@@ -62,7 +62,7 @@ describe Taza::Browser do
|
|
62
62
|
|
63
63
|
# a test of a stub for testing the test harness of our tests
|
64
64
|
it "should provide a fake browser, so we can test our test harness" do
|
65
|
-
Taza::Browser.create(:driver =>
|
65
|
+
Taza::Browser.create(:driver => 'fake').should be_a(Taza::FakeBrowser)
|
66
66
|
end
|
67
67
|
|
68
68
|
end
|
@@ -86,7 +86,7 @@ describe "Project Generator" do
|
|
86
86
|
generate_project
|
87
87
|
Taza::Settings.stubs(:path).returns(APP_ROOT)
|
88
88
|
ENV['ENVIRONMENT'] = 'test'
|
89
|
-
Taza::Settings.config[:driver].should ==
|
89
|
+
Taza::Settings.config[:driver].should == 'watir'
|
90
90
|
end
|
91
91
|
|
92
92
|
it "should allow a site name to be specified" do
|
@@ -100,7 +100,7 @@ describe "Project Generator" do
|
|
100
100
|
generate_project ['--driver=nine_iron']
|
101
101
|
Taza::Settings.stubs(:path).returns(APP_ROOT)
|
102
102
|
ENV['ENVIRONMENT'] = 'test'
|
103
|
-
Taza::Settings.config[:driver].should ==
|
103
|
+
Taza::Settings.config[:driver].should == 'nine_iron'
|
104
104
|
end
|
105
105
|
|
106
106
|
it "should generate a script/console" do
|
data/spec/settings_spec.rb
CHANGED
@@ -13,19 +13,19 @@ describe Taza::Settings do
|
|
13
13
|
it "should use environment variable for browser settings" do
|
14
14
|
Taza::Settings.stubs(:path).returns("spec/sandbox")
|
15
15
|
ENV['BROWSER'] = 'foo'
|
16
|
-
Taza::Settings.config('SiteName')[:browser].should eql(
|
16
|
+
Taza::Settings.config('SiteName')[:browser].should eql('foo')
|
17
17
|
end
|
18
18
|
|
19
19
|
it "should use environment variable for driver settings" do
|
20
20
|
Taza::Settings.stubs(:path).returns("spec/sandbox")
|
21
21
|
ENV['DRIVER'] = 'bar'
|
22
|
-
Taza::Settings.config('SiteName')[:driver].should eql(
|
22
|
+
Taza::Settings.config('SiteName')[:driver].should eql('bar')
|
23
23
|
end
|
24
24
|
|
25
25
|
it "should provide default values if no config file or environment settings provided" do
|
26
26
|
Taza::Settings.stubs(:path).returns("spec/sandbox")
|
27
|
-
Taza::Settings.config('SiteName')[:driver].should eql(
|
28
|
-
Taza::Settings.config('SiteName')[:browser].should eql(
|
27
|
+
Taza::Settings.config('SiteName')[:driver].should eql('watir')
|
28
|
+
Taza::Settings.config('SiteName')[:browser].should eql('firefox')
|
29
29
|
end
|
30
30
|
|
31
31
|
it "should be able to load the site yml" do
|
@@ -41,21 +41,21 @@ describe Taza::Settings do
|
|
41
41
|
|
42
42
|
it "should use the config file's variable for browser settings if no environment variable is set" do
|
43
43
|
Taza::Settings.stubs(:path).returns("spec/sandbox")
|
44
|
-
Taza::Settings.expects(:config_file).returns({:browser =>
|
45
|
-
Taza::Settings.config('SiteName')[:browser].should eql(
|
44
|
+
Taza::Settings.expects(:config_file).returns({:browser => 'fu'})
|
45
|
+
Taza::Settings.config('SiteName')[:browser].should eql('fu')
|
46
46
|
end
|
47
47
|
|
48
48
|
it "should use the config file's variable for driver settings if no environment variable is set" do
|
49
49
|
Taza::Settings.stubs(:path).returns("spec/sandbox")
|
50
|
-
Taza::Settings.stubs(:config_file).returns({:driver =>
|
51
|
-
Taza::Settings.config('SiteName')[:driver].should eql(
|
50
|
+
Taza::Settings.stubs(:config_file).returns({:driver => 'fun'})
|
51
|
+
Taza::Settings.config('SiteName')[:driver].should eql('fun')
|
52
52
|
end
|
53
53
|
|
54
54
|
it "should use the ENV variables if specified instead of config files" do
|
55
55
|
ENV['BROWSER'] = 'opera'
|
56
|
-
Taza::Settings.expects(:config_file).returns({:browser =>
|
56
|
+
Taza::Settings.expects(:config_file).returns({:browser => 'fu'})
|
57
57
|
Taza::Settings.stubs(:path).returns("spec/sandbox")
|
58
|
-
Taza::Settings.config('SiteName')[:browser].should eql(
|
58
|
+
Taza::Settings.config('SiteName')[:browser].should eql('opera')
|
59
59
|
end
|
60
60
|
|
61
61
|
it "should use the correct config file" do
|
@@ -81,7 +81,7 @@ describe Taza::Settings do
|
|
81
81
|
it "setting keys can be specified as strings (i.e. without a colon) in the config file" do
|
82
82
|
Taza::Settings.stubs(:config_file_path).returns("spec/sandbox/config/simpler.yml")
|
83
83
|
Taza::Settings.stubs(:path).returns("spec/sandbox")
|
84
|
-
Taza::Settings.config('SiteName')[:browser].should eql(
|
84
|
+
Taza::Settings.config('SiteName')[:browser].should eql('opera')
|
85
85
|
end
|
86
86
|
|
87
87
|
it "setting keys can be specified as strings (i.e. without a colon) in the config file" do
|
@@ -91,13 +91,20 @@ describe Taza::Settings do
|
|
91
91
|
end
|
92
92
|
|
93
93
|
it "should be able to convert string keys to symbol keys" do
|
94
|
-
result = Taza::Settings.convert_string_keys_to_symbols 'browser' =>
|
95
|
-
result.should == {:browser =>
|
94
|
+
result = Taza::Settings.convert_string_keys_to_symbols 'browser' => 'foo'
|
95
|
+
result.should == {:browser => 'foo'}
|
96
96
|
end
|
97
97
|
|
98
98
|
it "should provide an empty hash when the config file doesn't exist" do
|
99
99
|
Taza::Settings.stubs(:config_file_path).returns('spec/sandbox/config/no_such_file.yml')
|
100
100
|
Taza::Settings.config_file.should == {}
|
101
101
|
end
|
102
|
+
|
103
|
+
it "should parse true/false values" do
|
104
|
+
Taza::Settings.to_bool('true').should == true
|
105
|
+
Taza::Settings.to_bool('True').should == true
|
106
|
+
Taza::Settings.to_bool('false').should == false
|
107
|
+
Taza::Settings.to_bool(nil).should == false
|
108
|
+
end
|
102
109
|
|
103
110
|
end
|
data/spec/site_spec.rb
CHANGED
@@ -246,4 +246,24 @@ describe do
|
|
246
246
|
@context = @site.execution_context
|
247
247
|
end
|
248
248
|
end
|
249
|
+
|
250
|
+
describe Taza::Site do
|
251
|
+
it_should_behave_like "an execution context"
|
252
|
+
before do
|
253
|
+
@context = @site
|
254
|
+
end
|
255
|
+
|
256
|
+
it "should call the initialize method" do
|
257
|
+
|
258
|
+
class SubClass < Taza::Site
|
259
|
+
def initialize_browser
|
260
|
+
@browser = 'provided'
|
261
|
+
end
|
262
|
+
end
|
263
|
+
|
264
|
+
SubClass.new.browser.should == 'provided'
|
265
|
+
end
|
266
|
+
|
267
|
+
|
268
|
+
end
|
249
269
|
end
|
data/watircraft.gemspec
CHANGED
@@ -2,17 +2,17 @@
|
|
2
2
|
|
3
3
|
Gem::Specification.new do |s|
|
4
4
|
s.name = %q{watircraft}
|
5
|
-
s.version = "0.4.
|
5
|
+
s.version = "0.4.4"
|
6
6
|
|
7
7
|
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
8
8
|
s.authors = ["Bret Pettichord", "Jim Matthews", "Charley Baker", "Adam Anderson"]
|
9
|
-
s.date = %q{2009-03
|
9
|
+
s.date = %q{2009-04-03}
|
10
10
|
s.default_executable = %q{watircraft}
|
11
11
|
s.description = %q{WatirCraft is a framework for testing web apps.}
|
12
12
|
s.email = %q{bret@pettichord.com}
|
13
13
|
s.executables = ["watircraft"]
|
14
14
|
s.extra_rdoc_files = ["History.txt", "README.rdoc"]
|
15
|
-
s.files = ["
|
15
|
+
s.files = ["History.txt", "Manifest.txt", "README.rdoc", "VERSION.yml", "watircraft.gemspec", "bin/watircraft", "lib/extensions", "lib/extensions/array.rb", "lib/extensions/hash.rb", "lib/extensions/object.rb", "lib/extensions/string.rb", "lib/extensions/watir.rb", "lib/taza", "lib/taza/browser.rb", "lib/taza/entity.rb", "lib/taza/fixture.rb", "lib/taza/flow.rb", "lib/taza/page.rb", "lib/taza/settings.rb", "lib/taza/site.rb", "lib/taza/tasks.rb", "lib/taza.rb", "lib/watircraft", "lib/watircraft/generator_helper.rb", "lib/watircraft/table.rb", "lib/watircraft/version.rb", "lib/watircraft.rb", "spec/array_spec.rb", "spec/browser_spec.rb", "spec/entity_spec.rb", "spec/fake_table.rb", "spec/fixtures_spec.rb", "spec/fixture_spec.rb", "spec/hash_spec.rb", "spec/object_spec.rb", "spec/page_generator_spec.rb", "spec/page_spec.rb", "spec/project_generator_spec.rb", "spec/sandbox", "spec/sandbox/config", "spec/sandbox/config/config.yml", "spec/sandbox/config/environments.yml", "spec/sandbox/config/simpler.yml", "spec/sandbox/config/simpler_site.yml", "spec/sandbox/config.yml", "spec/sandbox/fixtures", "spec/sandbox/fixtures/examples.yml", "spec/sandbox/fixtures/users.yml", "spec/sandbox/flows", "spec/sandbox/flows/batman.rb", "spec/sandbox/flows/robin.rb", "spec/sandbox/pages", "spec/sandbox/pages/foo", "spec/sandbox/pages/foo/bar_page.rb", "spec/sandbox/pages/foo/partials", "spec/sandbox/pages/foo/partials/partial_the_reckoning.rb", "spec/settings_spec.rb", "spec/site_spec.rb", "spec/spec_generator_helper.rb", "spec/spec_generator_spec.rb", "spec/spec_helper.rb", "spec/steps_generator_spec.rb", "spec/string_spec.rb", "spec/table_spec.rb", "spec/taza_spec.rb", "spec/watircraft_bin_spec.rb", "spec/watir_spec.rb", "app_generators/watircraft", "app_generators/watircraft/templates", "app_generators/watircraft/templates/config.yml.erb", "app_generators/watircraft/templates/environments.yml.erb", "app_generators/watircraft/templates/feature_helper.rb", "app_generators/watircraft/templates/initialize.rb.erb", "app_generators/watircraft/templates/rakefile.rb", "app_generators/watircraft/templates/readme.txt", "app_generators/watircraft/templates/script", "app_generators/watircraft/templates/script/console", "app_generators/watircraft/templates/script/console.cmd", "app_generators/watircraft/templates/site.rb.erb", "app_generators/watircraft/templates/site_start.rb.erb", "app_generators/watircraft/templates/spec_helper.rb", "app_generators/watircraft/templates/spec_initialize.rb", "app_generators/watircraft/templates/world.rb", "app_generators/watircraft/USAGE", "app_generators/watircraft/watircraft_generator.rb", "watircraft_generators/page", "watircraft_generators/page/page_generator.rb", "watircraft_generators/page/templates", "watircraft_generators/page/templates/page.rb.erb", "watircraft_generators/page/USAGE", "watircraft_generators/spec", "watircraft_generators/spec/spec_generator.rb", "watircraft_generators/spec/templates", "watircraft_generators/spec/templates/spec.rb.erb", "watircraft_generators/spec/USAGE", "watircraft_generators/steps", "watircraft_generators/steps/steps_generator.rb", "watircraft_generators/steps/templates", "watircraft_generators/steps/templates/steps.rb.erb", "watircraft_generators/steps/USAGE"]
|
16
16
|
s.has_rdoc = true
|
17
17
|
s.homepage = %q{http://github.com/bret/watircraft/tree/master}
|
18
18
|
s.rdoc_options = ["--main", "README.rdoc"]
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: bret-watircraft
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.4.
|
4
|
+
version: 0.4.4
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Bret Pettichord
|
@@ -12,7 +12,7 @@ autorequire:
|
|
12
12
|
bindir: bin
|
13
13
|
cert_chain: []
|
14
14
|
|
15
|
-
date: 2009-03
|
15
|
+
date: 2009-04-03 00:00:00 -07:00
|
16
16
|
default_executable: watircraft
|
17
17
|
dependencies:
|
18
18
|
- !ruby/object:Gem::Dependency
|
@@ -85,7 +85,6 @@ extra_rdoc_files:
|
|
85
85
|
- History.txt
|
86
86
|
- README.rdoc
|
87
87
|
files:
|
88
|
-
- BUGS.txt
|
89
88
|
- History.txt
|
90
89
|
- Manifest.txt
|
91
90
|
- README.rdoc
|
@@ -160,6 +159,7 @@ files:
|
|
160
159
|
- app_generators/watircraft/templates/feature_helper.rb
|
161
160
|
- app_generators/watircraft/templates/initialize.rb.erb
|
162
161
|
- app_generators/watircraft/templates/rakefile.rb
|
162
|
+
- app_generators/watircraft/templates/readme.txt
|
163
163
|
- app_generators/watircraft/templates/script
|
164
164
|
- app_generators/watircraft/templates/script/console
|
165
165
|
- app_generators/watircraft/templates/script/console.cmd
|