capybara 0.1

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.
Files changed (43) hide show
  1. data/History.txt +4 -0
  2. data/Manifest.txt +42 -0
  3. data/README.rdoc +208 -0
  4. data/Rakefile +33 -0
  5. data/examples/webcat.rb +36 -0
  6. data/lib/capybara.rb +30 -0
  7. data/lib/capybara/core_ext/tcp_socket.rb +26 -0
  8. data/lib/capybara/cucumber.rb +32 -0
  9. data/lib/capybara/driver/culerity_driver.rb +83 -0
  10. data/lib/capybara/driver/firewatir_driver.rb +66 -0
  11. data/lib/capybara/driver/rack_test_driver.rb +151 -0
  12. data/lib/capybara/driver/safariwatir_driver.rb +67 -0
  13. data/lib/capybara/driver/selenium_driver.rb +93 -0
  14. data/lib/capybara/dsl.rb +58 -0
  15. data/lib/capybara/node.rb +36 -0
  16. data/lib/capybara/rails.rb +11 -0
  17. data/lib/capybara/save_and_open_page.rb +25 -0
  18. data/lib/capybara/server.rb +53 -0
  19. data/lib/capybara/session.rb +190 -0
  20. data/script/console +10 -0
  21. data/script/destroy +14 -0
  22. data/script/generate +14 -0
  23. data/spec/driver/culerity_driver_spec.rb +10 -0
  24. data/spec/driver/firewatir_driver_spec.rb +10 -0
  25. data/spec/driver/rack_test_driver_spec.rb +9 -0
  26. data/spec/driver/safariwarit_driver_spec.rb +10 -0
  27. data/spec/driver/selenium_driver_spec.rb +10 -0
  28. data/spec/drivers_spec.rb +72 -0
  29. data/spec/dsl_spec.rb +139 -0
  30. data/spec/fixtures/test_file.txt +1 -0
  31. data/spec/public/jquery.js +19 -0
  32. data/spec/session/culerity_session_spec.rb +23 -0
  33. data/spec/session/rack_test_session_spec.rb +23 -0
  34. data/spec/session/selenium_session_spec.rb +23 -0
  35. data/spec/session_spec.rb +611 -0
  36. data/spec/spec_helper.rb +10 -0
  37. data/spec/test_app.rb +67 -0
  38. data/spec/views/form.erb +117 -0
  39. data/spec/views/with_html.erb +19 -0
  40. data/spec/views/with_js.erb +20 -0
  41. data/spec/views/with_scope.erb +36 -0
  42. data/spec/views/with_simple_html.erb +1 -0
  43. metadata +164 -0
