capybara 0.3.6 → 0.3.7
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 +19 -0
- data/README.rdoc +19 -11
- data/lib/capybara.rb +1 -2
- data/lib/capybara/driver/rack_test_driver.rb +7 -2
- data/lib/capybara/server.rb +1 -1
- data/{spec/drivers_spec.rb → lib/capybara/spec/driver.rb} +5 -1
- data/{spec → lib/capybara/spec}/fixtures/capybara.jpg +0 -0
- data/{spec → lib/capybara/spec}/fixtures/test_file.txt +0 -0
- data/{spec → lib/capybara/spec}/public/jquery-ui.js +0 -0
- data/{spec → lib/capybara/spec}/public/jquery.js +0 -0
- data/{spec → lib/capybara/spec}/public/test.js +0 -0
- data/{spec/session_spec.rb → lib/capybara/spec/session.rb} +5 -1
- data/{spec/dsl → lib/capybara/spec/session}/all_spec.rb +0 -0
- data/{spec/dsl → lib/capybara/spec/session}/attach_file_spec.rb +0 -0
- data/{spec/dsl → lib/capybara/spec/session}/check_spec.rb +0 -0
- data/{spec/dsl → lib/capybara/spec/session}/choose_spec.rb +0 -0
- data/{spec/dsl → lib/capybara/spec/session}/click_button_spec.rb +0 -0
- data/{spec/dsl → lib/capybara/spec/session}/click_link_spec.rb +0 -0
- data/{spec/dsl → lib/capybara/spec/session}/click_spec.rb +0 -0
- data/{spec/dsl → lib/capybara/spec/session}/current_url_spec.rb +0 -0
- data/{spec/dsl → lib/capybara/spec/session}/fill_in_spec.rb +0 -0
- data/{spec/dsl → lib/capybara/spec/session}/find_button_spec.rb +0 -0
- data/{spec/dsl → lib/capybara/spec/session}/find_by_id_spec.rb +0 -0
- data/{spec/dsl → lib/capybara/spec/session}/find_field_spec.rb +0 -0
- data/{spec/dsl → lib/capybara/spec/session}/find_link_spec.rb +0 -0
- data/{spec/dsl → lib/capybara/spec/session}/find_spec.rb +0 -0
- data/{spec/dsl → lib/capybara/spec/session}/has_button_spec.rb +0 -0
- data/{spec/dsl → lib/capybara/spec/session}/has_content_spec.rb +0 -0
- data/{spec/dsl → lib/capybara/spec/session}/has_css_spec.rb +0 -0
- data/{spec/dsl → lib/capybara/spec/session}/has_field_spec.rb +0 -0
- data/{spec/dsl → lib/capybara/spec/session}/has_link_spec.rb +0 -0
- data/lib/capybara/spec/session/has_select_spec.rb +89 -0
- data/lib/capybara/spec/session/has_table_spec.rb +96 -0
- data/{spec/dsl → lib/capybara/spec/session}/has_xpath_spec.rb +0 -0
- data/lib/capybara/spec/session/headers.rb +19 -0
- data/{spec/session_with_javascript_support_spec.rb → lib/capybara/spec/session/javascript.rb} +11 -4
- data/{spec/dsl → lib/capybara/spec/session}/locate_spec.rb +0 -0
- data/{spec/dsl → lib/capybara/spec/session}/select_spec.rb +0 -0
- data/{spec/dsl → lib/capybara/spec/session}/uncheck_spec.rb +0 -0
- data/lib/capybara/spec/session/unselect_spec.rb +48 -0
- data/{spec/dsl → lib/capybara/spec/session}/within_spec.rb +0 -0
- data/{spec → lib/capybara/spec}/test_app.rb +4 -0
- data/{spec → lib/capybara/spec}/views/buttons.erb +0 -0
- data/{spec → lib/capybara/spec}/views/fieldsets.erb +0 -0
- data/{spec → lib/capybara/spec}/views/form.erb +0 -0
- data/{spec → lib/capybara/spec}/views/postback.erb +0 -0
- data/{spec → lib/capybara/spec}/views/tables.erb +0 -0
- data/{spec → lib/capybara/spec}/views/with_html.erb +1 -0
- data/{spec → lib/capybara/spec}/views/with_js.erb +0 -0
- data/{spec → lib/capybara/spec}/views/with_scope.erb +0 -0
- data/{spec → lib/capybara/spec}/views/with_simple_html.erb +0 -0
- data/lib/capybara/version.rb +3 -0
- data/spec/session/rack_test_session_spec.rb +8 -0
- data/spec/spec_helper.rb +2 -10
- metadata +54 -79
- data/Manifest.txt +0 -87
- data/Rakefile +0 -29
- data/config.ru +0 -6
- data/script/console +0 -10
- data/script/destroy +0 -14
- data/script/generate +0 -14
- data/spec/session_with_headers_support_spec.rb +0 -13
- data/spec/session_without_headers_support_spec.rb +0 -15
- data/spec/session_without_javascript_support_spec.rb +0 -15
data/History.txt
CHANGED
@@ -1,3 +1,22 @@
|
|
1
|
+
# Versiob 0.3.7
|
2
|
+
|
3
|
+
Release date: 2010-04-09
|
4
|
+
|
5
|
+
This is a drop in compatible maintainance release. It's mostly
|
6
|
+
important for driver authors.
|
7
|
+
|
8
|
+
### Added
|
9
|
+
|
10
|
+
* RackTest scans for data-method which rails3 uses to change the request method
|
11
|
+
|
12
|
+
### Fixed
|
13
|
+
|
14
|
+
* Don't hang when starting server on Windoze
|
15
|
+
|
16
|
+
### Changed
|
17
|
+
|
18
|
+
* The driver and session specs are now located inside lib! Driver authors can simply require them.
|
19
|
+
|
1
20
|
# Version 0.3.6
|
2
21
|
|
3
22
|
Release date: 2010-03-22
|
data/README.rdoc
CHANGED
@@ -101,6 +101,11 @@ At the moment, Capybara supports Webdriver, also called Selenium 2.0, *not*
|
|
101
101
|
Selenium RC. Provided Firefox is installed, everything is set up for you, and
|
102
102
|
you should be able to start using Selenium right away.
|
103
103
|
|
104
|
+
If desired, you can change Selenium browser to :chrome or :ie:
|
105
|
+
|
106
|
+
require "selenium-webdriver"
|
107
|
+
Selenium::WebDriver.for :chrome
|
108
|
+
|
104
109
|
== Celerity
|
105
110
|
|
106
111
|
Celerity only runs on JRuby, so you'll need to install the celerity gem under
|
@@ -217,7 +222,7 @@ You can also find specific elements, in order to manipulate them:
|
|
217
222
|
find_button('Send').click
|
218
223
|
|
219
224
|
find('//table/tr').click
|
220
|
-
|
225
|
+
locate("//*[@id='overlay'").find("//h1").click
|
221
226
|
all('a').each { |a| a[:href] }
|
222
227
|
|
223
228
|
=== Scripting
|
@@ -276,26 +281,27 @@ examples. Just load the DSL and include it anywhere:
|
|
276
281
|
require 'capybara'
|
277
282
|
require 'capybara/dsl'
|
278
283
|
|
279
|
-
include Capybara
|
280
284
|
Capybara.default_driver = :culerity
|
281
285
|
|
282
|
-
|
283
|
-
|
284
|
-
|
286
|
+
module MyModule
|
287
|
+
include Capybara
|
288
|
+
|
289
|
+
def login!
|
290
|
+
within("//form[@id='session']") do
|
291
|
+
fill_in 'Login', :with => 'user@example.com'
|
292
|
+
fill_in 'Password', :with => 'password'
|
293
|
+
end
|
294
|
+
click_link 'Sign in'
|
295
|
+
end
|
285
296
|
end
|
286
|
-
click_link 'Sign in'
|
287
297
|
|
288
298
|
== Calling remote servers
|
289
299
|
|
290
300
|
Normally Capybara expects to be testing an in-process Rack application, but you can also use it to talk to a web server running anywhere on the internets, by setting app_host:
|
291
301
|
|
292
|
-
require 'capybara'
|
293
|
-
require 'capybara/dsl'
|
294
|
-
|
295
|
-
include Capybara
|
296
302
|
Capybara.current_driver = :selenium
|
297
303
|
Capybara.app_host = 'http://www.google.com'
|
298
|
-
|
304
|
+
...
|
299
305
|
visit('/')
|
300
306
|
|
301
307
|
Note that rack-test does not support running against a remote server. With drivers that support it, you can also visit any URL directly:
|
@@ -383,6 +389,8 @@ The following people have dedicated their time and effort to Capybara:
|
|
383
389
|
* Darrin Holst
|
384
390
|
* Steven Parkes
|
385
391
|
* Davide Marquês
|
392
|
+
* Lucas Prim
|
393
|
+
* José Valim
|
386
394
|
|
387
395
|
== License:
|
388
396
|
|
data/lib/capybara.rb
CHANGED
@@ -2,8 +2,6 @@ require 'timeout'
|
|
2
2
|
require 'nokogiri'
|
3
3
|
|
4
4
|
module Capybara
|
5
|
-
VERSION = '0.3.6'
|
6
|
-
|
7
5
|
class CapybaraError < StandardError; end
|
8
6
|
class DriverNotFoundError < CapybaraError; end
|
9
7
|
class ElementNotFound < CapybaraError; end
|
@@ -37,6 +35,7 @@ module Capybara
|
|
37
35
|
autoload :Node, 'capybara/node'
|
38
36
|
autoload :XPath, 'capybara/xpath'
|
39
37
|
autoload :Searchable, 'capybara/searchable'
|
38
|
+
autoload :VERSION, 'capybara/version'
|
40
39
|
|
41
40
|
module Driver
|
42
41
|
autoload :Base, 'capybara/driver/base'
|
@@ -74,7 +74,8 @@ class Capybara::Driver::RackTest < Capybara::Driver::Base
|
|
74
74
|
|
75
75
|
def click
|
76
76
|
if tag_name == 'a'
|
77
|
-
|
77
|
+
method = self["data-method"] || :get
|
78
|
+
driver.process(method, self[:href].to_s)
|
78
79
|
elsif (tag_name == 'input' or tag_name == 'button') and %w(submit image).include?(type)
|
79
80
|
Form.new(driver, form).submit(self)
|
80
81
|
end
|
@@ -186,8 +187,12 @@ class Capybara::Driver::RackTest < Capybara::Driver::Base
|
|
186
187
|
end
|
187
188
|
|
188
189
|
def visit(path, attributes = {})
|
190
|
+
process(:get, path, attributes)
|
191
|
+
end
|
192
|
+
|
193
|
+
def process(method, path, attributes = {})
|
189
194
|
return if path.gsub(/^#{current_path}/, '') =~ /^#/
|
190
|
-
|
195
|
+
send(method, path, attributes, env)
|
191
196
|
follow_redirects!
|
192
197
|
end
|
193
198
|
|
data/lib/capybara/server.rb
CHANGED
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
@@ -1,6 +1,10 @@
|
|
1
|
-
require
|
1
|
+
require 'capybara/spec/test_app'
|
2
2
|
require 'nokogiri'
|
3
3
|
|
4
|
+
Dir[File.dirname(__FILE__)+'/session/*'].each { |group|
|
5
|
+
require group
|
6
|
+
}
|
7
|
+
|
4
8
|
shared_examples_for "session" do
|
5
9
|
def extract_results(session)
|
6
10
|
YAML.load Nokogiri::HTML(session.body).xpath("//pre[@id='results']").first.text
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
@@ -0,0 +1,89 @@
|
|
1
|
+
shared_examples_for "has_select" do
|
2
|
+
describe '#has_select?' do
|
3
|
+
before { @session.visit('/form') }
|
4
|
+
|
5
|
+
it "should be true if the field is on the page" do
|
6
|
+
@session.should have_select('Locale')
|
7
|
+
@session.should have_select('form_region')
|
8
|
+
@session.should have_select('Languages')
|
9
|
+
end
|
10
|
+
|
11
|
+
it "should be false if the field is not on the page" do
|
12
|
+
@session.should_not have_select('Monkey')
|
13
|
+
end
|
14
|
+
|
15
|
+
context 'with selected value' do
|
16
|
+
it "should be true if a field with the given value is on the page" do
|
17
|
+
@session.should have_select('form_locale', :selected => 'English')
|
18
|
+
@session.should have_select('Region', :selected => 'Norway')
|
19
|
+
@session.should have_select('Underwear', :selected => ['Briefs', 'Commando'])
|
20
|
+
end
|
21
|
+
|
22
|
+
it "should be false if the given field is not on the page" do
|
23
|
+
@session.should_not have_select('Locale', :selected => 'Swedish')
|
24
|
+
@session.should_not have_select('Does not exist', :selected => 'John')
|
25
|
+
@session.should_not have_select('City', :selected => 'Not there')
|
26
|
+
@session.should_not have_select('Underwear', :selected => ['Briefs', 'Nonexistant'])
|
27
|
+
@session.should_not have_select('Underwear', :selected => ['Briefs', 'Boxers'])
|
28
|
+
end
|
29
|
+
end
|
30
|
+
|
31
|
+
context 'with options' do
|
32
|
+
it "should be true if a field with the given options is on the page" do
|
33
|
+
@session.should have_select('form_locale', :options => ['English'])
|
34
|
+
@session.should have_select('Region', :options => ['Norway', 'Sweden'])
|
35
|
+
end
|
36
|
+
|
37
|
+
it "should be false if the given field is not on the page" do
|
38
|
+
@session.should_not have_select('Locale', :options => ['Not there'])
|
39
|
+
@session.should_not have_select('Does not exist', :options => ['John'])
|
40
|
+
@session.should_not have_select('City', :options => ['London', 'Made up city'])
|
41
|
+
end
|
42
|
+
end
|
43
|
+
end
|
44
|
+
|
45
|
+
describe '#has_no_select?' do
|
46
|
+
before { @session.visit('/form') }
|
47
|
+
|
48
|
+
it "should be false if the field is on the page" do
|
49
|
+
@session.should_not have_no_select('Locale')
|
50
|
+
@session.should_not have_no_select('form_region')
|
51
|
+
@session.should_not have_no_select('Languages')
|
52
|
+
end
|
53
|
+
|
54
|
+
it "should be true if the field is not on the page" do
|
55
|
+
@session.should have_no_select('Monkey')
|
56
|
+
end
|
57
|
+
|
58
|
+
context 'with selected value' do
|
59
|
+
it "should be false if a field with the given value is on the page" do
|
60
|
+
@session.should_not have_no_select('form_locale', :selected => 'English')
|
61
|
+
@session.should_not have_no_select('Region', :selected => 'Norway')
|
62
|
+
@session.should_not have_no_select('Underwear', :selected => ['Briefs', 'Commando'])
|
63
|
+
end
|
64
|
+
|
65
|
+
it "should be true if the given field is not on the page" do
|
66
|
+
@session.should have_no_select('Locale', :selected => 'Swedish')
|
67
|
+
@session.should have_no_select('Does not exist', :selected => 'John')
|
68
|
+
@session.should have_no_select('City', :selected => 'Not there')
|
69
|
+
@session.should have_no_select('Underwear', :selected => ['Briefs', 'Nonexistant'])
|
70
|
+
@session.should have_no_select('Underwear', :selected => ['Briefs', 'Boxers'])
|
71
|
+
end
|
72
|
+
end
|
73
|
+
|
74
|
+
context 'with options' do
|
75
|
+
it "should be false if a field with the given options is on the page" do
|
76
|
+
@session.should_not have_no_select('form_locale', :options => ['English'])
|
77
|
+
@session.should_not have_no_select('Region', :options => ['Norway', 'Sweden'])
|
78
|
+
end
|
79
|
+
|
80
|
+
it "should be true if the given field is not on the page" do
|
81
|
+
@session.should have_no_select('Locale', :options => ['Not there'])
|
82
|
+
@session.should have_no_select('Does not exist', :options => ['John'])
|
83
|
+
@session.should have_no_select('City', :options => ['London', 'Made up city'])
|
84
|
+
end
|
85
|
+
end
|
86
|
+
end
|
87
|
+
end
|
88
|
+
|
89
|
+
|
@@ -0,0 +1,96 @@
|
|
1
|
+
shared_examples_for "has_table" do
|
2
|
+
describe '#has_table?' do
|
3
|
+
before do
|
4
|
+
@session.visit('/tables')
|
5
|
+
end
|
6
|
+
|
7
|
+
it "should be true if the field is on the page" do
|
8
|
+
@session.should have_table('Deaths')
|
9
|
+
@session.should have_table('villain_table')
|
10
|
+
end
|
11
|
+
|
12
|
+
it "should be false if the field is not on the page" do
|
13
|
+
@session.should_not have_table('Monkey')
|
14
|
+
end
|
15
|
+
|
16
|
+
context 'with rows' do
|
17
|
+
it "should be true if a table with the given rows is on the page" do
|
18
|
+
@session.should have_table('Ransom', :rows => [['2007', '$300', '$100']])
|
19
|
+
@session.should have_table('Deaths', :rows => [['2007', '66', '7'], ['2008', '123', '12']])
|
20
|
+
end
|
21
|
+
|
22
|
+
it "should be true if the given rows are incomplete" do
|
23
|
+
@session.should have_table('Ransom', :rows => [['$300', '$100']])
|
24
|
+
end
|
25
|
+
|
26
|
+
it "should be false if the given table is not on the page" do
|
27
|
+
@session.should_not have_table('Does not exist', :selected => 'John')
|
28
|
+
end
|
29
|
+
|
30
|
+
it "should be false if the given rows contain incorrect elements" do
|
31
|
+
@session.should_not have_table('Ransom', :rows => [['2007', '$1000000000', '$100']])
|
32
|
+
end
|
33
|
+
|
34
|
+
it "should be false if the given rows are incorrectly ordered" do
|
35
|
+
@session.should_not have_table('Ransom', :rows => [['2007', '$100', '$300']])
|
36
|
+
end
|
37
|
+
|
38
|
+
it "should be false if the only some of the given rows are correct" do
|
39
|
+
@session.should_not have_table('Deaths', :rows => [['2007', '66', '7'], ['2007', '99999999', '12']])
|
40
|
+
end
|
41
|
+
|
42
|
+
it "should be false if the given rows are out of order" do
|
43
|
+
@session.should_not have_table('Deaths', :rows => [['2007', '123', '12'], ['2007', '66', '7']])
|
44
|
+
end
|
45
|
+
end
|
46
|
+
end
|
47
|
+
|
48
|
+
describe '#has_no_table?' do
|
49
|
+
before do
|
50
|
+
@session.visit('/tables')
|
51
|
+
end
|
52
|
+
|
53
|
+
it "should be false if the field is on the page" do
|
54
|
+
@session.should_not have_no_table('Deaths')
|
55
|
+
@session.should_not have_no_table('villain_table')
|
56
|
+
end
|
57
|
+
|
58
|
+
it "should be true if the field is not on the page" do
|
59
|
+
@session.should have_no_table('Monkey')
|
60
|
+
end
|
61
|
+
|
62
|
+
context 'with rows' do
|
63
|
+
it "should be false if a table with the given rows is on the page" do
|
64
|
+
@session.should_not have_no_table('Ransom', :rows => [['2007', '$300', '$100']])
|
65
|
+
@session.should_not have_no_table('Deaths', :rows => [['2007', '66', '7'], ['2008', '123', '12']])
|
66
|
+
end
|
67
|
+
|
68
|
+
it "should be false if the given rows are incomplete" do
|
69
|
+
@session.should_not have_no_table('Ransom', :rows => [['$300', '$100']])
|
70
|
+
end
|
71
|
+
|
72
|
+
it "should be true if the given table is not on the page" do
|
73
|
+
@session.should have_no_table('Does not exist', :selected => 'John')
|
74
|
+
end
|
75
|
+
|
76
|
+
it "should be true if the given rows contain incorrect elements" do
|
77
|
+
@session.should have_no_table('Ransom', :rows => [['2007', '$1000000000', '$100']])
|
78
|
+
end
|
79
|
+
|
80
|
+
it "should be true if the given rows are incorrectly ordered" do
|
81
|
+
@session.should have_no_table('Ransom', :rows => [['2007', '$100', '$300']])
|
82
|
+
end
|
83
|
+
|
84
|
+
it "should be true if the only some of the given rows are correct" do
|
85
|
+
@session.should have_no_table('Deaths', :rows => [['2007', '66', '7'], ['2007', '99999999', '12']])
|
86
|
+
end
|
87
|
+
|
88
|
+
it "should be true if the given rows are out of order" do
|
89
|
+
@session.should have_no_table('Deaths', :rows => [['2007', '123', '12'], ['2007', '66', '7']])
|
90
|
+
end
|
91
|
+
end
|
92
|
+
end
|
93
|
+
end
|
94
|
+
|
95
|
+
|
96
|
+
|
File without changes
|
@@ -0,0 +1,19 @@
|
|
1
|
+
shared_examples_for "session with headers support" do
|
2
|
+
describe '#response_headers' do
|
3
|
+
it "should return response headers" do
|
4
|
+
@session.visit('/with_simple_html')
|
5
|
+
@session.response_headers['Content-Type'].should == 'text/html'
|
6
|
+
end
|
7
|
+
end
|
8
|
+
end
|
9
|
+
|
10
|
+
shared_examples_for "session without headers support" do
|
11
|
+
describe "#response_headers" do
|
12
|
+
before{ @session.visit('/with_simple_html') }
|
13
|
+
it "should raise an error" do
|
14
|
+
running {
|
15
|
+
@session.response_headers
|
16
|
+
}.should raise_error(Capybara::NotSupportedByDriverError)
|
17
|
+
end
|
18
|
+
end
|
19
|
+
end
|
data/{spec/session_with_javascript_support_spec.rb → lib/capybara/spec/session/javascript.rb}
RENAMED
@@ -1,7 +1,3 @@
|
|
1
|
-
require File.expand_path('spec_helper', File.dirname(__FILE__))
|
2
|
-
|
3
|
-
require 'nokogiri'
|
4
|
-
|
5
1
|
shared_examples_for "session with javascript support" do
|
6
2
|
describe 'all JS specs' do
|
7
3
|
before do
|
@@ -195,3 +191,14 @@ shared_examples_for "session with javascript support" do
|
|
195
191
|
|
196
192
|
end
|
197
193
|
end
|
194
|
+
|
195
|
+
shared_examples_for "session without javascript support" do
|
196
|
+
describe "#evaluate_script" do
|
197
|
+
before{ @session.visit('/with_simple_html') }
|
198
|
+
it "should raise an error" do
|
199
|
+
running {
|
200
|
+
@session.evaluate_script('3 + 3')
|
201
|
+
}.should raise_error(Capybara::NotSupportedByDriverError)
|
202
|
+
end
|
203
|
+
end
|
204
|
+
end
|
File without changes
|
File without changes
|
File without changes
|
@@ -0,0 +1,48 @@
|
|
1
|
+
shared_examples_for "unselect" do
|
2
|
+
describe "#unselect" do
|
3
|
+
before do
|
4
|
+
@session.visit('/form')
|
5
|
+
end
|
6
|
+
|
7
|
+
context "with multiple select" do
|
8
|
+
it "should unselect an option from a select box by id" do
|
9
|
+
@session.unselect('Commando', :from => 'form_underwear')
|
10
|
+
@session.click_button('awesome')
|
11
|
+
extract_results(@session)['underwear'].should include('Briefs', 'Boxer Briefs')
|
12
|
+
extract_results(@session)['underwear'].should_not include('Commando')
|
13
|
+
end
|
14
|
+
|
15
|
+
it "should unselect an option from a select box by label" do
|
16
|
+
@session.unselect('Commando', :from => 'Underwear')
|
17
|
+
@session.click_button('awesome')
|
18
|
+
extract_results(@session)['underwear'].should include('Briefs', 'Boxer Briefs')
|
19
|
+
extract_results(@session)['underwear'].should_not include('Commando')
|
20
|
+
end
|
21
|
+
|
22
|
+
it "should favour exact matches to option labels" do
|
23
|
+
@session.unselect("Briefs", :from => 'Underwear')
|
24
|
+
@session.click_button('awesome')
|
25
|
+
extract_results(@session)['underwear'].should include('Commando', 'Boxer Briefs')
|
26
|
+
extract_results(@session)['underwear'].should_not include('Briefs')
|
27
|
+
end
|
28
|
+
end
|
29
|
+
|
30
|
+
context "with single select" do
|
31
|
+
it "should raise an error" do
|
32
|
+
running { @session.unselect("English", :from => 'form_locale') }.should raise_error(Capybara::UnselectNotAllowed)
|
33
|
+
end
|
34
|
+
end
|
35
|
+
|
36
|
+
context "with a locator that doesn't exist" do
|
37
|
+
it "should raise an error" do
|
38
|
+
running { @session.unselect('foo', :from => 'does not exist') }.should raise_error(Capybara::ElementNotFound)
|
39
|
+
end
|
40
|
+
end
|
41
|
+
|
42
|
+
context "with an option that doesn't exist" do
|
43
|
+
it "should raise an error" do
|
44
|
+
running { @session.unselect('Does not Exist', :from => 'form_underwear') }.should raise_error(Capybara::OptionNotFound)
|
45
|
+
end
|
46
|
+
end
|
47
|
+
end
|
48
|
+
end
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
@@ -23,6 +23,7 @@
|
|
23
23
|
<a href="/redirect_back">BackToMyself</a>
|
24
24
|
<a title="twas a fine link" href="/redirect">A link came first</a>
|
25
25
|
<a title="a fine link" href="/with_simple_html">A link</a>
|
26
|
+
<a title="a fine link with data method" data-method="delete" href="/delete">A link with data-method</a>
|
26
27
|
<a>No Href</a>
|
27
28
|
<a href="">Blank Href</a>
|
28
29
|
<a href="#">Blank Anchor</a>
|
File without changes
|
File without changes
|
File without changes
|
@@ -18,6 +18,14 @@ describe Capybara::Session do
|
|
18
18
|
end
|
19
19
|
end
|
20
20
|
|
21
|
+
describe '#click_link' do
|
22
|
+
it "should use data-method if available" do
|
23
|
+
@session.visit "/with_html"
|
24
|
+
@session.click_link "A link with data-method"
|
25
|
+
@session.body.should == 'The requested object was deleted'
|
26
|
+
end
|
27
|
+
end
|
28
|
+
|
21
29
|
it_should_behave_like "session"
|
22
30
|
it_should_behave_like "session without javascript support"
|
23
31
|
it_should_behave_like "session with headers support"
|
data/spec/spec_helper.rb
CHANGED
@@ -5,16 +5,8 @@ require 'rubygems'
|
|
5
5
|
require 'spec'
|
6
6
|
require 'spec/autorun'
|
7
7
|
require 'capybara'
|
8
|
-
require '
|
9
|
-
require '
|
10
|
-
require 'session_spec'
|
11
|
-
Dir[File.dirname(__FILE__)+'/dsl/*'].each { |group|
|
12
|
-
require group
|
13
|
-
}
|
14
|
-
require 'session_with_javascript_support_spec'
|
15
|
-
require 'session_without_javascript_support_spec'
|
16
|
-
require 'session_with_headers_support_spec'
|
17
|
-
require 'session_without_headers_support_spec'
|
8
|
+
require 'capybara/spec/driver'
|
9
|
+
require 'capybara/spec/session'
|
18
10
|
|
19
11
|
alias :running :lambda
|
20
12
|
|
metadata
CHANGED
@@ -5,8 +5,8 @@ version: !ruby/object:Gem::Version
|
|
5
5
|
segments:
|
6
6
|
- 0
|
7
7
|
- 3
|
8
|
-
-
|
9
|
-
version: 0.3.
|
8
|
+
- 7
|
9
|
+
version: 0.3.7
|
10
10
|
platform: ruby
|
11
11
|
authors:
|
12
12
|
- Jonas Nicklas
|
@@ -14,7 +14,7 @@ autorequire:
|
|
14
14
|
bindir: bin
|
15
15
|
cert_chain: []
|
16
16
|
|
17
|
-
date: 2010-
|
17
|
+
date: 2010-04-09 00:00:00 +02:00
|
18
18
|
default_executable:
|
19
19
|
dependencies:
|
20
20
|
- !ruby/object:Gem::Dependency
|
@@ -128,26 +128,7 @@ dependencies:
|
|
128
128
|
version: 1.2.9
|
129
129
|
type: :development
|
130
130
|
version_requirements: *id008
|
131
|
-
|
132
|
-
name: hoe
|
133
|
-
prerelease: false
|
134
|
-
requirement: &id009 !ruby/object:Gem::Requirement
|
135
|
-
requirements:
|
136
|
-
- - ">="
|
137
|
-
- !ruby/object:Gem::Version
|
138
|
-
segments:
|
139
|
-
- 2
|
140
|
-
- 5
|
141
|
-
- 0
|
142
|
-
version: 2.5.0
|
143
|
-
type: :development
|
144
|
-
version_requirements: *id009
|
145
|
-
description: |-
|
146
|
-
Capybara aims to simplify the process of integration testing Rack applications,
|
147
|
-
such as Rails, Sinatra or Merb. It is inspired by and aims to replace Webrat as
|
148
|
-
a DSL for interacting with a webapplication. It is agnostic about the driver
|
149
|
-
running your tests and currently comes bundled with rack-test, Culerity,
|
150
|
-
Celerity and Selenium support built in.
|
131
|
+
description: Capybara is an integration testing tool for rack based web applications. It simulates how a user would interact with a website
|
151
132
|
email:
|
152
133
|
- jonas.nicklas@gmail.com
|
153
134
|
executables: []
|
@@ -155,16 +136,8 @@ executables: []
|
|
155
136
|
extensions: []
|
156
137
|
|
157
138
|
extra_rdoc_files:
|
158
|
-
- History.txt
|
159
|
-
- Manifest.txt
|
160
139
|
- README.rdoc
|
161
140
|
files:
|
162
|
-
- History.txt
|
163
|
-
- Manifest.txt
|
164
|
-
- README.rdoc
|
165
|
-
- Rakefile
|
166
|
-
- config.ru
|
167
|
-
- lib/capybara.rb
|
168
141
|
- lib/capybara/cucumber.rb
|
169
142
|
- lib/capybara/driver/base.rb
|
170
143
|
- lib/capybara/driver/celerity_driver.rb
|
@@ -178,11 +151,56 @@ files:
|
|
178
151
|
- lib/capybara/searchable.rb
|
179
152
|
- lib/capybara/server.rb
|
180
153
|
- lib/capybara/session.rb
|
154
|
+
- lib/capybara/spec/driver.rb
|
155
|
+
- lib/capybara/spec/fixtures/capybara.jpg
|
156
|
+
- lib/capybara/spec/fixtures/test_file.txt
|
157
|
+
- lib/capybara/spec/public/jquery-ui.js
|
158
|
+
- lib/capybara/spec/public/jquery.js
|
159
|
+
- lib/capybara/spec/public/test.js
|
160
|
+
- lib/capybara/spec/session/all_spec.rb
|
161
|
+
- lib/capybara/spec/session/attach_file_spec.rb
|
162
|
+
- lib/capybara/spec/session/check_spec.rb
|
163
|
+
- lib/capybara/spec/session/choose_spec.rb
|
164
|
+
- lib/capybara/spec/session/click_button_spec.rb
|
165
|
+
- lib/capybara/spec/session/click_link_spec.rb
|
166
|
+
- lib/capybara/spec/session/click_spec.rb
|
167
|
+
- lib/capybara/spec/session/current_url_spec.rb
|
168
|
+
- lib/capybara/spec/session/fill_in_spec.rb
|
169
|
+
- lib/capybara/spec/session/find_button_spec.rb
|
170
|
+
- lib/capybara/spec/session/find_by_id_spec.rb
|
171
|
+
- lib/capybara/spec/session/find_field_spec.rb
|
172
|
+
- lib/capybara/spec/session/find_link_spec.rb
|
173
|
+
- lib/capybara/spec/session/find_spec.rb
|
174
|
+
- lib/capybara/spec/session/has_button_spec.rb
|
175
|
+
- lib/capybara/spec/session/has_content_spec.rb
|
176
|
+
- lib/capybara/spec/session/has_css_spec.rb
|
177
|
+
- lib/capybara/spec/session/has_field_spec.rb
|
178
|
+
- lib/capybara/spec/session/has_link_spec.rb
|
179
|
+
- lib/capybara/spec/session/has_select_spec.rb
|
180
|
+
- lib/capybara/spec/session/has_table_spec.rb
|
181
|
+
- lib/capybara/spec/session/has_xpath_spec.rb
|
182
|
+
- lib/capybara/spec/session/headers.rb
|
183
|
+
- lib/capybara/spec/session/javascript.rb
|
184
|
+
- lib/capybara/spec/session/locate_spec.rb
|
185
|
+
- lib/capybara/spec/session/select_spec.rb
|
186
|
+
- lib/capybara/spec/session/uncheck_spec.rb
|
187
|
+
- lib/capybara/spec/session/unselect_spec.rb
|
188
|
+
- lib/capybara/spec/session/within_spec.rb
|
189
|
+
- lib/capybara/spec/session.rb
|
190
|
+
- lib/capybara/spec/test_app.rb
|
191
|
+
- lib/capybara/spec/views/buttons.erb
|
192
|
+
- lib/capybara/spec/views/fieldsets.erb
|
193
|
+
- lib/capybara/spec/views/form.erb
|
194
|
+
- lib/capybara/spec/views/postback.erb
|
195
|
+
- lib/capybara/spec/views/tables.erb
|
196
|
+
- lib/capybara/spec/views/with_html.erb
|
197
|
+
- lib/capybara/spec/views/with_js.erb
|
198
|
+
- lib/capybara/spec/views/with_scope.erb
|
199
|
+
- lib/capybara/spec/views/with_simple_html.erb
|
200
|
+
- lib/capybara/version.rb
|
181
201
|
- lib/capybara/wait_until.rb
|
182
202
|
- lib/capybara/xpath.rb
|
183
|
-
-
|
184
|
-
- script/destroy
|
185
|
-
- script/generate
|
203
|
+
- lib/capybara.rb
|
186
204
|
- spec/capybara_spec.rb
|
187
205
|
- spec/driver/celerity_driver_spec.rb
|
188
206
|
- spec/driver/culerity_driver_spec.rb
|
@@ -190,37 +208,7 @@ files:
|
|
190
208
|
- spec/driver/remote_culerity_driver_spec.rb
|
191
209
|
- spec/driver/remote_selenium_driver_spec.rb
|
192
210
|
- spec/driver/selenium_driver_spec.rb
|
193
|
-
- spec/drivers_spec.rb
|
194
|
-
- spec/dsl/all_spec.rb
|
195
|
-
- spec/dsl/attach_file_spec.rb
|
196
|
-
- spec/dsl/check_spec.rb
|
197
|
-
- spec/dsl/choose_spec.rb
|
198
|
-
- spec/dsl/click_button_spec.rb
|
199
|
-
- spec/dsl/click_link_spec.rb
|
200
|
-
- spec/dsl/click_spec.rb
|
201
|
-
- spec/dsl/current_url_spec.rb
|
202
|
-
- spec/dsl/fill_in_spec.rb
|
203
|
-
- spec/dsl/find_button_spec.rb
|
204
|
-
- spec/dsl/find_by_id_spec.rb
|
205
|
-
- spec/dsl/find_field_spec.rb
|
206
|
-
- spec/dsl/find_link_spec.rb
|
207
|
-
- spec/dsl/find_spec.rb
|
208
|
-
- spec/dsl/has_button_spec.rb
|
209
|
-
- spec/dsl/has_content_spec.rb
|
210
|
-
- spec/dsl/has_css_spec.rb
|
211
|
-
- spec/dsl/has_field_spec.rb
|
212
|
-
- spec/dsl/has_link_spec.rb
|
213
|
-
- spec/dsl/has_xpath_spec.rb
|
214
|
-
- spec/dsl/locate_spec.rb
|
215
|
-
- spec/dsl/select_spec.rb
|
216
|
-
- spec/dsl/uncheck_spec.rb
|
217
|
-
- spec/dsl/within_spec.rb
|
218
211
|
- spec/dsl_spec.rb
|
219
|
-
- spec/fixtures/capybara.jpg
|
220
|
-
- spec/fixtures/test_file.txt
|
221
|
-
- spec/public/jquery-ui.js
|
222
|
-
- spec/public/jquery.js
|
223
|
-
- spec/public/test.js
|
224
212
|
- spec/save_and_open_page_spec.rb
|
225
213
|
- spec/searchable_spec.rb
|
226
214
|
- spec/server_spec.rb
|
@@ -228,24 +216,11 @@ files:
|
|
228
216
|
- spec/session/culerity_session_spec.rb
|
229
217
|
- spec/session/rack_test_session_spec.rb
|
230
218
|
- spec/session/selenium_session_spec.rb
|
231
|
-
- spec/session_spec.rb
|
232
|
-
- spec/session_with_headers_support_spec.rb
|
233
|
-
- spec/session_with_javascript_support_spec.rb
|
234
|
-
- spec/session_without_headers_support_spec.rb
|
235
|
-
- spec/session_without_javascript_support_spec.rb
|
236
219
|
- spec/spec_helper.rb
|
237
|
-
- spec/test_app.rb
|
238
|
-
- spec/views/buttons.erb
|
239
|
-
- spec/views/fieldsets.erb
|
240
|
-
- spec/views/form.erb
|
241
|
-
- spec/views/postback.erb
|
242
|
-
- spec/views/tables.erb
|
243
|
-
- spec/views/with_html.erb
|
244
|
-
- spec/views/with_js.erb
|
245
|
-
- spec/views/with_scope.erb
|
246
|
-
- spec/views/with_simple_html.erb
|
247
220
|
- spec/wait_until_spec.rb
|
248
221
|
- spec/xpath_spec.rb
|
222
|
+
- README.rdoc
|
223
|
+
- History.txt
|
249
224
|
has_rdoc: true
|
250
225
|
homepage: http://github.com/jnicklas/capybara
|
251
226
|
licenses: []
|
data/Manifest.txt
DELETED
@@ -1,87 +0,0 @@
|
|
1
|
-
History.txt
|
2
|
-
Manifest.txt
|
3
|
-
README.rdoc
|
4
|
-
Rakefile
|
5
|
-
config.ru
|
6
|
-
lib/capybara.rb
|
7
|
-
lib/capybara/cucumber.rb
|
8
|
-
lib/capybara/driver/base.rb
|
9
|
-
lib/capybara/driver/celerity_driver.rb
|
10
|
-
lib/capybara/driver/culerity_driver.rb
|
11
|
-
lib/capybara/driver/rack_test_driver.rb
|
12
|
-
lib/capybara/driver/selenium_driver.rb
|
13
|
-
lib/capybara/dsl.rb
|
14
|
-
lib/capybara/node.rb
|
15
|
-
lib/capybara/rails.rb
|
16
|
-
lib/capybara/save_and_open_page.rb
|
17
|
-
lib/capybara/searchable.rb
|
18
|
-
lib/capybara/server.rb
|
19
|
-
lib/capybara/session.rb
|
20
|
-
lib/capybara/wait_until.rb
|
21
|
-
lib/capybara/xpath.rb
|
22
|
-
script/console
|
23
|
-
script/destroy
|
24
|
-
script/generate
|
25
|
-
spec/capybara_spec.rb
|
26
|
-
spec/driver/celerity_driver_spec.rb
|
27
|
-
spec/driver/culerity_driver_spec.rb
|
28
|
-
spec/driver/rack_test_driver_spec.rb
|
29
|
-
spec/driver/remote_culerity_driver_spec.rb
|
30
|
-
spec/driver/remote_selenium_driver_spec.rb
|
31
|
-
spec/driver/selenium_driver_spec.rb
|
32
|
-
spec/drivers_spec.rb
|
33
|
-
spec/dsl/all_spec.rb
|
34
|
-
spec/dsl/attach_file_spec.rb
|
35
|
-
spec/dsl/check_spec.rb
|
36
|
-
spec/dsl/choose_spec.rb
|
37
|
-
spec/dsl/click_button_spec.rb
|
38
|
-
spec/dsl/click_link_spec.rb
|
39
|
-
spec/dsl/click_spec.rb
|
40
|
-
spec/dsl/current_url_spec.rb
|
41
|
-
spec/dsl/fill_in_spec.rb
|
42
|
-
spec/dsl/find_button_spec.rb
|
43
|
-
spec/dsl/find_by_id_spec.rb
|
44
|
-
spec/dsl/find_field_spec.rb
|
45
|
-
spec/dsl/find_link_spec.rb
|
46
|
-
spec/dsl/find_spec.rb
|
47
|
-
spec/dsl/has_button_spec.rb
|
48
|
-
spec/dsl/has_content_spec.rb
|
49
|
-
spec/dsl/has_css_spec.rb
|
50
|
-
spec/dsl/has_field_spec.rb
|
51
|
-
spec/dsl/has_link_spec.rb
|
52
|
-
spec/dsl/has_xpath_spec.rb
|
53
|
-
spec/dsl/locate_spec.rb
|
54
|
-
spec/dsl/select_spec.rb
|
55
|
-
spec/dsl/uncheck_spec.rb
|
56
|
-
spec/dsl/within_spec.rb
|
57
|
-
spec/dsl_spec.rb
|
58
|
-
spec/fixtures/capybara.jpg
|
59
|
-
spec/fixtures/test_file.txt
|
60
|
-
spec/public/jquery-ui.js
|
61
|
-
spec/public/jquery.js
|
62
|
-
spec/public/test.js
|
63
|
-
spec/save_and_open_page_spec.rb
|
64
|
-
spec/searchable_spec.rb
|
65
|
-
spec/server_spec.rb
|
66
|
-
spec/session/celerity_session_spec.rb
|
67
|
-
spec/session/culerity_session_spec.rb
|
68
|
-
spec/session/rack_test_session_spec.rb
|
69
|
-
spec/session/selenium_session_spec.rb
|
70
|
-
spec/session_spec.rb
|
71
|
-
spec/session_with_headers_support_spec.rb
|
72
|
-
spec/session_with_javascript_support_spec.rb
|
73
|
-
spec/session_without_headers_support_spec.rb
|
74
|
-
spec/session_without_javascript_support_spec.rb
|
75
|
-
spec/spec_helper.rb
|
76
|
-
spec/test_app.rb
|
77
|
-
spec/views/buttons.erb
|
78
|
-
spec/views/fieldsets.erb
|
79
|
-
spec/views/form.erb
|
80
|
-
spec/views/postback.erb
|
81
|
-
spec/views/tables.erb
|
82
|
-
spec/views/with_html.erb
|
83
|
-
spec/views/with_js.erb
|
84
|
-
spec/views/with_scope.erb
|
85
|
-
spec/views/with_simple_html.erb
|
86
|
-
spec/wait_until_spec.rb
|
87
|
-
spec/xpath_spec.rb
|
data/Rakefile
DELETED
@@ -1,29 +0,0 @@
|
|
1
|
-
require 'rubygems'
|
2
|
-
|
3
|
-
gem 'hoe', '>= 2.1.0'
|
4
|
-
require 'hoe'
|
5
|
-
|
6
|
-
Hoe.plugin :newgem
|
7
|
-
|
8
|
-
# Generate all the Rake tasks
|
9
|
-
# Run 'rake -T' to see list of generated tasks (from gem root directory)
|
10
|
-
Hoe.spec 'capybara' do
|
11
|
-
developer 'Jonas Nicklas', 'jonas.nicklas@gmail.com'
|
12
|
-
|
13
|
-
self.readme_file = 'README.rdoc'
|
14
|
-
self.extra_rdoc_files = Dir['*.rdoc']
|
15
|
-
|
16
|
-
self.extra_deps = [
|
17
|
-
['nokogiri', '>= 1.3.3'],
|
18
|
-
['mime-types', '>= 1.16'],
|
19
|
-
['culerity', '>= 0.2.4'],
|
20
|
-
['selenium-webdriver', '>= 0.0.3'],
|
21
|
-
['rack', '>= 1.0.0'],
|
22
|
-
['rack-test', '>= 0.5.2'],
|
23
|
-
]
|
24
|
-
|
25
|
-
self.extra_dev_deps = [
|
26
|
-
['sinatra', '>= 0.9.4'],
|
27
|
-
['rspec', '>= 1.2.9']
|
28
|
-
]
|
29
|
-
end
|
data/config.ru
DELETED
data/script/console
DELETED
@@ -1,10 +0,0 @@
|
|
1
|
-
#!/usr/bin/env ruby
|
2
|
-
# File: script/console
|
3
|
-
irb = RUBY_PLATFORM =~ /(:?mswin|mingw)/ ? 'irb.bat' : 'irb'
|
4
|
-
|
5
|
-
libs = " -r irb/completion"
|
6
|
-
# Perhaps use a console_lib to store any extra methods I may want available in the cosole
|
7
|
-
# libs << " -r #{File.dirname(__FILE__) + '/../lib/console_lib/console_logger.rb'}"
|
8
|
-
libs << " -r #{File.dirname(__FILE__) + '/../lib/capybara.rb'}"
|
9
|
-
puts "Loading capybara gem"
|
10
|
-
exec "#{irb} #{libs} --simple-prompt"
|
data/script/destroy
DELETED
@@ -1,14 +0,0 @@
|
|
1
|
-
#!/usr/bin/env ruby
|
2
|
-
APP_ROOT = File.expand_path(File.join(File.dirname(__FILE__), '..'))
|
3
|
-
|
4
|
-
begin
|
5
|
-
require 'rubigen'
|
6
|
-
rescue LoadError
|
7
|
-
require 'rubygems'
|
8
|
-
require 'rubigen'
|
9
|
-
end
|
10
|
-
require 'rubigen/scripts/destroy'
|
11
|
-
|
12
|
-
ARGV.shift if ['--help', '-h'].include?(ARGV[0])
|
13
|
-
RubiGen::Base.use_component_sources! [:rubygems, :newgem, :newgem_theme, :test_unit]
|
14
|
-
RubiGen::Scripts::Destroy.new.run(ARGV)
|
data/script/generate
DELETED
@@ -1,14 +0,0 @@
|
|
1
|
-
#!/usr/bin/env ruby
|
2
|
-
APP_ROOT = File.expand_path(File.join(File.dirname(__FILE__), '..'))
|
3
|
-
|
4
|
-
begin
|
5
|
-
require 'rubigen'
|
6
|
-
rescue LoadError
|
7
|
-
require 'rubygems'
|
8
|
-
require 'rubigen'
|
9
|
-
end
|
10
|
-
require 'rubigen/scripts/generate'
|
11
|
-
|
12
|
-
ARGV.shift if ['--help', '-h'].include?(ARGV[0])
|
13
|
-
RubiGen::Base.use_component_sources! [:rubygems, :newgem, :newgem_theme, :test_unit]
|
14
|
-
RubiGen::Scripts::Generate.new.run(ARGV)
|
@@ -1,13 +0,0 @@
|
|
1
|
-
require File.expand_path('spec_helper', File.dirname(__FILE__))
|
2
|
-
|
3
|
-
|
4
|
-
shared_examples_for "session with headers support" do
|
5
|
-
|
6
|
-
describe '#response_headers' do
|
7
|
-
it "should return response headers" do
|
8
|
-
@session.visit('/with_simple_html')
|
9
|
-
@session.response_headers['Content-Type'].should == 'text/html'
|
10
|
-
end
|
11
|
-
end
|
12
|
-
|
13
|
-
end
|
@@ -1,15 +0,0 @@
|
|
1
|
-
require File.expand_path('spec_helper', File.dirname(__FILE__))
|
2
|
-
|
3
|
-
require 'nokogiri'
|
4
|
-
|
5
|
-
shared_examples_for "session without headers support" do
|
6
|
-
describe "#evaluate_script" do
|
7
|
-
before{ @session.visit('/with_simple_html') }
|
8
|
-
it "should raise an error" do
|
9
|
-
running {
|
10
|
-
@session.response_headers
|
11
|
-
}.should raise_error(Capybara::NotSupportedByDriverError)
|
12
|
-
end
|
13
|
-
end
|
14
|
-
end
|
15
|
-
|
@@ -1,15 +0,0 @@
|
|
1
|
-
require File.expand_path('spec_helper', File.dirname(__FILE__))
|
2
|
-
|
3
|
-
require 'nokogiri'
|
4
|
-
|
5
|
-
shared_examples_for "session without javascript support" do
|
6
|
-
describe "#evaluate_script" do
|
7
|
-
before{ @session.visit('/with_js') }
|
8
|
-
it "should raise an error" do
|
9
|
-
running {
|
10
|
-
@session.evaluate_script("1+5")
|
11
|
-
}.should raise_error(Capybara::NotSupportedByDriverError)
|
12
|
-
end
|
13
|
-
end
|
14
|
-
|
15
|
-
end
|