katzil-capybara 0.3.8
Sign up to get free protection for your applications and to get access to all the features.
- data.tar.gz.sig +0 -0
- data/History.txt +87 -0
- data/Manifest +89 -0
- data/README.rdoc +7 -0
- data/Rakefile +14 -0
- data/katzil-capybara.gemspec +32 -0
- data/lib/capybara.rb +52 -0
- data/lib/capybara/cucumber.rb +32 -0
- data/lib/capybara/driver/base.rb +48 -0
- data/lib/capybara/driver/celerity_driver.rb +143 -0
- data/lib/capybara/driver/culerity_driver.rb +25 -0
- data/lib/capybara/driver/rack_test_driver.rb +271 -0
- data/lib/capybara/driver/selenium_driver.rb +156 -0
- data/lib/capybara/dsl.rb +60 -0
- data/lib/capybara/node.rb +60 -0
- data/lib/capybara/rails.rb +17 -0
- data/lib/capybara/save_and_open_page.rb +33 -0
- data/lib/capybara/searchable.rb +54 -0
- data/lib/capybara/server.rb +114 -0
- data/lib/capybara/server.rb.orig +114 -0
- data/lib/capybara/session.rb +262 -0
- data/lib/capybara/spec/driver.rb +162 -0
- data/lib/capybara/spec/fixtures/capybara.jpg +0 -0
- data/lib/capybara/spec/fixtures/test_file.txt +1 -0
- data/lib/capybara/spec/public/jquery-ui.js +35 -0
- data/lib/capybara/spec/public/jquery.js +19 -0
- data/lib/capybara/spec/public/test.js +33 -0
- data/lib/capybara/spec/session.rb +81 -0
- data/lib/capybara/spec/session/all_spec.rb +69 -0
- data/lib/capybara/spec/session/attach_file_spec.rb +64 -0
- data/lib/capybara/spec/session/check_spec.rb +67 -0
- data/lib/capybara/spec/session/choose_spec.rb +26 -0
- data/lib/capybara/spec/session/click_button_spec.rb +236 -0
- data/lib/capybara/spec/session/click_link_spec.rb +108 -0
- data/lib/capybara/spec/session/click_spec.rb +24 -0
- data/lib/capybara/spec/session/current_url_spec.rb +8 -0
- data/lib/capybara/spec/session/fill_in_spec.rb +108 -0
- data/lib/capybara/spec/session/find_button_spec.rb +16 -0
- data/lib/capybara/spec/session/find_by_id_spec.rb +16 -0
- data/lib/capybara/spec/session/find_field_spec.rb +22 -0
- data/lib/capybara/spec/session/find_link_spec.rb +17 -0
- data/lib/capybara/spec/session/find_spec.rb +57 -0
- data/lib/capybara/spec/session/has_button_spec.rb +32 -0
- data/lib/capybara/spec/session/has_content_spec.rb +106 -0
- data/lib/capybara/spec/session/has_css_spec.rb +107 -0
- data/lib/capybara/spec/session/has_field_spec.rb +96 -0
- data/lib/capybara/spec/session/has_link_spec.rb +33 -0
- data/lib/capybara/spec/session/has_select_spec.rb +89 -0
- data/lib/capybara/spec/session/has_table_spec.rb +96 -0
- data/lib/capybara/spec/session/has_xpath_spec.rb +123 -0
- data/lib/capybara/spec/session/headers.rb +19 -0
- data/lib/capybara/spec/session/javascript.rb +204 -0
- data/lib/capybara/spec/session/locate_spec.rb +59 -0
- data/lib/capybara/spec/session/select_spec.rb +77 -0
- data/lib/capybara/spec/session/uncheck_spec.rb +21 -0
- data/lib/capybara/spec/session/unselect_spec.rb +54 -0
- data/lib/capybara/spec/session/within_spec.rb +153 -0
- data/lib/capybara/spec/test_app.rb +75 -0
- data/lib/capybara/spec/views/buttons.erb +4 -0
- data/lib/capybara/spec/views/fieldsets.erb +29 -0
- data/lib/capybara/spec/views/form.erb +234 -0
- data/lib/capybara/spec/views/frame_one.erb +8 -0
- data/lib/capybara/spec/views/frame_two.erb +8 -0
- data/lib/capybara/spec/views/postback.erb +13 -0
- data/lib/capybara/spec/views/tables.erb +122 -0
- data/lib/capybara/spec/views/with_html.erb +42 -0
- data/lib/capybara/spec/views/with_js.erb +39 -0
- data/lib/capybara/spec/views/with_scope.erb +36 -0
- data/lib/capybara/spec/views/with_simple_html.erb +1 -0
- data/lib/capybara/spec/views/within_frames.erb +10 -0
- data/lib/capybara/version.rb +3 -0
- data/lib/capybara/wait_until.rb +28 -0
- data/lib/capybara/xpath.rb +179 -0
- data/spec/capybara_spec.rb +18 -0
- data/spec/driver/celerity_driver_spec.rb +16 -0
- data/spec/driver/culerity_driver_spec.rb +12 -0
- data/spec/driver/rack_test_driver_spec.rb +11 -0
- data/spec/driver/remote_culerity_driver_spec.rb +23 -0
- data/spec/driver/remote_selenium_driver_spec.rb +18 -0
- data/spec/driver/selenium_driver_spec.rb +11 -0
- data/spec/dsl_spec.rb +140 -0
- data/spec/save_and_open_page_spec.rb +43 -0
- data/spec/searchable_spec.rb +66 -0
- data/spec/server_spec.rb +53 -0
- data/spec/session/celerity_session_spec.rb +27 -0
- data/spec/session/culerity_session_spec.rb +25 -0
- data/spec/session/rack_test_session_spec.rb +33 -0
- data/spec/session/selenium_session_spec.rb +25 -0
- data/spec/spec_helper.rb +19 -0
- data/spec/wait_until_spec.rb +28 -0
- data/spec/xpath_spec.rb +180 -0
- metadata +245 -0
- metadata.gz.sig +2 -0
data.tar.gz.sig
ADDED
Binary file
|
data/History.txt
ADDED
@@ -0,0 +1,87 @@
|
|
1
|
+
# Version 0.3.8
|
2
|
+
|
3
|
+
Release date: 2010-05-12
|
4
|
+
|
5
|
+
### Added
|
6
|
+
|
7
|
+
* Within_frame method to execute a block of code within a particular iframe (Selenium only!)
|
8
|
+
|
9
|
+
### Fixed
|
10
|
+
|
11
|
+
* Single quotes are properly escaped with `select` under rack-test and Selenium.
|
12
|
+
* The :text option for searches now escapes regexp special characters when a string is given.
|
13
|
+
* Selenium now correctly checks already checked checkboxes (same with uncheck)
|
14
|
+
* Timing issue which caused Selenium to hang under certain circumstances.
|
15
|
+
* Selenium now resolves attributes even if they are given as a Symbol
|
16
|
+
|
17
|
+
# Version 0.3.7
|
18
|
+
|
19
|
+
Release date: 2010-04-09
|
20
|
+
|
21
|
+
This is a drop in compatible maintainance release. It's mostly
|
22
|
+
important for driver authors.
|
23
|
+
|
24
|
+
### Added
|
25
|
+
|
26
|
+
* RackTest scans for data-method which rails3 uses to change the request method
|
27
|
+
|
28
|
+
### Fixed
|
29
|
+
|
30
|
+
* Don't hang when starting server on Windoze
|
31
|
+
|
32
|
+
### Changed
|
33
|
+
|
34
|
+
* The driver and session specs are now located inside lib! Driver authors can simply require them.
|
35
|
+
|
36
|
+
# Version 0.3.6
|
37
|
+
|
38
|
+
Release date: 2010-03-22
|
39
|
+
|
40
|
+
This is a maintainance release with minor bug fixes, should be
|
41
|
+
drop in compatible.
|
42
|
+
|
43
|
+
### Added
|
44
|
+
|
45
|
+
* It's now possible to load in external drivers
|
46
|
+
|
47
|
+
### Fixed
|
48
|
+
|
49
|
+
* has_content? ignores whitespace
|
50
|
+
* Trigger events when choosing radios and checking checkboxes under Selenium
|
51
|
+
* Make Capybara.app totally optional when running without server
|
52
|
+
* Changed fallback host so it matches the one set up by Rails' integration tests
|
53
|
+
|
54
|
+
# Version 0.3.5
|
55
|
+
|
56
|
+
Release date: 2010-02-26
|
57
|
+
|
58
|
+
This is a mostly backwards compatible release, it does break
|
59
|
+
the API in some minor places, which should hopefully not affect
|
60
|
+
too many users, please read the release notes carefully!
|
61
|
+
|
62
|
+
### Breaking
|
63
|
+
|
64
|
+
* Relative searching in a node (e.g. find('//p').all('//a')) will now follow XPath standard
|
65
|
+
this means that if you want to find descendant nodes only, you'll need to prefix a dot!
|
66
|
+
* `visit` now accepts fully qualified URLs for drivers that support it.
|
67
|
+
* Capybara will always try to run a rack server, unless you set Capybara.run_sever = false
|
68
|
+
|
69
|
+
### Changed
|
70
|
+
|
71
|
+
* thin is preferred over mongrel and webrick, since it is Ruby 1.9 compatible
|
72
|
+
* click_button and click will find <input type="button">, clicking them does nothing in RackTest
|
73
|
+
|
74
|
+
### Added
|
75
|
+
|
76
|
+
* Much improved error messages in a multitude of places
|
77
|
+
* More semantic page querying with has_link?, has_button?, etc...
|
78
|
+
* Option to ignore hidden elements when querying and interacting with the page
|
79
|
+
* Support for multiple selects
|
80
|
+
|
81
|
+
### Fixed
|
82
|
+
|
83
|
+
* find_by_id is no longer broken
|
84
|
+
* clicking links where the image's alt attribute contains the text is now possible
|
85
|
+
* within_fieldset and within_table work when the default selector is CSS
|
86
|
+
* boolean attributes work the same across drivers (return true/false)
|
87
|
+
|
data/Manifest
ADDED
@@ -0,0 +1,89 @@
|
|
1
|
+
History.txt
|
2
|
+
Manifest
|
3
|
+
README.rdoc
|
4
|
+
Rakefile
|
5
|
+
lib/capybara.rb
|
6
|
+
lib/capybara/cucumber.rb
|
7
|
+
lib/capybara/driver/base.rb
|
8
|
+
lib/capybara/driver/celerity_driver.rb
|
9
|
+
lib/capybara/driver/culerity_driver.rb
|
10
|
+
lib/capybara/driver/rack_test_driver.rb
|
11
|
+
lib/capybara/driver/selenium_driver.rb
|
12
|
+
lib/capybara/dsl.rb
|
13
|
+
lib/capybara/node.rb
|
14
|
+
lib/capybara/rails.rb
|
15
|
+
lib/capybara/save_and_open_page.rb
|
16
|
+
lib/capybara/searchable.rb
|
17
|
+
lib/capybara/server.rb
|
18
|
+
lib/capybara/server.rb.orig
|
19
|
+
lib/capybara/session.rb
|
20
|
+
lib/capybara/spec/driver.rb
|
21
|
+
lib/capybara/spec/fixtures/capybara.jpg
|
22
|
+
lib/capybara/spec/fixtures/test_file.txt
|
23
|
+
lib/capybara/spec/public/jquery-ui.js
|
24
|
+
lib/capybara/spec/public/jquery.js
|
25
|
+
lib/capybara/spec/public/test.js
|
26
|
+
lib/capybara/spec/session.rb
|
27
|
+
lib/capybara/spec/session/all_spec.rb
|
28
|
+
lib/capybara/spec/session/attach_file_spec.rb
|
29
|
+
lib/capybara/spec/session/check_spec.rb
|
30
|
+
lib/capybara/spec/session/choose_spec.rb
|
31
|
+
lib/capybara/spec/session/click_button_spec.rb
|
32
|
+
lib/capybara/spec/session/click_link_spec.rb
|
33
|
+
lib/capybara/spec/session/click_spec.rb
|
34
|
+
lib/capybara/spec/session/current_url_spec.rb
|
35
|
+
lib/capybara/spec/session/fill_in_spec.rb
|
36
|
+
lib/capybara/spec/session/find_button_spec.rb
|
37
|
+
lib/capybara/spec/session/find_by_id_spec.rb
|
38
|
+
lib/capybara/spec/session/find_field_spec.rb
|
39
|
+
lib/capybara/spec/session/find_link_spec.rb
|
40
|
+
lib/capybara/spec/session/find_spec.rb
|
41
|
+
lib/capybara/spec/session/has_button_spec.rb
|
42
|
+
lib/capybara/spec/session/has_content_spec.rb
|
43
|
+
lib/capybara/spec/session/has_css_spec.rb
|
44
|
+
lib/capybara/spec/session/has_field_spec.rb
|
45
|
+
lib/capybara/spec/session/has_link_spec.rb
|
46
|
+
lib/capybara/spec/session/has_select_spec.rb
|
47
|
+
lib/capybara/spec/session/has_table_spec.rb
|
48
|
+
lib/capybara/spec/session/has_xpath_spec.rb
|
49
|
+
lib/capybara/spec/session/headers.rb
|
50
|
+
lib/capybara/spec/session/javascript.rb
|
51
|
+
lib/capybara/spec/session/locate_spec.rb
|
52
|
+
lib/capybara/spec/session/select_spec.rb
|
53
|
+
lib/capybara/spec/session/uncheck_spec.rb
|
54
|
+
lib/capybara/spec/session/unselect_spec.rb
|
55
|
+
lib/capybara/spec/session/within_spec.rb
|
56
|
+
lib/capybara/spec/test_app.rb
|
57
|
+
lib/capybara/spec/views/buttons.erb
|
58
|
+
lib/capybara/spec/views/fieldsets.erb
|
59
|
+
lib/capybara/spec/views/form.erb
|
60
|
+
lib/capybara/spec/views/frame_one.erb
|
61
|
+
lib/capybara/spec/views/frame_two.erb
|
62
|
+
lib/capybara/spec/views/postback.erb
|
63
|
+
lib/capybara/spec/views/tables.erb
|
64
|
+
lib/capybara/spec/views/with_html.erb
|
65
|
+
lib/capybara/spec/views/with_js.erb
|
66
|
+
lib/capybara/spec/views/with_scope.erb
|
67
|
+
lib/capybara/spec/views/with_simple_html.erb
|
68
|
+
lib/capybara/spec/views/within_frames.erb
|
69
|
+
lib/capybara/version.rb
|
70
|
+
lib/capybara/wait_until.rb
|
71
|
+
lib/capybara/xpath.rb
|
72
|
+
spec/capybara_spec.rb
|
73
|
+
spec/driver/celerity_driver_spec.rb
|
74
|
+
spec/driver/culerity_driver_spec.rb
|
75
|
+
spec/driver/rack_test_driver_spec.rb
|
76
|
+
spec/driver/remote_culerity_driver_spec.rb
|
77
|
+
spec/driver/remote_selenium_driver_spec.rb
|
78
|
+
spec/driver/selenium_driver_spec.rb
|
79
|
+
spec/dsl_spec.rb
|
80
|
+
spec/save_and_open_page_spec.rb
|
81
|
+
spec/searchable_spec.rb
|
82
|
+
spec/server_spec.rb
|
83
|
+
spec/session/celerity_session_spec.rb
|
84
|
+
spec/session/culerity_session_spec.rb
|
85
|
+
spec/session/rack_test_session_spec.rb
|
86
|
+
spec/session/selenium_session_spec.rb
|
87
|
+
spec/spec_helper.rb
|
88
|
+
spec/wait_until_spec.rb
|
89
|
+
spec/xpath_spec.rb
|
data/README.rdoc
ADDED
data/Rakefile
ADDED
@@ -0,0 +1,14 @@
|
|
1
|
+
require 'rubygems'
|
2
|
+
require 'rake'
|
3
|
+
require 'echoe'
|
4
|
+
|
5
|
+
Echoe.new('katzil-capybara', '0.3.8') do |p|
|
6
|
+
p.description = "A fork for capybara project"
|
7
|
+
p.summary = "A fix to capybara gem"
|
8
|
+
p.url = "http://github.com/ilyakatz/tests"
|
9
|
+
p.author = "Ilya Katz"
|
10
|
+
p.email = "ilyakatz @nospam@ gmail dot com"
|
11
|
+
p.ignore_pattern = ["tmp/*", "script/*"]
|
12
|
+
p.development_dependencies = []
|
13
|
+
end
|
14
|
+
|
@@ -0,0 +1,32 @@
|
|
1
|
+
# -*- encoding: utf-8 -*-
|
2
|
+
|
3
|
+
Gem::Specification.new do |s|
|
4
|
+
s.name = %q{katzil-capybara}
|
5
|
+
s.version = "0.3.8"
|
6
|
+
|
7
|
+
s.required_rubygems_version = Gem::Requirement.new(">= 1.2") if s.respond_to? :required_rubygems_version=
|
8
|
+
s.authors = ["Ilya Katz"]
|
9
|
+
s.cert_chain = ["/Users/ilyakatz/.ssh/gem-public_cert.pem"]
|
10
|
+
s.date = %q{2010-05-20}
|
11
|
+
s.description = %q{A fork for capybara project}
|
12
|
+
s.email = %q{ilyakatz @nospam@ gmail dot com}
|
13
|
+
s.extra_rdoc_files = ["README.rdoc", "lib/capybara.rb", "lib/capybara/cucumber.rb", "lib/capybara/driver/base.rb", "lib/capybara/driver/celerity_driver.rb", "lib/capybara/driver/culerity_driver.rb", "lib/capybara/driver/rack_test_driver.rb", "lib/capybara/driver/selenium_driver.rb", "lib/capybara/dsl.rb", "lib/capybara/node.rb", "lib/capybara/rails.rb", "lib/capybara/save_and_open_page.rb", "lib/capybara/searchable.rb", "lib/capybara/server.rb", "lib/capybara/server.rb.orig", "lib/capybara/session.rb", "lib/capybara/spec/driver.rb", "lib/capybara/spec/fixtures/capybara.jpg", "lib/capybara/spec/fixtures/test_file.txt", "lib/capybara/spec/public/jquery-ui.js", "lib/capybara/spec/public/jquery.js", "lib/capybara/spec/public/test.js", "lib/capybara/spec/session.rb", "lib/capybara/spec/session/all_spec.rb", "lib/capybara/spec/session/attach_file_spec.rb", "lib/capybara/spec/session/check_spec.rb", "lib/capybara/spec/session/choose_spec.rb", "lib/capybara/spec/session/click_button_spec.rb", "lib/capybara/spec/session/click_link_spec.rb", "lib/capybara/spec/session/click_spec.rb", "lib/capybara/spec/session/current_url_spec.rb", "lib/capybara/spec/session/fill_in_spec.rb", "lib/capybara/spec/session/find_button_spec.rb", "lib/capybara/spec/session/find_by_id_spec.rb", "lib/capybara/spec/session/find_field_spec.rb", "lib/capybara/spec/session/find_link_spec.rb", "lib/capybara/spec/session/find_spec.rb", "lib/capybara/spec/session/has_button_spec.rb", "lib/capybara/spec/session/has_content_spec.rb", "lib/capybara/spec/session/has_css_spec.rb", "lib/capybara/spec/session/has_field_spec.rb", "lib/capybara/spec/session/has_link_spec.rb", "lib/capybara/spec/session/has_select_spec.rb", "lib/capybara/spec/session/has_table_spec.rb", "lib/capybara/spec/session/has_xpath_spec.rb", "lib/capybara/spec/session/headers.rb", "lib/capybara/spec/session/javascript.rb", "lib/capybara/spec/session/locate_spec.rb", "lib/capybara/spec/session/select_spec.rb", "lib/capybara/spec/session/uncheck_spec.rb", "lib/capybara/spec/session/unselect_spec.rb", "lib/capybara/spec/session/within_spec.rb", "lib/capybara/spec/test_app.rb", "lib/capybara/spec/views/buttons.erb", "lib/capybara/spec/views/fieldsets.erb", "lib/capybara/spec/views/form.erb", "lib/capybara/spec/views/frame_one.erb", "lib/capybara/spec/views/frame_two.erb", "lib/capybara/spec/views/postback.erb", "lib/capybara/spec/views/tables.erb", "lib/capybara/spec/views/with_html.erb", "lib/capybara/spec/views/with_js.erb", "lib/capybara/spec/views/with_scope.erb", "lib/capybara/spec/views/with_simple_html.erb", "lib/capybara/spec/views/within_frames.erb", "lib/capybara/version.rb", "lib/capybara/wait_until.rb", "lib/capybara/xpath.rb"]
|
14
|
+
s.files = ["History.txt", "Manifest", "README.rdoc", "Rakefile", "lib/capybara.rb", "lib/capybara/cucumber.rb", "lib/capybara/driver/base.rb", "lib/capybara/driver/celerity_driver.rb", "lib/capybara/driver/culerity_driver.rb", "lib/capybara/driver/rack_test_driver.rb", "lib/capybara/driver/selenium_driver.rb", "lib/capybara/dsl.rb", "lib/capybara/node.rb", "lib/capybara/rails.rb", "lib/capybara/save_and_open_page.rb", "lib/capybara/searchable.rb", "lib/capybara/server.rb", "lib/capybara/server.rb.orig", "lib/capybara/session.rb", "lib/capybara/spec/driver.rb", "lib/capybara/spec/fixtures/capybara.jpg", "lib/capybara/spec/fixtures/test_file.txt", "lib/capybara/spec/public/jquery-ui.js", "lib/capybara/spec/public/jquery.js", "lib/capybara/spec/public/test.js", "lib/capybara/spec/session.rb", "lib/capybara/spec/session/all_spec.rb", "lib/capybara/spec/session/attach_file_spec.rb", "lib/capybara/spec/session/check_spec.rb", "lib/capybara/spec/session/choose_spec.rb", "lib/capybara/spec/session/click_button_spec.rb", "lib/capybara/spec/session/click_link_spec.rb", "lib/capybara/spec/session/click_spec.rb", "lib/capybara/spec/session/current_url_spec.rb", "lib/capybara/spec/session/fill_in_spec.rb", "lib/capybara/spec/session/find_button_spec.rb", "lib/capybara/spec/session/find_by_id_spec.rb", "lib/capybara/spec/session/find_field_spec.rb", "lib/capybara/spec/session/find_link_spec.rb", "lib/capybara/spec/session/find_spec.rb", "lib/capybara/spec/session/has_button_spec.rb", "lib/capybara/spec/session/has_content_spec.rb", "lib/capybara/spec/session/has_css_spec.rb", "lib/capybara/spec/session/has_field_spec.rb", "lib/capybara/spec/session/has_link_spec.rb", "lib/capybara/spec/session/has_select_spec.rb", "lib/capybara/spec/session/has_table_spec.rb", "lib/capybara/spec/session/has_xpath_spec.rb", "lib/capybara/spec/session/headers.rb", "lib/capybara/spec/session/javascript.rb", "lib/capybara/spec/session/locate_spec.rb", "lib/capybara/spec/session/select_spec.rb", "lib/capybara/spec/session/uncheck_spec.rb", "lib/capybara/spec/session/unselect_spec.rb", "lib/capybara/spec/session/within_spec.rb", "lib/capybara/spec/test_app.rb", "lib/capybara/spec/views/buttons.erb", "lib/capybara/spec/views/fieldsets.erb", "lib/capybara/spec/views/form.erb", "lib/capybara/spec/views/frame_one.erb", "lib/capybara/spec/views/frame_two.erb", "lib/capybara/spec/views/postback.erb", "lib/capybara/spec/views/tables.erb", "lib/capybara/spec/views/with_html.erb", "lib/capybara/spec/views/with_js.erb", "lib/capybara/spec/views/with_scope.erb", "lib/capybara/spec/views/with_simple_html.erb", "lib/capybara/spec/views/within_frames.erb", "lib/capybara/version.rb", "lib/capybara/wait_until.rb", "lib/capybara/xpath.rb", "spec/capybara_spec.rb", "spec/driver/celerity_driver_spec.rb", "spec/driver/culerity_driver_spec.rb", "spec/driver/rack_test_driver_spec.rb", "spec/driver/remote_culerity_driver_spec.rb", "spec/driver/remote_selenium_driver_spec.rb", "spec/driver/selenium_driver_spec.rb", "spec/dsl_spec.rb", "spec/save_and_open_page_spec.rb", "spec/searchable_spec.rb", "spec/server_spec.rb", "spec/session/celerity_session_spec.rb", "spec/session/culerity_session_spec.rb", "spec/session/rack_test_session_spec.rb", "spec/session/selenium_session_spec.rb", "spec/spec_helper.rb", "spec/wait_until_spec.rb", "spec/xpath_spec.rb", "katzil-capybara.gemspec"]
|
15
|
+
s.homepage = %q{http://github.com/ilyakatz/tests}
|
16
|
+
s.rdoc_options = ["--line-numbers", "--inline-source", "--title", "Katzil-capybara", "--main", "README.rdoc"]
|
17
|
+
s.require_paths = ["lib"]
|
18
|
+
s.rubyforge_project = %q{katzil-capybara}
|
19
|
+
s.rubygems_version = %q{1.3.6}
|
20
|
+
s.signing_key = %q{/Users/ilyakatz/.ssh/gem-private_key.pem}
|
21
|
+
s.summary = %q{A fix to capybara gem}
|
22
|
+
|
23
|
+
if s.respond_to? :specification_version then
|
24
|
+
current_version = Gem::Specification::CURRENT_SPECIFICATION_VERSION
|
25
|
+
s.specification_version = 3
|
26
|
+
|
27
|
+
if Gem::Version.new(Gem::RubyGemsVersion) >= Gem::Version.new('1.2.0') then
|
28
|
+
else
|
29
|
+
end
|
30
|
+
else
|
31
|
+
end
|
32
|
+
end
|
data/lib/capybara.rb
ADDED
@@ -0,0 +1,52 @@
|
|
1
|
+
require 'timeout'
|
2
|
+
require 'nokogiri'
|
3
|
+
|
4
|
+
module Capybara
|
5
|
+
class CapybaraError < StandardError; end
|
6
|
+
class DriverNotFoundError < CapybaraError; end
|
7
|
+
class ElementNotFound < CapybaraError; end
|
8
|
+
class OptionNotFound < ElementNotFound; end
|
9
|
+
class UnselectNotAllowed < CapybaraError; end
|
10
|
+
class NotSupportedByDriverError < CapybaraError; end
|
11
|
+
class TimeoutError < CapybaraError; end
|
12
|
+
class LocateHiddenElementError < CapybaraError; end
|
13
|
+
class InfiniteRedirectError < TimeoutError; end
|
14
|
+
|
15
|
+
class << self
|
16
|
+
attr_accessor :debug, :asset_root, :app_host, :run_server, :default_host
|
17
|
+
attr_accessor :default_selector, :default_wait_time, :ignore_hidden_elements
|
18
|
+
|
19
|
+
def default_selector
|
20
|
+
@default_selector ||= :xpath
|
21
|
+
end
|
22
|
+
|
23
|
+
def default_wait_time
|
24
|
+
@default_wait_time ||= 2
|
25
|
+
end
|
26
|
+
|
27
|
+
def log(message)
|
28
|
+
puts "[capybara] #{message}" if debug
|
29
|
+
true
|
30
|
+
end
|
31
|
+
end
|
32
|
+
|
33
|
+
autoload :Server, 'capybara/server'
|
34
|
+
autoload :Session, 'capybara/session'
|
35
|
+
autoload :Node, 'capybara/node'
|
36
|
+
autoload :XPath, 'capybara/xpath'
|
37
|
+
autoload :Searchable, 'capybara/searchable'
|
38
|
+
autoload :VERSION, 'capybara/version'
|
39
|
+
|
40
|
+
module Driver
|
41
|
+
autoload :Base, 'capybara/driver/base'
|
42
|
+
autoload :RackTest, 'capybara/driver/rack_test_driver'
|
43
|
+
autoload :Celerity, 'capybara/driver/celerity_driver'
|
44
|
+
autoload :Culerity, 'capybara/driver/culerity_driver'
|
45
|
+
autoload :Selenium, 'capybara/driver/selenium_driver'
|
46
|
+
end
|
47
|
+
end
|
48
|
+
|
49
|
+
Capybara.run_server = true
|
50
|
+
Capybara.default_selector = :xpath
|
51
|
+
Capybara.default_wait_time = 2
|
52
|
+
Capybara.ignore_hidden_elements = false
|
@@ -0,0 +1,32 @@
|
|
1
|
+
require 'capybara'
|
2
|
+
require 'capybara/dsl'
|
3
|
+
|
4
|
+
World(Capybara)
|
5
|
+
|
6
|
+
After do
|
7
|
+
Capybara.reset_sessions!
|
8
|
+
end
|
9
|
+
|
10
|
+
Before('@javascript') do
|
11
|
+
Capybara.current_driver = Capybara.javascript_driver
|
12
|
+
end
|
13
|
+
|
14
|
+
Before('@selenium') do
|
15
|
+
Capybara.current_driver = :selenium
|
16
|
+
end
|
17
|
+
|
18
|
+
Before('@celerity') do
|
19
|
+
Capybara.current_driver = :celerity
|
20
|
+
end
|
21
|
+
|
22
|
+
Before('@culerity') do
|
23
|
+
Capybara.current_driver = :culerity
|
24
|
+
end
|
25
|
+
|
26
|
+
Before('@rack_test') do
|
27
|
+
Capybara.current_driver = :rack_test
|
28
|
+
end
|
29
|
+
|
30
|
+
After do
|
31
|
+
Capybara.use_default_driver
|
32
|
+
end
|
@@ -0,0 +1,48 @@
|
|
1
|
+
class Capybara::Driver::Base
|
2
|
+
def current_url
|
3
|
+
raise NotImplementedError
|
4
|
+
end
|
5
|
+
|
6
|
+
def visit(path)
|
7
|
+
raise NotImplementedError
|
8
|
+
end
|
9
|
+
|
10
|
+
def find(query)
|
11
|
+
raise NotImplementedError
|
12
|
+
end
|
13
|
+
|
14
|
+
def evaluate_script(script)
|
15
|
+
raise Capybara::NotSupportedByDriverError
|
16
|
+
end
|
17
|
+
|
18
|
+
def wait?
|
19
|
+
false
|
20
|
+
end
|
21
|
+
|
22
|
+
def wait_until *args
|
23
|
+
end
|
24
|
+
|
25
|
+
def response_headers
|
26
|
+
raise Capybara::NotSupportedByDriverError
|
27
|
+
end
|
28
|
+
|
29
|
+
def body
|
30
|
+
raise NotImplementedError
|
31
|
+
end
|
32
|
+
|
33
|
+
def within_frame(frame_id)
|
34
|
+
raise Capybara::NotSupportedByDriverError
|
35
|
+
end
|
36
|
+
|
37
|
+
def source
|
38
|
+
raise NotImplementedError
|
39
|
+
end
|
40
|
+
|
41
|
+
def cleanup!
|
42
|
+
end
|
43
|
+
|
44
|
+
def has_shortcircuit_timeout?
|
45
|
+
false
|
46
|
+
end
|
47
|
+
|
48
|
+
end
|
@@ -0,0 +1,143 @@
|
|
1
|
+
class Capybara::Driver::Celerity < Capybara::Driver::Base
|
2
|
+
class Node < Capybara::Node
|
3
|
+
def text
|
4
|
+
node.text
|
5
|
+
end
|
6
|
+
|
7
|
+
def [](name)
|
8
|
+
value = if name.to_sym == :class
|
9
|
+
node.class_name
|
10
|
+
else
|
11
|
+
node.send(name.to_sym)
|
12
|
+
end
|
13
|
+
return value if value and not value.to_s.empty?
|
14
|
+
end
|
15
|
+
|
16
|
+
def value
|
17
|
+
if tag_name == "select" and node.multiple?
|
18
|
+
node.selected_options
|
19
|
+
else
|
20
|
+
super
|
21
|
+
end
|
22
|
+
end
|
23
|
+
|
24
|
+
def set(value)
|
25
|
+
node.set(value)
|
26
|
+
end
|
27
|
+
|
28
|
+
def select(option)
|
29
|
+
node.select(option)
|
30
|
+
rescue
|
31
|
+
options = all(:xpath, "//option").map { |o| "'#{o.text}'" }.join(', ')
|
32
|
+
raise Capybara::OptionNotFound, "No such option '#{option}' in this select box. Available options: #{options}"
|
33
|
+
end
|
34
|
+
|
35
|
+
def unselect(option)
|
36
|
+
unless node.multiple?
|
37
|
+
raise Capybara::UnselectNotAllowed, "Cannot unselect option '#{option}' from single select box."
|
38
|
+
end
|
39
|
+
|
40
|
+
# FIXME: couldn't find a clean way to unselect, so clear and reselect
|
41
|
+
selected_options = node.selected_options
|
42
|
+
if unselect_option = selected_options.detect { |value| value == option } ||
|
43
|
+
selected_options.detect { |value| value.index(option) }
|
44
|
+
node.clear
|
45
|
+
(selected_options - [unselect_option]).each { |value| node.select_value(value) }
|
46
|
+
else
|
47
|
+
options = all(:xpath, "//option").map { |o| "'#{o.text}'" }.join(', ')
|
48
|
+
raise Capybara::OptionNotFound, "No such option '#{option}' in this select box. Available options: #{options}"
|
49
|
+
end
|
50
|
+
end
|
51
|
+
|
52
|
+
def click
|
53
|
+
node.click
|
54
|
+
end
|
55
|
+
|
56
|
+
def drag_to(element)
|
57
|
+
node.fire_event('mousedown')
|
58
|
+
element.node.fire_event('mousemove')
|
59
|
+
element.node.fire_event('mouseup')
|
60
|
+
end
|
61
|
+
|
62
|
+
def tag_name
|
63
|
+
# FIXME: this might be the dumbest way ever of getting the tag name
|
64
|
+
# there has to be something better...
|
65
|
+
node.to_xml[/^\s*<([a-z0-9\-\:]+)/, 1]
|
66
|
+
end
|
67
|
+
|
68
|
+
def visible?
|
69
|
+
node.visible?
|
70
|
+
end
|
71
|
+
|
72
|
+
def path
|
73
|
+
node.xpath
|
74
|
+
end
|
75
|
+
|
76
|
+
def trigger(event)
|
77
|
+
node.fire_event(event.to_s)
|
78
|
+
end
|
79
|
+
|
80
|
+
private
|
81
|
+
|
82
|
+
def all_unfiltered(locator)
|
83
|
+
noko_node = Nokogiri::HTML(driver.body).xpath(node.xpath).first
|
84
|
+
all_nodes = noko_node.xpath(locator).map { |n| n.path }.join(' | ')
|
85
|
+
driver.find(all_nodes)
|
86
|
+
end
|
87
|
+
|
88
|
+
end
|
89
|
+
|
90
|
+
attr_reader :app, :rack_server
|
91
|
+
|
92
|
+
def initialize(app)
|
93
|
+
@app = app
|
94
|
+
@rack_server = Capybara::Server.new(@app)
|
95
|
+
@rack_server.boot if Capybara.run_server
|
96
|
+
end
|
97
|
+
|
98
|
+
def visit(path)
|
99
|
+
browser.goto(url(path))
|
100
|
+
end
|
101
|
+
|
102
|
+
def current_url
|
103
|
+
browser.url
|
104
|
+
end
|
105
|
+
|
106
|
+
def source
|
107
|
+
browser.html
|
108
|
+
end
|
109
|
+
|
110
|
+
def body
|
111
|
+
browser.document.as_xml
|
112
|
+
end
|
113
|
+
|
114
|
+
def response_headers
|
115
|
+
browser.response_headers
|
116
|
+
end
|
117
|
+
|
118
|
+
def find(selector)
|
119
|
+
browser.elements_by_xpath(selector).map { |node| Node.new(self, node) }
|
120
|
+
end
|
121
|
+
|
122
|
+
def wait?; true; end
|
123
|
+
|
124
|
+
def evaluate_script(script)
|
125
|
+
browser.execute_script "#{script}"
|
126
|
+
end
|
127
|
+
|
128
|
+
def browser
|
129
|
+
unless @_browser
|
130
|
+
require 'celerity'
|
131
|
+
@_browser = ::Celerity::Browser.new(:browser => :firefox, :log_level => :off)
|
132
|
+
end
|
133
|
+
|
134
|
+
@_browser
|
135
|
+
end
|
136
|
+
|
137
|
+
private
|
138
|
+
|
139
|
+
def url(path)
|
140
|
+
rack_server.url(path)
|
141
|
+
end
|
142
|
+
|
143
|
+
end
|