@@ -0,0 +1,10 @@
1
+ $:.unshift(File.expand_path('../lib', File.dirname(__FILE__)))
2
+ $:.unshift(File.dirname(__FILE__))
3
+
4
+ require 'rubygems'
5
+ require 'capybara'
6
+ require 'test_app'
7
+ require 'drivers_spec'
8
+ require 'session_spec'
9
+
10
+ alias :running :lambda
@@ -0,0 +1,67 @@
1
+ require 'sinatra/base'
2
+ require 'rack'
3
+
4
+ class TestApp < Sinatra::Base
5
+ set :root, File.dirname(__FILE__)
6
+ set :static, true
7
+
8
+ get '/' do
9
+ 'Hello world!'
10
+ end
11
+
12
+ get '/foo' do
13
+ 'Another World'
14
+ end
15
+
16
+ get '/with_html' do
17
+ erb :with_html
18
+ end
19
+
20
+ get '/with_js' do
21
+ erb :with_js
22
+ end
23
+
24
+ get '/with_simple_html' do
25
+ erb :with_simple_html
26
+ end
27
+
28
+ get '/with_scope' do
29
+ erb :with_scope
30
+ end
31
+
32
+ get '/form' do
33
+ erb :form
34
+ end
35
+
36
+ post '/redirect' do
37
+ redirect '/redirect_again'
38
+ end
39
+
40
+ get '/redirect' do
41
+ redirect '/redirect_again'
42
+ end
43
+
44
+ get '/redirect_again' do
45
+ redirect '/landed'
46
+ end
47
+
48
+ get '/landed' do
49
+ "You landed"
50
+ end
51
+
52
+ post '/form' do
53
+ '<pre id="results">' + params[:form].to_yaml + '</pre>'
54
+ end
55
+
56
+ get '/form/get' do
57
+ '<pre id="results">' + params[:form].to_yaml + '</pre>'
58
+ end
59
+
60
+ post '/upload' do
61
+ params[:form][:document][:tempfile].read
62
+ end
63
+ end
64
+
65
+ if __FILE__ == $0
66
+ Rack::Handler::Mongrel.run TestApp, :Port => 8070
67
+ end
@@ -0,0 +1,117 @@
1
+ <h1>Form</h1>
2
+
3
+ <form action="/form" method="post">
4
+ <p>
5
+ <label for="form_first_name">First Name</label>
6
+ <input type="text" name="form[first_name]" value="John" id="form_first_name"/>
7
+ </p>
8
+
9
+ <p>
10
+ <label for="form_last_name">Last Name</label>
11
+ <input type="text" name="form[last_name]" value="Smith" id="form_last_name"/>
12
+ </p>
13
+
14
+ <p>
15
+ <label for="form_password">Password</label>
16
+ <input type="password" name="form[password]" value="seeekrit" id="form_password"/>
17
+ </p>
18
+
19
+ <p>
20
+ <label for="form_image">Image</label>
21
+ <input type="file" name="form[image]" id="form_image"/>
22
+ </p>
23
+
24
+ <p>
25
+ <input type="hidden" name="form[token]" value="12345" id="form_token"/>
26
+ </p>
27
+
28
+ <p>
29
+ <label for="form_locale">Locale</label>
30
+ <select name="form[locale]" id="form_locale">
31
+ <option value="sv">Swedish</option>
32
+ <option selected="selected" value="en">English</option>
33
+ <option value="fi">Finish</option>
34
+ <option value="no">Norwegian</option>
35
+ </select>
36
+ </p>
37
+
38
+ <p>
39
+ <label for="form_region">Region</label>
40
+ <select name="form[region]" id="form_region">
41
+ <option>Sweden</option>
42
+ <option selected="selected">Norway</option>
43
+ <option>Finland</option>
44
+ </select>
45
+ </p>
46
+
47
+ <p>
48
+ <label for="form_city">City</label>
49
+ <select name="form[city]" id="form_city">
50
+ <option>London</option>
51
+ <option>Stockholm</option>
52
+ <option>Paris</option>
53
+ </select>
54
+ </p>
55
+
56
+ <p>
57
+ <label for="form_tendency">Tendency</label>
58
+ <select name="form[tendency]" id="form_tendency"></select>
59
+ </p>
60
+
61
+ <p>
62
+ <label for="form_description">Description</label></br>
63
+ <textarea name="form[description]" id="form_description">Descriptive text goes here</textarea>
64
+ <p>
65
+
66
+ <p>
67
+ <input type="radio" name="form[gender]" value="male" id="gender_male"/>
68
+ <label for="gender_male">Male</label>
69
+ <input type="radio" name="form[gender]" value="female" id="gender_female" checked="checked"/>
70
+ <label for="gender_female">Female</label>
71
+ <input type="radio" name="form[gender]" value="both" id="gender_both"/>
72
+ <label for="gender_both">Both</label>
73
+ </p>
74
+
75
+ <p>
76
+ <input type="checkbox" value="dog" name="form[pets][]" id="form_pets_dog" checked="checked"/>
77
+ <label for="form_pets_dog">Dog</label>
78
+ <input type="checkbox" value="cat" name="form[pets][]" id="form_pets_cat"/>
79
+ <label for="form_pets_cat">Cat</label>
80
+ <input type="checkbox" value="hamster" name="form[pets][]" id="form_pets_hamster" checked="checked"/>
81
+ <label for="form_pets_hamster">Hamster</label>
82
+ </p>
83
+
84
+ <p>
85
+ <input type="submit" name="form[awesome]" id="awe123" value="awesome"/>
86
+ <input type="submit" name="form[crappy]" id="crap321" value="crappy"/>
87
+ <input type="image" name="form[okay]" id="okay556" value="okay"/>
88
+ </p>
89
+ </form>
90
+
91
+ <form action="/form/get?foo=bar" method="get">
92
+ <p>
93
+ <label for="form_middle_name">Middle Name</label>
94
+ <input type="text" name="form[middle_name]" value="Darren" id="form_middle_name"/>
95
+ </p>
96
+
97
+ <p>
98
+ <input type="submit" name="form[mediocre]" id="mediocre" value="med"/>
99
+ <p>
100
+ </form>
101
+
102
+ <form action="/upload" method="post" enctype="multipart/form-data">
103
+ <p>
104
+ <label for="form_document">Document</label>
105
+ <input type="file" name="form[document]" id="form_document"/>
106
+ </p>
107
+
108
+ <p>
109
+ <input type="submit" value="Upload"/>
110
+ <p>
111
+ </form>
112
+
113
+ <form action="/redirect" method="post">
114
+ <p>
115
+ <input type="submit" value="Go FAR"/>
116
+ </p>
117
+ </form>
@@ -0,0 +1,19 @@
1
+ <h1>This is a test</h1>
2
+
3
+ <p id="first">
4
+ Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod
5
+ tempor incididunt ut <a href="/with_simple_html" title="awesome title" class="simple">labore</a>
6
+ et dolore magna aliqua. Ut enim ad minim veniam,
7
+ quis nostrud exercitation <a href="/foo" id="foo">ullamco</a> laboris nisi
8
+ ut aliquip ex ea commodo consequat.
9
+ </p>
10
+
11
+ <p id="second">
12
+ Duis aute irure dolor in reprehenderit in voluptate velit esse cillum
13
+ dolore eu fugiat <a href="/redirect" id="red">Redirect</a> pariatur. Excepteur sint occaecat cupidatat non proident,
14
+ sunt in culpa qui officia deserunt mollit anim id est laborum.
15
+ </p>
16
+
17
+ <p>
18
+ <input type="text" id="test_field" value="monkey"/>
19
+ </p>
@@ -0,0 +1,20 @@
1
+ <html xmlns="http://www.w3.org/1999/xhtml" lang="en">
2
+ <head>
3
+ <meta http-equiv="Content-type" content="text/html; charset=utf-8"/>
4
+ <title>with_js</title>
5
+ <script src="/jquery.js" type="text/javascript" charset="utf-8"></script>
6
+ <script type="text/javascript" charset="utf-8">
7
+ //<![CDATA[
8
+ $(function() {
9
+ $('#change').text('I changed it');
10
+ });
11
+ //]]>
12
+ </script>
13
+ </head>
14
+
15
+ <body id="with_js">
16
+ <h1>FooBar</h1>
17
+
18
+ <p id="change">This is text</p>
19
+ </body>
20
+ </html>
@@ -0,0 +1,36 @@
1
+ <h1>This page is used for testing various scopes</h1>
2
+
3
+ <p id="for_foo">
4
+ Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor
5
+ incididunt ut labore et dolore magna aliqua. Ut enim ad minim venia.
6
+ <a href="/redirect">Go</a>
7
+ </p>
8
+
9
+ <div id="for_bar">
10
+ <ul>
11
+ <li>With Simple HTML: <a href="/with_simple_html">Go</a>
12
+ <form action="/redirect" method="post" accept-charset="utf-8">
13
+ <p>
14
+ <label for="simple_first_name">First Name</label>
15
+ <input type="text" name="first_name" value="John" id="simple_first_name"/>
16
+ </p>
17
+ <p><input type="submit" value="Go"/></p>
18
+ </form>
19
+ </li>
20
+ <li>Bar: <a href="/foo">Go</a>
21
+ <form action="/form" method="post" accept-charset="utf-8">
22
+ <p>
23
+ <label for="bar_first_name">First Name</label>
24
+ <input type="text" name="form[first_name]" value="Peter" id="bar_first_name"/>
25
+ </p>
26
+ <p><input type="submit" value="Go"/></p>
27
+ </form>
28
+ </li>
29
+ </ul>
30
+ </div>
31
+
32
+ <div id="another_foo">
33
+ <ul>
34
+ <li>With Simple HTML: <a href="/">Go</a>
35
+ </ul>
36
+ </div>
@@ -0,0 +1 @@
1
+ <h1>Bar</h1>
metadata ADDED
@@ -0,0 +1,164 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: capybara
3
+ version: !ruby/object:Gem::Version
4
+ version: "0.1"
5
+ platform: ruby
6
+ authors:
7
+ - Jonas Nicklas
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+
12
+ date: 2009-11-19 00:00:00 +01:00
13
+ default_executable:
14
+ dependencies:
15
+ - !ruby/object:Gem::Dependency
16
+ name: nokogiri
17
+ type: :runtime
18
+ version_requirement:
19
+ version_requirements: !ruby/object:Gem::Requirement
20
+ requirements:
21
+ - - ">="
22
+ - !ruby/object:Gem::Version
23
+ version: 1.3.3
24
+ version:
25
+ - !ruby/object:Gem::Dependency
26
+ name: culerity
27
+ type: :runtime
28
+ version_requirement:
29
+ version_requirements: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - ">="
32
+ - !ruby/object:Gem::Version
33
+ version: 0.2.3
34
+ version:
35
+ - !ruby/object:Gem::Dependency
36
+ name: selenium-webdriver
37
+ type: :runtime
38
+ version_requirement:
39
+ version_requirements: !ruby/object:Gem::Requirement
40
+ requirements:
41
+ - - ">="
42
+ - !ruby/object:Gem::Version
43
+ version: 0.0.3
44
+ version:
45
+ - !ruby/object:Gem::Dependency
46
+ name: rack
47
+ type: :runtime
48
+ version_requirement:
49
+ version_requirements: !ruby/object:Gem::Requirement
50
+ requirements:
51
+ - - ">="
52
+ - !ruby/object:Gem::Version
53
+ version: 1.0.0
54
+ version:
55
+ - !ruby/object:Gem::Dependency
56
+ name: database_cleaner
57
+ type: :runtime
58
+ version_requirement:
59
+ version_requirements: !ruby/object:Gem::Requirement
60
+ requirements:
61
+ - - ">="
62
+ - !ruby/object:Gem::Version
63
+ version: 0.2.3
64
+ version:
65
+ - !ruby/object:Gem::Dependency
66
+ name: hoe
67
+ type: :development
68
+ version_requirement:
69
+ version_requirements: !ruby/object:Gem::Requirement
70
+ requirements:
71
+ - - ">="
72
+ - !ruby/object:Gem::Version
73
+ version: 2.3.3
74
+ version:
75
+ description: |-
76
+ Capybara aims to simplify the process of integration testing Rack applications,
77
+ such as Rails, Sinatra or Merb. It is inspired by and aims to replace Webrat as
78
+ a DSL for interacting with a webapplication. It is agnostic about the driver
79
+ running your tests and currently comes bundled with rack-test, Culerity and
80
+ Selenium support built in.
81
+ email:
82
+ - jonas.nicklas@gmail.com
83
+ executables: []
84
+
85
+ extensions: []
86
+
87
+ extra_rdoc_files:
88
+ - History.txt
89
+ - Manifest.txt
90
+ - README.rdoc
91
+ files:
92
+ - History.txt
93
+ - Manifest.txt
94
+ - README.rdoc
95
+ - Rakefile
96
+ - examples/webcat.rb
97
+ - lib/capybara.rb
98
+ - lib/capybara/core_ext/tcp_socket.rb
99
+ - lib/capybara/cucumber.rb
100
+ - lib/capybara/driver/culerity_driver.rb
101
+ - lib/capybara/driver/firewatir_driver.rb
102
+ - lib/capybara/driver/rack_test_driver.rb
103
+ - lib/capybara/driver/safariwatir_driver.rb
104
+ - lib/capybara/driver/selenium_driver.rb
105
+ - lib/capybara/dsl.rb
106
+ - lib/capybara/node.rb
107
+ - lib/capybara/rails.rb
108
+ - lib/capybara/save_and_open_page.rb
109
+ - lib/capybara/server.rb
110
+ - lib/capybara/session.rb
111
+ - script/console
112
+ - script/destroy
113
+ - script/generate
114
+ - spec/driver/culerity_driver_spec.rb
115
+ - spec/driver/firewatir_driver_spec.rb
116
+ - spec/driver/rack_test_driver_spec.rb
117
+ - spec/driver/safariwarit_driver_spec.rb
118
+ - spec/driver/selenium_driver_spec.rb
119
+ - spec/drivers_spec.rb
120
+ - spec/dsl_spec.rb
121
+ - spec/fixtures/test_file.txt
122
+ - spec/public/jquery.js
123
+ - spec/session/culerity_session_spec.rb
124
+ - spec/session/rack_test_session_spec.rb
125
+ - spec/session/selenium_session_spec.rb
126
+ - spec/session_spec.rb
127
+ - spec/spec_helper.rb
128
+ - spec/test_app.rb
129
+ - spec/views/form.erb
130
+ - spec/views/with_html.erb
131
+ - spec/views/with_js.erb
132
+ - spec/views/with_scope.erb
133
+ - spec/views/with_simple_html.erb
134
+ has_rdoc: true
135
+ homepage: http://github.com/jnicklas/capybara
136
+ licenses: []
137
+
138
+ post_install_message:
139
+ rdoc_options:
140
+ - --main
141
+ - README.rdoc
142
+ require_paths:
143
+ - lib
144
+ required_ruby_version: !ruby/object:Gem::Requirement
145
+ requirements:
146
+ - - ">="
147
+ - !ruby/object:Gem::Version
148
+ version: "0"
149
+ version:
150
+ required_rubygems_version: !ruby/object:Gem::Requirement
151
+ requirements:
152
+ - - ">="
153
+ - !ruby/object:Gem::Version
154
+ version: "0"
155
+ version:
156
+ requirements: []
157
+
158
+ rubyforge_project: capybara
159
+ rubygems_version: 1.3.5
160
+ signing_key:
161
+ specification_version: 3
162
+ summary: Capybara aims to simplify the process of integration testing Rack applications, such as Rails, Sinatra or Merb
163
+ test_files: []
164
+