bret-watircraft 0.4.2 → 0.4.3
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/BUGS.txt +1 -4
- data/History.txt +25 -0
- data/README.rdoc +103 -8
- data/VERSION.yml +2 -2
- data/app_generators/watircraft/templates/world.rb +1 -0
- data/lib/taza/page.rb +1 -0
- data/lib/watircraft/table.rb +5 -3
- data/lib/watircraft/version.rb +1 -1
- data/spec/page_spec.rb +11 -6
- data/spec/watir_spec.rb +39 -36
- data/watircraft.gemspec +5 -7
- metadata +5 -15
data/BUGS.txt
CHANGED
@@ -1,9 +1,6 @@
|
|
1
1
|
Known Bugs
|
2
2
|
|
3
3
|
* Can't install on mac. (This used to work.)
|
4
|
-
* The name of the element underlying each field is not consistent. In pages,
|
5
|
-
it is called foo_field; in tables, foo_element. (Should probably be
|
6
|
-
foo_element in both places.)
|
7
4
|
* Page fields do not support Radio lists. Workaround: use elements.
|
8
|
-
|
5
|
+
|
9
6
|
|
data/History.txt
CHANGED
@@ -1,3 +1,28 @@
|
|
1
|
+
=== 0.4.3 / 2009-03-31
|
2
|
+
|
3
|
+
Bug Fixes
|
4
|
+
|
5
|
+
* WatirCraft can now be installed on a Mac (again).
|
6
|
+
* Page#url now returns the full url of the page.
|
7
|
+
|
8
|
+
Table Fixes
|
9
|
+
|
10
|
+
* Field elements/fields can now reference current row as "row", consistent
|
11
|
+
with page elements/fields being referencing browser as "browser".
|
12
|
+
(Previously you had to use @row, which still works.)
|
13
|
+
* Element names of table fields are now named x_field, consistent with page
|
14
|
+
fields. (Previously was x_element.)
|
15
|
+
* Fields that aren't found for some rows will no longer cause errors
|
16
|
+
when used as accessors.
|
17
|
+
|
18
|
+
Readme Updates
|
19
|
+
|
20
|
+
* Update install instructions.
|
21
|
+
* Add Google example.
|
22
|
+
* Update feature list.
|
23
|
+
* Add additional information (feedback, mailing list, WatirCraft LLC)
|
24
|
+
* Identify Github/readme as homepage for project.
|
25
|
+
|
1
26
|
=== 0.4.2 / 2009-03-24
|
2
27
|
|
3
28
|
* Fixed "can't find site generator" bug that occured when creating a new project.
|
data/README.rdoc
CHANGED
@@ -14,7 +14,10 @@ a place to put things.
|
|
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
16
|
* Configure application URL and browser type (IE, Firefox) in one location.
|
17
|
-
*
|
17
|
+
* Uses templates to create tests and libraries.
|
18
|
+
* Automatically initializes browser for testing.
|
19
|
+
* Provides the glue to ensure your tests can find your libraries. Don't
|
20
|
+
write another "require" statement again.
|
18
21
|
|
19
22
|
== APPROACH
|
20
23
|
|
@@ -30,19 +33,111 @@ get the benefit.
|
|
30
33
|
|
31
34
|
== INSTALL
|
32
35
|
|
33
|
-
|
34
|
-
|
36
|
+
Run the following if you haven't already:
|
37
|
+
|
38
|
+
> gem update --system
|
39
|
+
> gem sources -a http://gems.github.com
|
40
|
+
|
41
|
+
Install the gem:
|
42
|
+
|
43
|
+
> gem install bret-watircraft
|
44
|
+
|
45
|
+
See the History.txt file for detailed notes on the contents of each release.
|
46
|
+
|
47
|
+
== GETTING STARTED
|
48
|
+
|
49
|
+
Use the +watircraft+ command to create your project. Your project will contain
|
50
|
+
your tests, your libraries, your configuration files, and all the glue code
|
51
|
+
necessary to allow it all to work together. Let's create a project for
|
52
|
+
testing Google.
|
53
|
+
|
54
|
+
> watircraft google
|
55
|
+
|
56
|
+
This will create a directory called "google" and populate it with a bunch of
|
57
|
+
directories and files.
|
58
|
+
|
59
|
+
You'll need to edit the <tt>config\environments.yml</tt> file to point to you base
|
60
|
+
url of your project.
|
61
|
+
|
62
|
+
test:
|
63
|
+
url: http://google.com
|
64
|
+
|
65
|
+
By default, your tests will run in the "test" environment, but you can specify
|
66
|
+
additional environments later. When you run your tests, you can specify which environment
|
67
|
+
to use on the command line.
|
68
|
+
|
69
|
+
Use the <tt>script\generate</tt> command to populate your project with project files.
|
70
|
+
This command must be run from the top of your project.
|
71
|
+
|
72
|
+
> cd google
|
73
|
+
|
74
|
+
Create a test. WatirCraft uses the RSpec test harness and therefore calls a
|
75
|
+
test a "spec".
|
76
|
+
|
77
|
+
> script\generate spec search
|
78
|
+
|
79
|
+
This creates a bare template for a test. Edit the file that was just created
|
80
|
+
(<tt>test/specs/search_spec.rb</tt>) and add the following
|
81
|
+
lines.
|
82
|
+
|
83
|
+
browser.text_field(:name, 'q').set 'WatirCraft'
|
84
|
+
browser.button(:name, 'btnG').click
|
85
|
+
browser.text.should include('Test automation for web applications')
|
86
|
+
|
87
|
+
The WatirCraft framework will automatically start the browser at the
|
88
|
+
configured url when you run it.
|
89
|
+
|
90
|
+
After you have added these lines to the template, the complete file will
|
91
|
+
look like this.
|
92
|
+
|
93
|
+
$LOAD_PATH.unshift File.dirname(__FILE__) unless
|
94
|
+
$LOAD_PATH.include? File.dirname(__FILE__)
|
95
|
+
require 'spec_helper'
|
96
|
+
|
97
|
+
describe "Search" do
|
98
|
+
|
99
|
+
it "should find WatirCraft" do
|
100
|
+
browser.text_field(:name, 'q').set 'WatirCraft'
|
101
|
+
browser.button(:name, 'btnG').click
|
102
|
+
browser.text.should include('Test automation for web applications')
|
103
|
+
end
|
104
|
+
|
105
|
+
end
|
106
|
+
|
107
|
+
Use the +rake+ command to run the tests for your project(only one so far).
|
108
|
+
This needs to be run from the base of your project.
|
109
|
+
|
110
|
+
> rake spec
|
111
|
+
|
112
|
+
By default, your test runs with Internet Explorer, but you can also run it
|
113
|
+
with Firefox.
|
114
|
+
|
115
|
+
> rake spec BROWSER=firefox
|
116
|
+
|
117
|
+
You can also just run individual files.
|
118
|
+
|
119
|
+
> ruby test/specs/search_spec.rb
|
120
|
+
|
121
|
+
Note that many editors will do this automatically for you. For example the
|
122
|
+
Scite editor will do this when you hit "F5".
|
35
123
|
|
36
124
|
== EXAMPLE
|
37
125
|
|
38
126
|
An example test suite for this framework can be found in the framework
|
39
|
-
examples project on github. Look in the watircraft directory.
|
40
|
-
* http://github.com/bret/framework-examples
|
127
|
+
examples project on github. Look in the +watircraft+ directory.
|
128
|
+
* http://github.com/bret/framework-examples
|
129
|
+
|
130
|
+
== QUESTIONS AND FEEDBACK
|
131
|
+
|
132
|
+
Join our mailing list for WatirCraft users.
|
133
|
+
* http://tech.groups.yahoo.com/group/watir-framework
|
41
134
|
|
42
|
-
|
135
|
+
The WatirCraft framework is developed by WatirCraft LLC, based on Taza[http://github.com/scudco/taza/wikis].
|
136
|
+
Please send bug reports, feature requests and other comments to us at feedback@watircraft.com[mailto:feedback@watircraft.com]
|
43
137
|
|
44
|
-
WatirCraft
|
45
|
-
|
138
|
+
WatirCraft LLC provides training and consulting for Watir, Ruby and the
|
139
|
+
WatirCraft framework.
|
140
|
+
* http://www.watircraft.com
|
46
141
|
|
47
142
|
== LICENSE
|
48
143
|
|
data/VERSION.yml
CHANGED
data/lib/taza/page.rb
CHANGED
data/lib/watircraft/table.rb
CHANGED
@@ -19,8 +19,9 @@ module WatirCraft
|
|
19
19
|
wrapped = self.class.row_class.new row
|
20
20
|
# note: we are only looking at the first key/value
|
21
21
|
method = selector.keys[0]
|
22
|
-
|
23
|
-
|
22
|
+
target_value = selector[method]
|
23
|
+
row_value = wrapped.send(method) rescue next
|
24
|
+
return wrapped if row_value == target_value
|
24
25
|
end
|
25
26
|
nil
|
26
27
|
end
|
@@ -34,7 +35,7 @@ module WatirCraft
|
|
34
35
|
end
|
35
36
|
end
|
36
37
|
def field name, &block
|
37
|
-
element_name = "#{name}
|
38
|
+
element_name = "#{name}_field"
|
38
39
|
element element_name, &block
|
39
40
|
define_method(name) do
|
40
41
|
send(element_name).display_value
|
@@ -44,6 +45,7 @@ module WatirCraft
|
|
44
45
|
end
|
45
46
|
end
|
46
47
|
end
|
48
|
+
attr_reader :row
|
47
49
|
def initialize watir_row
|
48
50
|
@row = watir_row
|
49
51
|
end
|
data/lib/watircraft/version.rb
CHANGED
data/spec/page_spec.rb
CHANGED
@@ -119,6 +119,7 @@ describe Taza::Page do
|
|
119
119
|
page = CheckOutPage.new
|
120
120
|
page.site = Class.new(Taza::Site).new(:browser => browser)
|
121
121
|
page.full_url.should == 'http://www.llamas.com/check_out'
|
122
|
+
page.url.should == page.full_url
|
122
123
|
end
|
123
124
|
|
124
125
|
it "should create elements for fields" do
|
@@ -289,8 +290,9 @@ describe Taza::Page do
|
|
289
290
|
@page_class.class_eval do
|
290
291
|
element(:results_table) {fake_table}
|
291
292
|
table(:results) do
|
292
|
-
field(:name){
|
293
|
-
field(:phone){
|
293
|
+
field(:name){row.element(:letter)}
|
294
|
+
field(:phone){row.element(:number)}
|
295
|
+
field(:missing){raise 'not found'}
|
294
296
|
end
|
295
297
|
end
|
296
298
|
@table_page = @page_class.new
|
@@ -305,7 +307,7 @@ describe Taza::Page do
|
|
305
307
|
|
306
308
|
it "fields should have underlying elements" do
|
307
309
|
uses_table_page
|
308
|
-
@table_page.results.row(:name => 'x').
|
310
|
+
@table_page.results.row(:name => 'x').phone_field.should exist
|
309
311
|
end
|
310
312
|
|
311
313
|
it "should have elements" do
|
@@ -316,8 +318,8 @@ describe Taza::Page do
|
|
316
318
|
]
|
317
319
|
end
|
318
320
|
table(:results) do
|
319
|
-
field(:name){
|
320
|
-
element(:phone){
|
321
|
+
field(:name){row.element(:letter)}
|
322
|
+
element(:phone){row.element(:number)}
|
321
323
|
end
|
322
324
|
end
|
323
325
|
@table_page = @page_class.new
|
@@ -335,7 +337,10 @@ describe Taza::Page do
|
|
335
337
|
@table_page.results.row(:name => 'x').should exist
|
336
338
|
end
|
337
339
|
|
338
|
-
|
340
|
+
it "should not raise an exception if a field isn't found" do
|
341
|
+
uses_table_page
|
342
|
+
@table_page.results.row(:missing => 'nada').should be_nil
|
343
|
+
end
|
339
344
|
|
340
345
|
end
|
341
346
|
|
data/spec/watir_spec.rb
CHANGED
@@ -1,36 +1,39 @@
|
|
1
|
-
|
2
|
-
require '
|
3
|
-
require 'watir
|
4
|
-
require 'firewatir'
|
5
|
-
require 'extensions/watir'
|
6
|
-
|
7
|
-
describe 'Watir Extensions' do
|
8
|
-
share_examples_for 'extended watir' do
|
9
|
-
def should_provide_display_value_method_for_class klass
|
10
|
-
container = stub()
|
11
|
-
container.stubs(:page_container)
|
12
|
-
element = klass.new container, :index, 1
|
13
|
-
element.method(:display_value) # should be defined
|
14
|
-
end
|
15
|
-
|
16
|
-
specify { should_provide_display_value_method_for_class @module::TextField }
|
17
|
-
specify { should_provide_display_value_method_for_class @module::NonControlElement}
|
18
|
-
specify { should_provide_display_value_method_for_class @module::H3 }
|
19
|
-
end
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
1
|
+
|
2
|
+
require 'spec/spec_helper'
|
3
|
+
require 'watir'
|
4
|
+
require 'firewatir'
|
5
|
+
require 'extensions/watir'
|
6
|
+
|
7
|
+
describe 'Watir Extensions' do
|
8
|
+
share_examples_for 'extended watir' do
|
9
|
+
def should_provide_display_value_method_for_class klass
|
10
|
+
container = stub()
|
11
|
+
container.stubs(:page_container)
|
12
|
+
element = klass.new container, :index, 1
|
13
|
+
element.method(:display_value) # should be defined
|
14
|
+
end
|
15
|
+
|
16
|
+
specify { should_provide_display_value_method_for_class @module::TextField }
|
17
|
+
specify { should_provide_display_value_method_for_class @module::NonControlElement}
|
18
|
+
specify { should_provide_display_value_method_for_class @module::H3 }
|
19
|
+
end
|
20
|
+
|
21
|
+
if PLATFORM =~ /mswin/
|
22
|
+
describe "IE Watir" do
|
23
|
+
require 'watir/ie'
|
24
|
+
it_should_behave_like 'extended watir'
|
25
|
+
Watir.add_display_value_methods_to Watir
|
26
|
+
before do
|
27
|
+
@module = Watir
|
28
|
+
end
|
29
|
+
end
|
30
|
+
end
|
31
|
+
|
32
|
+
describe "Fire Watir" do
|
33
|
+
it_should_behave_like 'extended watir'
|
34
|
+
Watir.add_display_value_methods_to FireWatir
|
35
|
+
before do
|
36
|
+
@module = FireWatir
|
37
|
+
end
|
38
|
+
end
|
39
|
+
end
|
data/watircraft.gemspec
CHANGED
@@ -2,30 +2,30 @@
|
|
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.3"
|
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-03-31}
|
10
10
|
s.default_executable = %q{watircraft}
|
11
|
-
s.description = %q{WatirCraft is a framework for web
|
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
15
|
s.files = ["BUGS.txt", "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/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
|
+
s.homepage = %q{http://github.com/bret/watircraft/tree/master}
|
17
18
|
s.rdoc_options = ["--main", "README.rdoc"]
|
18
19
|
s.require_paths = ["lib"]
|
19
20
|
s.rubyforge_project = %q{watir}
|
20
21
|
s.rubygems_version = %q{1.3.1}
|
21
|
-
s.summary = %q{WatirCraft is a framework for web
|
22
|
+
s.summary = %q{WatirCraft is a framework for testing web apps.}
|
22
23
|
|
23
24
|
if s.respond_to? :specification_version then
|
24
25
|
current_version = Gem::Specification::CURRENT_SPECIFICATION_VERSION
|
25
26
|
s.specification_version = 2
|
26
27
|
|
27
28
|
if Gem::Version.new(Gem::RubyGemsVersion) >= Gem::Version.new('1.2.0') then
|
28
|
-
s.add_runtime_dependency(%q<watir>, [">= 1.6.2"])
|
29
29
|
s.add_runtime_dependency(%q<taglob>, [">= 1.1.1"])
|
30
30
|
s.add_runtime_dependency(%q<rake>, [">= 0.8.3"])
|
31
31
|
s.add_runtime_dependency(%q<mocha>, [">= 0.9.3"])
|
@@ -33,7 +33,6 @@ Gem::Specification.new do |s|
|
|
33
33
|
s.add_runtime_dependency(%q<rspec>, ["= 1.1.12"])
|
34
34
|
s.add_runtime_dependency(%q<cucumber>, ["= 0.1.16"])
|
35
35
|
else
|
36
|
-
s.add_dependency(%q<watir>, [">= 1.6.2"])
|
37
36
|
s.add_dependency(%q<taglob>, [">= 1.1.1"])
|
38
37
|
s.add_dependency(%q<rake>, [">= 0.8.3"])
|
39
38
|
s.add_dependency(%q<mocha>, [">= 0.9.3"])
|
@@ -42,7 +41,6 @@ Gem::Specification.new do |s|
|
|
42
41
|
s.add_dependency(%q<cucumber>, ["= 0.1.16"])
|
43
42
|
end
|
44
43
|
else
|
45
|
-
s.add_dependency(%q<watir>, [">= 1.6.2"])
|
46
44
|
s.add_dependency(%q<taglob>, [">= 1.1.1"])
|
47
45
|
s.add_dependency(%q<rake>, [">= 0.8.3"])
|
48
46
|
s.add_dependency(%q<mocha>, [">= 0.9.3"])
|
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.3
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Bret Pettichord
|
@@ -12,19 +12,9 @@ autorequire:
|
|
12
12
|
bindir: bin
|
13
13
|
cert_chain: []
|
14
14
|
|
15
|
-
date: 2009-03-
|
15
|
+
date: 2009-03-31 00:00:00 -07:00
|
16
16
|
default_executable: watircraft
|
17
17
|
dependencies:
|
18
|
-
- !ruby/object:Gem::Dependency
|
19
|
-
name: watir
|
20
|
-
type: :runtime
|
21
|
-
version_requirement:
|
22
|
-
version_requirements: !ruby/object:Gem::Requirement
|
23
|
-
requirements:
|
24
|
-
- - ">="
|
25
|
-
- !ruby/object:Gem::Version
|
26
|
-
version: 1.6.2
|
27
|
-
version:
|
28
18
|
- !ruby/object:Gem::Dependency
|
29
19
|
name: taglob
|
30
20
|
type: :runtime
|
@@ -85,7 +75,7 @@ dependencies:
|
|
85
75
|
- !ruby/object:Gem::Version
|
86
76
|
version: 0.1.16
|
87
77
|
version:
|
88
|
-
description: WatirCraft is a framework for web
|
78
|
+
description: WatirCraft is a framework for testing web apps.
|
89
79
|
email: bret@pettichord.com
|
90
80
|
executables:
|
91
81
|
- watircraft
|
@@ -196,7 +186,7 @@ files:
|
|
196
186
|
- watircraft_generators/steps/templates/steps.rb.erb
|
197
187
|
- watircraft_generators/steps/USAGE
|
198
188
|
has_rdoc: true
|
199
|
-
homepage:
|
189
|
+
homepage: http://github.com/bret/watircraft/tree/master
|
200
190
|
post_install_message:
|
201
191
|
rdoc_options:
|
202
192
|
- --main
|
@@ -221,6 +211,6 @@ rubyforge_project: watir
|
|
221
211
|
rubygems_version: 1.2.0
|
222
212
|
signing_key:
|
223
213
|
specification_version: 2
|
224
|
-
summary: WatirCraft is a framework for web
|
214
|
+
summary: WatirCraft is a framework for testing web apps.
|
225
215
|
test_files: []
|
226
216
|
|