capybara 0.1

Sign up to get free protection for your applications and to get access to all the features.
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
+