bret-watircraft 0.4.3 → 0.4.4
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/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
|