bret-watircraft 0.4.5 → 0.5.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/History.txt +24 -0
- data/Manifest.txt +8 -0
- data/README.rdoc +0 -16
- data/VERSION.yml +2 -2
- data/app_generators/watircraft/templates/readme.txt +8 -2
- data/app_generators/watircraft/templates/spec_initialize.rb +7 -0
- data/app_generators/watircraft/watircraft_generator.rb +1 -0
- data/lib/taza/page.rb +11 -1
- data/lib/taza/settings.rb +2 -2
- data/lib/taza/site.rb +16 -27
- data/lib/watircraft/generator_helper.rb +29 -26
- data/lib/watircraft/table.rb +14 -0
- data/lib/watircraft/version.rb +1 -1
- data/spec/method_generator_spec.rb +40 -0
- data/spec/page_spec.rb +23 -0
- data/spec/sandbox/methods/spiderman.rb +7 -0
- data/spec/sandbox/pages/foo/bar_page.rb +1 -1
- data/spec/site_spec.rb +26 -8
- data/spec/spec_generator_helper.rb +1 -0
- data/spec/spec_generator_spec.rb +0 -3
- data/spec/spec_helper.rb +8 -0
- data/watircraft.gemspec +3 -3
- data/watircraft_generators/method/USAGE +15 -0
- data/watircraft_generators/method/method_generator.rb +54 -0
- data/watircraft_generators/method/templates/method.rb.erb +8 -0
- data/watircraft_generators/page/USAGE +3 -3
- data/watircraft_generators/page/page_generator.rb +0 -4
- data/watircraft_generators/spec/spec_generator.rb +1 -1
- metadata +10 -2
data/History.txt
CHANGED
@@ -1,3 +1,27 @@
|
|
1
|
+
=== 0.5.0 / 2009-04-10
|
2
|
+
|
3
|
+
This release adds a new artifact to your project: methods libraries. It also
|
4
|
+
adds commands for use in script\console.
|
5
|
+
|
6
|
+
You will need to update your project using "watircraft ." to use this
|
7
|
+
release.
|
8
|
+
|
9
|
+
New Features
|
10
|
+
|
11
|
+
* New generator: "methods". This creates templates for methods that can be
|
12
|
+
be used with both rspec (specs) and cucumber (steps). Use
|
13
|
+
"script\generate methods" for details.
|
14
|
+
* Added commands to navigate tables in script\console. The page.tables method
|
15
|
+
will return a list of the tables defined on the page. The table.fields and
|
16
|
+
table.elements methods return lists of fields and elements defined for the
|
17
|
+
table.
|
18
|
+
|
19
|
+
But Fixes
|
20
|
+
|
21
|
+
* When using Rspec 1.2.x, you should be able to execute specs simply by
|
22
|
+
"running" the file with Ruby. This worked pre 1.2 and now works with 1.2.
|
23
|
+
(Fixed both project specs and WatirCraft's own unit tests.)
|
24
|
+
|
1
25
|
=== 0.4.5 / 2009-04-07
|
2
26
|
|
3
27
|
New Features
|
data/Manifest.txt
CHANGED
@@ -32,6 +32,7 @@ spec/fake_table.rb
|
|
32
32
|
spec/fixtures_spec.rb
|
33
33
|
spec/fixture_spec.rb
|
34
34
|
spec/hash_spec.rb
|
35
|
+
spec/method_generator_spec.rb
|
35
36
|
spec/object_spec.rb
|
36
37
|
spec/page_generator_spec.rb
|
37
38
|
spec/page_spec.rb
|
@@ -49,6 +50,8 @@ spec/sandbox/fixtures/users.yml
|
|
49
50
|
spec/sandbox/flows
|
50
51
|
spec/sandbox/flows/batman.rb
|
51
52
|
spec/sandbox/flows/robin.rb
|
53
|
+
spec/sandbox/methods
|
54
|
+
spec/sandbox/methods/spiderman.rb
|
52
55
|
spec/sandbox/pages
|
53
56
|
spec/sandbox/pages/foo
|
54
57
|
spec/sandbox/pages/foo/bar_page.rb
|
@@ -83,6 +86,11 @@ app_generators/watircraft/templates/spec_initialize.rb
|
|
83
86
|
app_generators/watircraft/templates/world.rb
|
84
87
|
app_generators/watircraft/USAGE
|
85
88
|
app_generators/watircraft/watircraft_generator.rb
|
89
|
+
watircraft_generators/method
|
90
|
+
watircraft_generators/method/method_generator.rb
|
91
|
+
watircraft_generators/method/templates
|
92
|
+
watircraft_generators/method/templates/method.rb.erb
|
93
|
+
watircraft_generators/method/USAGE
|
86
94
|
watircraft_generators/page
|
87
95
|
watircraft_generators/page/page_generator.rb
|
88
96
|
watircraft_generators/page/templates
|
data/README.rdoc
CHANGED
@@ -9,22 +9,6 @@ An example test suite for this framework can be found in the framework
|
|
9
9
|
examples project on github. Look in the +watircraft+ directory.
|
10
10
|
* http://github.com/bret/framework-examples
|
11
11
|
|
12
|
-
== QUESTIONS AND FEEDBACK
|
13
|
-
|
14
|
-
Known bugs and road map. You can report bugs and request features here.
|
15
|
-
* http://watircraft.lighthouseapp.com/projects/28400-watircraft/overview
|
16
|
-
|
17
|
-
Join our mailing list for WatirCraft users.
|
18
|
-
* http://tech.groups.yahoo.com/group/watir-framework
|
19
|
-
|
20
|
-
The WatirCraft framework is developed by WatirCraft LLC, based on Taza[http://github.com/scudco/taza/wikis].
|
21
|
-
Please send your comments to us at feedback@watircraft.com[mailto:feedback@watircraft.com]
|
22
|
-
We love getting your emails.
|
23
|
-
|
24
|
-
WatirCraft LLC provides training and consulting for Watir, Ruby and the
|
25
|
-
WatirCraft framework.
|
26
|
-
* http://www.watircraft.com
|
27
|
-
|
28
12
|
== LICENSE
|
29
13
|
|
30
14
|
(The MIT License)
|
data/VERSION.yml
CHANGED
@@ -11,7 +11,7 @@ WatirCraft allows you to create Rspec tests, Cucumber tests or both.
|
|
11
11
|
|
12
12
|
Rspec Tests
|
13
13
|
|
14
|
-
4. Create
|
14
|
+
4. Create a test: script\generate spec testname
|
15
15
|
5. Edit the file, adding Watir commands where specified.
|
16
16
|
6. Run one test: ruby test\specs\testname_spec.rb
|
17
17
|
Or you can just use F5 if using the Scite editor.
|
@@ -19,7 +19,7 @@ Rspec Tests
|
|
19
19
|
|
20
20
|
Cucumber Tests
|
21
21
|
|
22
|
-
8. Create
|
22
|
+
8. Create a feature. Place your feature-tests in the test\features directory.
|
23
23
|
They should follow the standard cucumber format.
|
24
24
|
9. Create Steps File: script\generate steps filename
|
25
25
|
10. Dry Run: cucumber test\features\featurename
|
@@ -34,5 +34,11 @@ Pages are optional and can be used with either Rspec or Cucumber tests.
|
|
34
34
|
15. Create a page: script\generate page pagename
|
35
35
|
16. Pages can be referenced from rspec tests or cucumber steps.
|
36
36
|
|
37
|
+
Methods are optional cna be used with either Rspec or Cucumber tests.
|
38
|
+
|
39
|
+
17. Create a method: script\generate method methodname
|
40
|
+
18. Methods can be referenced from rspec tests, cucumber steps or from
|
41
|
+
other methods.
|
42
|
+
|
37
43
|
Enter "script\generate" to see a complete list of WatirCraft files that
|
38
44
|
you can create.
|
@@ -4,6 +4,13 @@
|
|
4
4
|
require 'init/site_start'
|
5
5
|
require 'spec'
|
6
6
|
require 'mocha'
|
7
|
+
begin
|
8
|
+
# Needed for rspec 1.2.x. (Allows "ruby" to run specs.)
|
9
|
+
# But not available before that.
|
10
|
+
require 'spec/autorun'
|
11
|
+
rescue LoadError
|
12
|
+
nil
|
13
|
+
end
|
7
14
|
|
8
15
|
Spec::Runner.configure do |config|
|
9
16
|
config.mock_with :mocha
|
data/lib/taza/page.rb
CHANGED
@@ -29,10 +29,14 @@ module Taza
|
|
29
29
|
def filters # :nodoc:
|
30
30
|
@filters ||= Hash.new { [] }
|
31
31
|
end
|
32
|
-
|
32
|
+
|
33
33
|
def fields # :nodoc:
|
34
34
|
@fields ||= []
|
35
35
|
end
|
36
|
+
|
37
|
+
def tables # :nodoc:
|
38
|
+
@tables ||= []
|
39
|
+
end
|
36
40
|
|
37
41
|
def url string=nil
|
38
42
|
if string.nil?
|
@@ -141,6 +145,7 @@ module Taza
|
|
141
145
|
# subclass and then allows its class methods to define fields and
|
142
146
|
# elements on the table.
|
143
147
|
def table(name, &block)
|
148
|
+
tables << name
|
144
149
|
# create subclass for the table
|
145
150
|
sub_class = Class.new(WatirCraft::Table)
|
146
151
|
sub_class.class_eval &block
|
@@ -221,6 +226,11 @@ module Taza
|
|
221
226
|
self.class.fields.map &:to_s
|
222
227
|
end
|
223
228
|
|
229
|
+
# Return the names of the tables defined for the page.
|
230
|
+
def tables
|
231
|
+
self.class.tables.map &:to_s
|
232
|
+
end
|
233
|
+
|
224
234
|
# Returns a hash with the names and values of the specified fields.
|
225
235
|
# If no fields are specifieds, all fields on the page are used.
|
226
236
|
def values field_names=fields
|
data/lib/taza/settings.rb
CHANGED
@@ -27,8 +27,8 @@ module Taza
|
|
27
27
|
|
28
28
|
# Because of the way #merge works, the settings at the bottom of the list
|
29
29
|
# trump those at the top.
|
30
|
-
settings =
|
31
|
-
|
30
|
+
settings = default_settings.merge(
|
31
|
+
environment_settings.merge(
|
32
32
|
config_file.merge(
|
33
33
|
env_settings)))
|
34
34
|
|
data/lib/taza/site.rb
CHANGED
@@ -44,8 +44,6 @@ module Taza
|
|
44
44
|
end
|
45
45
|
|
46
46
|
end
|
47
|
-
include Spec::Matchers
|
48
|
-
|
49
47
|
|
50
48
|
@@before_browser_closes = Proc.new() {}
|
51
49
|
# Use this to do something with the browser before it closes, but note that it is a class method which
|
@@ -79,15 +77,19 @@ module Taza
|
|
79
77
|
# (not sure if this is a useful feature or not)
|
80
78
|
def initialize(params={}, &block)
|
81
79
|
@site = self
|
82
|
-
@
|
80
|
+
@parent_module = self.class.parent
|
81
|
+
@module_name = @parent_module.to_s
|
83
82
|
@class_name = self.class.to_s.split("::").last
|
84
83
|
|
85
84
|
define_flows
|
86
|
-
|
85
|
+
load_methods_files
|
86
|
+
|
87
87
|
page_loader = PageLoader.new(@module_name, pages_path)
|
88
88
|
@pages = page_loader.page_names
|
89
89
|
@methods_module = page_loader.page_methods
|
90
90
|
@methods_module.send(:include, Methods)
|
91
|
+
@methods_module.send(:include, Spec::Matchers)
|
92
|
+
@methods_module.send(:include, @parent_module::Methods) if defined?(@parent_module::Methods)
|
91
93
|
self.extend(@methods_module)
|
92
94
|
|
93
95
|
@browser = params[:browser]
|
@@ -160,7 +162,6 @@ module Taza
|
|
160
162
|
|
161
163
|
def initialize_context!(context)
|
162
164
|
context.extend @methods_module
|
163
|
-
context.extend Spec::Matchers
|
164
165
|
context.site = @site
|
165
166
|
context.browser = @site.browser
|
166
167
|
context
|
@@ -176,32 +177,20 @@ module Taza
|
|
176
177
|
require file
|
177
178
|
end
|
178
179
|
end
|
180
|
+
|
181
|
+
def load_methods_files # :nodoc:
|
182
|
+
Dir.glob(methods_path) do |file|
|
183
|
+
require file
|
184
|
+
end
|
185
|
+
end
|
179
186
|
|
180
|
-
# This is used to call a flow belonging to the site
|
181
|
-
#
|
182
|
-
# Example:
|
183
|
-
# Google.new do |google|
|
184
|
-
# google.flow(:perform_search, :query => "taza")
|
185
|
-
# end
|
186
|
-
#
|
187
|
-
# Where the flow would be defined under lib/sites/google/flows/perform_search.rb and look like:
|
188
|
-
# class PerformSearch < Taza::Flow
|
189
|
-
# alias :google :site
|
190
|
-
#
|
191
|
-
# def run(params={})
|
192
|
-
# google.search.set params[:query]
|
193
|
-
# google.submit.click
|
194
|
-
# end
|
195
|
-
# end
|
196
|
-
|
197
|
-
#
|
198
|
-
# methods that neither depend on or modify state
|
199
|
-
#
|
200
|
-
|
201
|
-
private
|
202
187
|
def flows_path # :nodoc:
|
203
188
|
File.join(path,'flows','*.rb')
|
204
189
|
end
|
190
|
+
|
191
|
+
def methods_path # :nodoc:
|
192
|
+
File.join(path,'methods','*.rb')
|
193
|
+
end
|
205
194
|
|
206
195
|
def path # :nodoc:
|
207
196
|
File.join(base_path,'lib')
|
@@ -1,27 +1,30 @@
|
|
1
|
-
require 'taza/settings'
|
2
|
-
|
3
|
-
module WatirCraft
|
4
|
-
# Assumes #site_name and #destination_root and #usage methods are defined.
|
5
|
-
module GeneratorHelper
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
end
|
15
|
-
def
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
1
|
+
require 'taza/settings'
|
2
|
+
|
3
|
+
module WatirCraft
|
4
|
+
# Assumes #site_name and #destination_root and #usage methods are defined.
|
5
|
+
module GeneratorHelper
|
6
|
+
def site_module
|
7
|
+
@site_name.camelize
|
8
|
+
end
|
9
|
+
protected
|
10
|
+
def configured_validated_site
|
11
|
+
site = configured_site
|
12
|
+
check_if_site_exists site
|
13
|
+
site
|
14
|
+
end
|
15
|
+
def configured_site
|
16
|
+
site_name = Taza::Settings.config_file[:site]
|
17
|
+
end
|
18
|
+
def check_if_site_exists site_name=@site_name
|
19
|
+
if site_name.nil?
|
20
|
+
raise RubiGen::UsageError,
|
21
|
+
"Error. A site must first be specified in config.yml"
|
22
|
+
end
|
23
|
+
site_file = File.join(destination_root,'lib',"#{site_name.underscore}.rb")
|
24
|
+
unless File.exists?(site_file)
|
25
|
+
raise RubiGen::UsageError,
|
26
|
+
"Error. Site file #{site_file} not found. (Check config.yml)"
|
27
|
+
end
|
28
|
+
end
|
29
|
+
end
|
27
30
|
end
|
data/lib/watircraft/table.rb
CHANGED
@@ -25,16 +25,27 @@ module WatirCraft
|
|
25
25
|
end
|
26
26
|
nil
|
27
27
|
end
|
28
|
+
def fields
|
29
|
+
self.class.row_class.fields.map &:to_s
|
30
|
+
end
|
31
|
+
def elements
|
32
|
+
self.class.row_class.elements.map &:to_s
|
33
|
+
end
|
28
34
|
end
|
29
35
|
|
30
36
|
class Row
|
31
37
|
class << self
|
32
38
|
def element name, &block
|
39
|
+
elements << name
|
33
40
|
define_method(name) do
|
34
41
|
instance_eval &block
|
35
42
|
end
|
36
43
|
end
|
44
|
+
def elements # :nodoc:
|
45
|
+
@elements ||= []
|
46
|
+
end
|
37
47
|
def field name, &block
|
48
|
+
fields << name
|
38
49
|
element_name = "#{name}_field"
|
39
50
|
element element_name, &block
|
40
51
|
define_method(name) do
|
@@ -44,6 +55,9 @@ module WatirCraft
|
|
44
55
|
send(element_name).set value
|
45
56
|
end
|
46
57
|
end
|
58
|
+
def fields # :nodoc:
|
59
|
+
@fields ||= []
|
60
|
+
end
|
47
61
|
end
|
48
62
|
attr_reader :row
|
49
63
|
def initialize watir_row
|
data/lib/watircraft/version.rb
CHANGED
@@ -0,0 +1,40 @@
|
|
1
|
+
require 'spec/spec_helper'
|
2
|
+
require 'spec/spec_generator_helper'
|
3
|
+
|
4
|
+
describe "Spec Generation" do
|
5
|
+
include RubiGen::GeneratorTestHelper
|
6
|
+
include Helpers::Generator
|
7
|
+
include Helpers::Taza
|
8
|
+
|
9
|
+
before :each do
|
10
|
+
generate_project ["--site=frito"]
|
11
|
+
end
|
12
|
+
|
13
|
+
after :each do
|
14
|
+
bare_teardown
|
15
|
+
end
|
16
|
+
|
17
|
+
it "should be able to generate a method" do
|
18
|
+
run_generator('method', ['empty_shopping_cart'], generator_sources)
|
19
|
+
end
|
20
|
+
|
21
|
+
it "should work when when the provided name includes a space" do
|
22
|
+
MethodGenerator.any_instance.stubs(:configured_site).returns('frito')
|
23
|
+
generator = MethodGenerator.new(['check out'])
|
24
|
+
generator.name.should == 'check_out'
|
25
|
+
end
|
26
|
+
|
27
|
+
it "should add a method to the site" do
|
28
|
+
MethodGenerator.any_instance.stubs(:configured_site).returns('frito')
|
29
|
+
run_generator('method', ['extra'], generator_sources)
|
30
|
+
|
31
|
+
require File.join(PROJECT_FOLDER, 'lib/frito')
|
32
|
+
Frito::Frito.any_instance.stubs(:base_path).returns(PROJECT_FOLDER)
|
33
|
+
|
34
|
+
stub_settings
|
35
|
+
stub_browser
|
36
|
+
|
37
|
+
Frito::Frito.new.extra
|
38
|
+
end
|
39
|
+
|
40
|
+
end
|
data/spec/page_spec.rb
CHANGED
@@ -341,6 +341,29 @@ describe Taza::Page do
|
|
341
341
|
uses_table_page
|
342
342
|
@table_page.results.row(:missing => 'nada').should be_nil
|
343
343
|
end
|
344
|
+
|
345
|
+
it "should be able to be listed from the page" do
|
346
|
+
uses_table_page
|
347
|
+
@table_page.tables.should == ['results']
|
348
|
+
end
|
349
|
+
|
350
|
+
it "should list its fields" do
|
351
|
+
uses_table_page
|
352
|
+
@table_page.results.fields.should == %w(name phone missing)
|
353
|
+
end
|
354
|
+
|
355
|
+
it "should list its elements" do
|
356
|
+
@page_class.class_eval do
|
357
|
+
element(:results_table) do FakeTable.new []
|
358
|
+
end
|
359
|
+
table(:results) do
|
360
|
+
field(:name){row.element(:letter)}
|
361
|
+
element(:phone){row.element(:number)}
|
362
|
+
end
|
363
|
+
end
|
364
|
+
@table_page = @page_class.new
|
365
|
+
@table_page.results.elements.should == %w(name_field phone)
|
366
|
+
end
|
344
367
|
|
345
368
|
end
|
346
369
|
|
data/spec/site_spec.rb
CHANGED
@@ -4,21 +4,31 @@ require 'taza'
|
|
4
4
|
|
5
5
|
describe do
|
6
6
|
|
7
|
+
module ::Foo
|
8
|
+
class Foo < ::Taza::Site
|
9
|
+
|
10
|
+
end
|
11
|
+
end
|
12
|
+
|
7
13
|
before :all do
|
8
14
|
@pages_path = File.join("spec","sandbox","pages","foo","**","*.rb")
|
9
15
|
@flows_path = File.join("spec","sandbox","flows","*.rb")
|
10
|
-
@
|
16
|
+
@methods_path = File.join("spec","sandbox","methods","*.rb")
|
17
|
+
@foo_class = ::Foo::Foo
|
11
18
|
end
|
12
19
|
|
13
20
|
before :each do
|
14
21
|
ENV['BROWSER'] = nil
|
15
22
|
ENV['DRIVER'] = nil
|
23
|
+
|
16
24
|
@foo_class.any_instance.stubs(:pages_path).returns(@pages_path)
|
25
|
+
@foo_class.any_instance.stubs(:methods_path).returns(@methods_path)
|
17
26
|
Taza::Settings.stubs(:config_file).returns({})
|
18
27
|
Taza::Settings.stubs(:environment_settings).returns({})
|
19
28
|
Taza::Site.before_browser_closes {}
|
20
29
|
@browser = stub_browser
|
21
30
|
Taza::Browser.stubs(:create).returns(@browser)
|
31
|
+
|
22
32
|
@site = @foo_class.new
|
23
33
|
end
|
24
34
|
|
@@ -35,23 +45,23 @@ describe do
|
|
35
45
|
@context.bar_page do |bar|
|
36
46
|
barzor = bar
|
37
47
|
end
|
38
|
-
barzor.should be_an_instance_of(BarPage)
|
48
|
+
barzor.should be_an_instance_of(Foo::BarPage)
|
39
49
|
end
|
40
50
|
|
41
51
|
it "should return a page by name" do
|
42
52
|
# Bar is a page on the site
|
43
|
-
@context.bar_page.should be_an_instance_of(BarPage)
|
53
|
+
@context.bar_page.should be_an_instance_of(Foo::BarPage)
|
44
54
|
end
|
45
55
|
|
46
56
|
it "should return a page by method" do
|
47
|
-
@context.page('bar').should be_an_instance_of(BarPage)
|
48
|
-
@context.page('Bar').should be_an_instance_of(BarPage)
|
57
|
+
@context.page('bar').should be_an_instance_of(Foo::BarPage)
|
58
|
+
@context.page('Bar').should be_an_instance_of(Foo::BarPage)
|
49
59
|
end
|
50
60
|
|
51
61
|
it "should yield to a page" do
|
52
62
|
the_page = nil
|
53
63
|
@context.page('Bar') {|page| the_page = page }
|
54
|
-
the_page.should be_an_instance_of(BarPage)
|
64
|
+
the_page.should be_an_instance_of(Foo::BarPage)
|
55
65
|
end
|
56
66
|
|
57
67
|
it "should pass the site browser instance to its pages " do
|
@@ -66,8 +76,7 @@ describe do
|
|
66
76
|
Taza::Settings.expects(:environment_settings).returns({:url => 'http://www.zoro.com'}).at_least_once
|
67
77
|
@context.site.origin.should == 'http://www.zoro.com'
|
68
78
|
end
|
69
|
-
|
70
|
-
|
79
|
+
|
71
80
|
it "should go to a relative url" do
|
72
81
|
@browser.expects(:goto).with('http://www.foo.com/page.html')
|
73
82
|
Taza::Settings.stubs(:config).returns(:url => 'http://www.foo.com')
|
@@ -91,6 +100,15 @@ describe do
|
|
91
100
|
it "should provide Spec::Matchers" do
|
92
101
|
@context.instance_eval { [1,2,3].should include(2) }
|
93
102
|
end
|
103
|
+
|
104
|
+
it "should load the methods files" do
|
105
|
+
defined?(Foo::Methods).should be_true
|
106
|
+
Foo::Methods.instance_methods.should include("spiderman")
|
107
|
+
end
|
108
|
+
|
109
|
+
it "should have user-site-methods defined as instance methods" do
|
110
|
+
@context.spiderman.should == 'i am spiderman'
|
111
|
+
end
|
94
112
|
end
|
95
113
|
|
96
114
|
describe Taza::Site do
|
data/spec/spec_generator_spec.rb
CHANGED
data/spec/spec_helper.rb
CHANGED
@@ -1,6 +1,14 @@
|
|
1
1
|
require 'rubygems'
|
2
2
|
require 'spec'
|
3
3
|
require 'mocha'
|
4
|
+
begin
|
5
|
+
# Needed for rspec 1.2.x. (Allows "ruby" to run specs.)
|
6
|
+
# But not available before that.
|
7
|
+
require 'spec/autorun'
|
8
|
+
rescue LoadError
|
9
|
+
nil
|
10
|
+
end
|
11
|
+
|
4
12
|
require 'config/vendorized_gems'
|
5
13
|
lib_path = File.expand_path("#{File.dirname(__FILE__)}/../lib")
|
6
14
|
$LOAD_PATH.unshift lib_path unless $LOAD_PATH.include?(lib_path)
|
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.
|
5
|
+
s.version = "0.5.0"
|
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-04-
|
9
|
+
s.date = %q{2009-04-10}
|
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 = ["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"]
|
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/method_generator_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/methods", "spec/sandbox/methods/spiderman.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/method", "watircraft_generators/method/method_generator.rb", "watircraft_generators/method/templates", "watircraft_generators/method/templates/method.rb.erb", "watircraft_generators/method/USAGE", "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://wiki.github.com/bret/watircraft}
|
18
18
|
s.rdoc_options = ["--main", "README.rdoc"]
|
@@ -0,0 +1,15 @@
|
|
1
|
+
Description:
|
2
|
+
|
3
|
+
Creates a template for a WatirCraft method. The method can be called
|
4
|
+
from a spec (in an "it", "before" or "after" block) or from a
|
5
|
+
step (a Given or When or Then block).
|
6
|
+
|
7
|
+
It can also be called from within script\console or as a method on the
|
8
|
+
site object.
|
9
|
+
|
10
|
+
The @browser and @site instance variables are available to your method.
|
11
|
+
|
12
|
+
Examples:
|
13
|
+
|
14
|
+
script\generate method notice
|
15
|
+
script\generate method empty_shopping_cart
|
@@ -0,0 +1,54 @@
|
|
1
|
+
require 'rubygems'
|
2
|
+
require 'rubigen'
|
3
|
+
require 'activesupport'
|
4
|
+
require 'watircraft/generator_helper'
|
5
|
+
require 'extensions/string'
|
6
|
+
|
7
|
+
class MethodGenerator < RubiGen::Base
|
8
|
+
include WatirCraft::GeneratorHelper
|
9
|
+
default_options :author => nil
|
10
|
+
attr_reader :name, :site_name
|
11
|
+
|
12
|
+
def initialize(runtime_args, runtime_options = {})
|
13
|
+
super
|
14
|
+
usage if args.empty?
|
15
|
+
@name = args.shift.computerize
|
16
|
+
@site_name = configured_validated_site
|
17
|
+
extract_options
|
18
|
+
end
|
19
|
+
|
20
|
+
def manifest
|
21
|
+
record do |m|
|
22
|
+
m.template "method.rb.erb", File.join('lib','methods',"#{name}.rb")
|
23
|
+
end
|
24
|
+
end
|
25
|
+
|
26
|
+
protected
|
27
|
+
def banner
|
28
|
+
<<-EOS
|
29
|
+
Creates a template for a WatirCraft method.
|
30
|
+
|
31
|
+
USAGE: #{$0} #{spec.name} name
|
32
|
+
|
33
|
+
EOS
|
34
|
+
end
|
35
|
+
|
36
|
+
def add_options!(opts)
|
37
|
+
# opts.separator ''
|
38
|
+
# opts.separator 'Options:'
|
39
|
+
# For each option below, place the default
|
40
|
+
# at the top of the file next to "default_options"
|
41
|
+
# opts.on("-a", "--author=\"Your Name\"", String,
|
42
|
+
# "Some comment about this option",
|
43
|
+
# "Default: none") { |options[:author]| }
|
44
|
+
# opts.on("-v", "--version", "Show the #{File.basename($0)} version number and quit.")
|
45
|
+
end
|
46
|
+
|
47
|
+
def extract_options
|
48
|
+
# for each option, extract it into a local variable (and create an "attr_reader :author" at the top)
|
49
|
+
# Templates can access these value via the attr_reader-generated methods, but not the
|
50
|
+
# raw instance variable value.
|
51
|
+
# @author = options[:author]
|
52
|
+
end
|
53
|
+
|
54
|
+
end
|
@@ -1,8 +1,8 @@
|
|
1
1
|
Description:
|
2
2
|
|
3
|
-
A page class collects elements that grouped together.
|
4
|
-
|
5
|
-
page, or for items which appear on many pages.
|
3
|
+
A page class collects elements that grouped together. Usually they all
|
4
|
+
appear on the same physical page. But you can also use page classes for
|
5
|
+
parts of a page, or for items which appear on many pages.
|
6
6
|
|
7
7
|
Examples:
|
8
8
|
|
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
|
+
version: 0.5.0
|
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-04-
|
15
|
+
date: 2009-04-10 00:00:00 -07:00
|
16
16
|
default_executable: watircraft
|
17
17
|
dependencies:
|
18
18
|
- !ruby/object:Gem::Dependency
|
@@ -119,6 +119,7 @@ files:
|
|
119
119
|
- spec/fixtures_spec.rb
|
120
120
|
- spec/fixture_spec.rb
|
121
121
|
- spec/hash_spec.rb
|
122
|
+
- spec/method_generator_spec.rb
|
122
123
|
- spec/object_spec.rb
|
123
124
|
- spec/page_generator_spec.rb
|
124
125
|
- spec/page_spec.rb
|
@@ -136,6 +137,8 @@ files:
|
|
136
137
|
- spec/sandbox/flows
|
137
138
|
- spec/sandbox/flows/batman.rb
|
138
139
|
- spec/sandbox/flows/robin.rb
|
140
|
+
- spec/sandbox/methods
|
141
|
+
- spec/sandbox/methods/spiderman.rb
|
139
142
|
- spec/sandbox/pages
|
140
143
|
- spec/sandbox/pages/foo
|
141
144
|
- spec/sandbox/pages/foo/bar_page.rb
|
@@ -170,6 +173,11 @@ files:
|
|
170
173
|
- app_generators/watircraft/templates/world.rb
|
171
174
|
- app_generators/watircraft/USAGE
|
172
175
|
- app_generators/watircraft/watircraft_generator.rb
|
176
|
+
- watircraft_generators/method
|
177
|
+
- watircraft_generators/method/method_generator.rb
|
178
|
+
- watircraft_generators/method/templates
|
179
|
+
- watircraft_generators/method/templates/method.rb.erb
|
180
|
+
- watircraft_generators/method/USAGE
|
173
181
|
- watircraft_generators/page
|
174
182
|
- watircraft_generators/page/page_generator.rb
|
175
183
|
- watircraft_generators/page/templates
|