capybara 2.5.0 → 2.18.0

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 (205) hide show
  1. checksums.yaml +5 -5
  2. data/.yard/templates_custom/default/class/html/selectors.erb +38 -0
  3. data/.yard/templates_custom/default/class/html/setup.rb +17 -0
  4. data/.yard/yard_extensions.rb +78 -0
  5. data/.yardopts +1 -0
  6. data/History.md +413 -10
  7. data/License.txt +1 -1
  8. data/README.md +237 -130
  9. data/lib/capybara/config.rb +132 -0
  10. data/lib/capybara/cucumber.rb +3 -1
  11. data/lib/capybara/driver/base.rb +27 -6
  12. data/lib/capybara/driver/node.rb +14 -5
  13. data/lib/capybara/dsl.rb +2 -3
  14. data/lib/capybara/helpers.rb +13 -65
  15. data/lib/capybara/minitest/spec.rb +177 -0
  16. data/lib/capybara/minitest.rb +278 -0
  17. data/lib/capybara/node/actions.rb +180 -24
  18. data/lib/capybara/node/base.rb +17 -5
  19. data/lib/capybara/node/document.rb +5 -0
  20. data/lib/capybara/node/document_matchers.rb +15 -14
  21. data/lib/capybara/node/element.rb +55 -7
  22. data/lib/capybara/node/finders.rb +179 -67
  23. data/lib/capybara/node/matchers.rb +301 -105
  24. data/lib/capybara/node/simple.rb +15 -4
  25. data/lib/capybara/queries/ancestor_query.rb +25 -0
  26. data/lib/capybara/queries/base_query.rb +69 -3
  27. data/lib/capybara/queries/current_path_query.rb +17 -8
  28. data/lib/capybara/queries/match_query.rb +19 -0
  29. data/lib/capybara/queries/selector_query.rb +251 -0
  30. data/lib/capybara/queries/sibling_query.rb +25 -0
  31. data/lib/capybara/queries/text_query.rb +67 -16
  32. data/lib/capybara/queries/title_query.rb +4 -2
  33. data/lib/capybara/query.rb +3 -131
  34. data/lib/capybara/rack_test/browser.rb +14 -5
  35. data/lib/capybara/rack_test/css_handlers.rb +1 -0
  36. data/lib/capybara/rack_test/driver.rb +15 -8
  37. data/lib/capybara/rack_test/form.rb +34 -12
  38. data/lib/capybara/rack_test/node.rb +29 -12
  39. data/lib/capybara/rails.rb +3 -3
  40. data/lib/capybara/result.rb +104 -9
  41. data/lib/capybara/rspec/compound.rb +95 -0
  42. data/lib/capybara/rspec/features.rb +17 -6
  43. data/lib/capybara/rspec/matcher_proxies.rb +45 -0
  44. data/lib/capybara/rspec/matchers.rb +199 -80
  45. data/lib/capybara/rspec.rb +4 -2
  46. data/lib/capybara/selector/css.rb +30 -0
  47. data/lib/capybara/selector/filter.rb +20 -0
  48. data/lib/capybara/selector/filter_set.rb +74 -0
  49. data/lib/capybara/selector/filters/base.rb +33 -0
  50. data/lib/capybara/selector/filters/expression_filter.rb +40 -0
  51. data/lib/capybara/selector/filters/node_filter.rb +27 -0
  52. data/lib/capybara/selector/selector.rb +276 -0
  53. data/lib/capybara/selector.rb +452 -157
  54. data/lib/capybara/selenium/driver.rb +282 -81
  55. data/lib/capybara/selenium/node.rb +144 -46
  56. data/lib/capybara/server.rb +59 -16
  57. data/lib/capybara/session/config.rb +114 -0
  58. data/lib/capybara/session/matchers.rb +29 -19
  59. data/lib/capybara/session.rb +378 -143
  60. data/lib/capybara/spec/fixtures/no_extension +1 -0
  61. data/lib/capybara/spec/public/jquery-ui.js +13 -791
  62. data/lib/capybara/spec/public/jquery.js +4 -9045
  63. data/lib/capybara/spec/public/test.js +45 -11
  64. data/lib/capybara/spec/session/accept_alert_spec.rb +30 -7
  65. data/lib/capybara/spec/session/accept_confirm_spec.rb +14 -2
  66. data/lib/capybara/spec/session/accept_prompt_spec.rb +35 -6
  67. data/lib/capybara/spec/session/all_spec.rb +45 -32
  68. data/lib/capybara/spec/session/ancestor_spec.rb +85 -0
  69. data/lib/capybara/spec/session/assert_all_of_selectors_spec.rb +110 -0
  70. data/lib/capybara/spec/session/assert_current_path.rb +15 -2
  71. data/lib/capybara/spec/session/assert_selector.rb +29 -28
  72. data/lib/capybara/spec/session/assert_text.rb +59 -20
  73. data/lib/capybara/spec/session/assert_title.rb +25 -11
  74. data/lib/capybara/spec/session/attach_file_spec.rb +42 -4
  75. data/lib/capybara/spec/session/body_spec.rb +1 -0
  76. data/lib/capybara/spec/session/check_spec.rb +90 -14
  77. data/lib/capybara/spec/session/choose_spec.rb +31 -5
  78. data/lib/capybara/spec/session/click_button_spec.rb +20 -9
  79. data/lib/capybara/spec/session/click_link_or_button_spec.rb +15 -9
  80. data/lib/capybara/spec/session/click_link_spec.rb +39 -15
  81. data/lib/capybara/spec/session/current_scope_spec.rb +2 -1
  82. data/lib/capybara/spec/session/current_url_spec.rb +12 -3
  83. data/lib/capybara/spec/session/dismiss_confirm_spec.rb +6 -5
  84. data/lib/capybara/spec/session/dismiss_prompt_spec.rb +4 -3
  85. data/lib/capybara/spec/session/element/assert_match_selector.rb +36 -0
  86. data/lib/capybara/spec/session/element/match_css_spec.rb +23 -0
  87. data/lib/capybara/spec/session/element/match_xpath_spec.rb +23 -0
  88. data/lib/capybara/spec/session/element/matches_selector_spec.rb +106 -0
  89. data/lib/capybara/spec/session/evaluate_async_script_spec.rb +22 -0
  90. data/lib/capybara/spec/session/evaluate_script_spec.rb +23 -1
  91. data/lib/capybara/spec/session/execute_script_spec.rb +22 -3
  92. data/lib/capybara/spec/session/fill_in_spec.rb +50 -32
  93. data/lib/capybara/spec/session/find_button_spec.rb +43 -2
  94. data/lib/capybara/spec/session/find_by_id_spec.rb +3 -2
  95. data/lib/capybara/spec/session/find_field_spec.rb +42 -6
  96. data/lib/capybara/spec/session/find_link_spec.rb +22 -3
  97. data/lib/capybara/spec/session/find_spec.rb +103 -57
  98. data/lib/capybara/spec/session/first_spec.rb +34 -18
  99. data/lib/capybara/spec/session/frame/switch_to_frame_spec.rb +103 -0
  100. data/lib/capybara/spec/session/{within_frame_spec.rb → frame/within_frame_spec.rb} +44 -2
  101. data/lib/capybara/spec/session/go_back_spec.rb +2 -1
  102. data/lib/capybara/spec/session/go_forward_spec.rb +2 -1
  103. data/lib/capybara/spec/session/has_all_selectors_spec.rb +69 -0
  104. data/lib/capybara/spec/session/has_button_spec.rb +17 -8
  105. data/lib/capybara/spec/session/has_css_spec.rb +85 -73
  106. data/lib/capybara/spec/session/has_current_path_spec.rb +91 -7
  107. data/lib/capybara/spec/session/has_field_spec.rb +93 -58
  108. data/lib/capybara/spec/session/has_link_spec.rb +9 -8
  109. data/lib/capybara/spec/session/has_none_selectors_spec.rb +76 -0
  110. data/lib/capybara/spec/session/has_select_spec.rb +159 -59
  111. data/lib/capybara/spec/session/has_selector_spec.rb +64 -28
  112. data/lib/capybara/spec/session/has_table_spec.rb +1 -0
  113. data/lib/capybara/spec/session/has_text_spec.rb +27 -12
  114. data/lib/capybara/spec/session/has_title_spec.rb +22 -4
  115. data/lib/capybara/spec/session/has_xpath_spec.rb +32 -29
  116. data/lib/capybara/spec/session/headers.rb +2 -1
  117. data/lib/capybara/spec/session/html_spec.rb +4 -3
  118. data/lib/capybara/spec/session/node_spec.rb +198 -38
  119. data/lib/capybara/spec/session/refresh_spec.rb +28 -0
  120. data/lib/capybara/spec/session/reset_session_spec.rb +46 -5
  121. data/lib/capybara/spec/session/response_code.rb +2 -1
  122. data/lib/capybara/spec/session/save_and_open_page_spec.rb +1 -0
  123. data/lib/capybara/spec/session/save_and_open_screenshot_spec.rb +6 -5
  124. data/lib/capybara/spec/session/save_page_spec.rb +34 -2
  125. data/lib/capybara/spec/session/save_screenshot_spec.rb +31 -1
  126. data/lib/capybara/spec/session/screenshot_spec.rb +4 -2
  127. data/lib/capybara/spec/session/select_spec.rb +34 -32
  128. data/lib/capybara/spec/session/selectors_spec.rb +65 -0
  129. data/lib/capybara/spec/session/sibling_spec.rb +52 -0
  130. data/lib/capybara/spec/session/text_spec.rb +4 -4
  131. data/lib/capybara/spec/session/title_spec.rb +2 -1
  132. data/lib/capybara/spec/session/uncheck_spec.rb +42 -2
  133. data/lib/capybara/spec/session/unselect_spec.rb +17 -16
  134. data/lib/capybara/spec/session/visit_spec.rb +77 -2
  135. data/lib/capybara/spec/session/window/become_closed_spec.rb +12 -11
  136. data/lib/capybara/spec/session/window/current_window_spec.rb +1 -0
  137. data/lib/capybara/spec/session/window/open_new_window_spec.rb +1 -0
  138. data/lib/capybara/spec/session/window/switch_to_window_spec.rb +16 -11
  139. data/lib/capybara/spec/session/window/window_opened_by_spec.rb +7 -4
  140. data/lib/capybara/spec/session/window/window_spec.rb +36 -29
  141. data/lib/capybara/spec/session/window/windows_spec.rb +1 -0
  142. data/lib/capybara/spec/session/window/within_window_spec.rb +31 -7
  143. data/lib/capybara/spec/session/within_spec.rb +14 -6
  144. data/lib/capybara/spec/spec_helper.rb +37 -4
  145. data/lib/capybara/spec/test_app.rb +15 -3
  146. data/lib/capybara/spec/views/buttons.erb +1 -0
  147. data/lib/capybara/spec/views/fieldsets.erb +2 -1
  148. data/lib/capybara/spec/views/form.erb +169 -9
  149. data/lib/capybara/spec/views/frame_child.erb +10 -2
  150. data/lib/capybara/spec/views/frame_one.erb +2 -1
  151. data/lib/capybara/spec/views/frame_parent.erb +3 -2
  152. data/lib/capybara/spec/views/frame_two.erb +2 -1
  153. data/lib/capybara/spec/views/header_links.erb +1 -0
  154. data/lib/capybara/spec/views/host_links.erb +1 -0
  155. data/lib/capybara/spec/views/initial_alert.erb +10 -0
  156. data/lib/capybara/spec/views/path.erb +1 -0
  157. data/lib/capybara/spec/views/popup_one.erb +1 -0
  158. data/lib/capybara/spec/views/popup_two.erb +1 -0
  159. data/lib/capybara/spec/views/postback.erb +2 -1
  160. data/lib/capybara/spec/views/tables.erb +1 -0
  161. data/lib/capybara/spec/views/with_base_tag.erb +1 -0
  162. data/lib/capybara/spec/views/with_count.erb +2 -1
  163. data/lib/capybara/spec/views/with_fixed_header_footer.erb +17 -0
  164. data/lib/capybara/spec/views/with_hover.erb +7 -1
  165. data/lib/capybara/spec/views/with_html.erb +40 -2
  166. data/lib/capybara/spec/views/with_html_entities.erb +1 -0
  167. data/lib/capybara/spec/views/with_js.erb +32 -1
  168. data/lib/capybara/spec/views/with_scope.erb +1 -0
  169. data/lib/capybara/spec/views/with_simple_html.erb +2 -1
  170. data/lib/capybara/spec/views/with_slow_unload.erb +17 -0
  171. data/lib/capybara/spec/views/with_title.erb +2 -1
  172. data/lib/capybara/spec/views/with_unload_alert.erb +14 -0
  173. data/lib/capybara/spec/views/with_windows.erb +7 -0
  174. data/lib/capybara/spec/views/within_frames.erb +3 -2
  175. data/lib/capybara/version.rb +2 -1
  176. data/lib/capybara/window.rb +20 -3
  177. data/lib/capybara.rb +189 -93
  178. data/spec/basic_node_spec.rb +7 -6
  179. data/spec/capybara_spec.rb +90 -4
  180. data/spec/dsl_spec.rb +3 -1
  181. data/spec/filter_set_spec.rb +28 -0
  182. data/spec/fixtures/capybara.csv +1 -0
  183. data/spec/fixtures/selenium_driver_rspec_failure.rb +5 -1
  184. data/spec/fixtures/selenium_driver_rspec_success.rb +5 -1
  185. data/spec/minitest_spec.rb +130 -0
  186. data/spec/minitest_spec_spec.rb +135 -0
  187. data/spec/per_session_config_spec.rb +67 -0
  188. data/spec/rack_test_spec.rb +50 -7
  189. data/spec/result_spec.rb +76 -0
  190. data/spec/rspec/features_spec.rb +21 -8
  191. data/spec/rspec/scenarios_spec.rb +21 -0
  192. data/spec/rspec/{matchers_spec.rb → shared_spec_matchers.rb} +160 -54
  193. data/spec/rspec/views_spec.rb +5 -0
  194. data/spec/rspec_matchers_spec.rb +46 -0
  195. data/spec/rspec_spec.rb +79 -1
  196. data/spec/selector_spec.rb +199 -0
  197. data/spec/selenium_spec_chrome.rb +54 -9
  198. data/spec/selenium_spec_firefox.rb +68 -0
  199. data/spec/selenium_spec_marionette.rb +127 -0
  200. data/spec/server_spec.rb +102 -14
  201. data/spec/session_spec.rb +54 -0
  202. data/spec/shared_selenium_session.rb +215 -0
  203. data/spec/spec_helper.rb +7 -0
  204. metadata +140 -15
  205. data/spec/selenium_spec.rb +0 -128
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
- SHA1:
3
- metadata.gz: 3213dfe8f170fe23b4374001be7b721b00ce9ff7
4
- data.tar.gz: aaebf44440aff65f3183728e404bb07660e606e5
2
+ SHA256:
3
+ metadata.gz: fb46b7bc5ae7408ca3870b781d015a84bd84abd0a9c7e3ea2bcdf3d8fff85ce8
4
+ data.tar.gz: 1865dc1efa384c3792161a134bc536c56dca3aa0670ca298ad9f3aa12b49830d
5
5
  SHA512:
6
- metadata.gz: 1624de546eb1f2f56b5dfc38a8a4f597aa930d1db0101ce6f712deb7d15abc31845385b4b18971cfe0d76328d45c8c478109af1de1584c86c64a4f6c30dc550c
7
- data.tar.gz: 21b3438ac351b7a70d642001fb15e429fac7ff3df7eb01f56c04141c5e603bf12dfb1368a408924ee9d6ebb0450cc8397bcab92d4eb9b9242eaac63d7390808e
6
+ metadata.gz: 9bc2cb739af408323d977b7ca829aa0862ef68ab7d1778c5ae67fb127a47a09258c1f5b53f9d7955bcfcd2892c869a136d7a5346b9115a9e55713ea47c95ebb3
7
+ data.tar.gz: e8d234ded45305e026b615c60e4eb8597e31fd67b7daefff51d13ab3d79868745e21668a6b45452366ac5a552b38e8c01dc669e73dbe45a9b38ecf8363b54e83
@@ -0,0 +1,38 @@
1
+ <div id="selectors">
2
+ <h2>Built-in Selectors</h2>
3
+ <ul>
4
+ <% @selectors.each do |name, selector| %>
5
+ <li>
6
+ <h3>:<%= name %></h3>
7
+ <div class="docstring">
8
+ <div class="discussion">
9
+ <p><%= h(selector.docstring) %></p>
10
+ </div>
11
+ </div>
12
+ <div class="tags">
13
+ <p class="inline">Locator:</p>
14
+ <% if locator=selector.tag('locator') %>
15
+ <p class="inline"><%= h locator.text %></p>
16
+ <% end %>
17
+ <% if selector.has_tag?('filter') %>
18
+ <p>Filters:</p>
19
+ <ul class="param">
20
+ <% selector.tags('filter').each do |filter| %>
21
+ <li>
22
+ <span class="name"><%= filter.name %></span>
23
+ <% if filter.types %>
24
+ <span class="type">(<tt><%= h(filter.types.join(', ')) %></tt>)</span>
25
+ <% end %>
26
+ <% if filter.text %>
27
+
28
+ <div class="inline"><p><%= h filter.text %></p></div>
29
+ <% end %>
30
+ </li>
31
+ <% end %>
32
+ </ul>
33
+ <% end %>
34
+ </div
35
+ </li>
36
+ <% end %>
37
+ </ul>
38
+ </div>
@@ -0,0 +1,17 @@
1
+ def init
2
+ super
3
+ sections.place(:builtins).before(:subclasses)
4
+ end
5
+
6
+ def builtins
7
+ return if object.path != "Capybara::Selector" # only show built-in selectors for Selector class
8
+
9
+ @selectors = Registry.all(:selector)
10
+ return if @selectors.nil? || @selectors.empty?
11
+
12
+ @selectors = @selectors.map do |selector|
13
+ [selector.name, selector]
14
+ end
15
+
16
+ erb(:selectors)
17
+ end
@@ -0,0 +1,78 @@
1
+ YARD::Templates::Engine.register_template_path Pathname.new('./.yard/templates_custom')
2
+
3
+ YARD::Tags::Library.define_tag "Locator", :locator
4
+ YARD::Tags::Library.define_tag "Filter", :filter, :with_types_and_name
5
+
6
+ class SelectorObject < YARD::CodeObjects::Base
7
+ def path
8
+ "__Capybara" + sep + super
9
+ end
10
+ end
11
+
12
+ class AddSelectorHandler < YARD::Handlers::Ruby::Base
13
+ handles method_call(:add_selector)
14
+ namespace_only
15
+ process do
16
+ name = statement.parameters.first.jump(:tstring_content, :ident).source
17
+ # object = YARD::CodeObjects::MethodObject.new(namespace, name.to_sym)
18
+ # object = SelectorObject.new(YARD::Registry.resolve(P("Capybara"), "#add_selector", false, true), name.to_sym)
19
+ object = SelectorObject.new(namespace, name)
20
+ register(object)
21
+ parse_block(statement.last.last, :owner => object)
22
+
23
+ # modify the object
24
+ object.dynamic = true
25
+ end
26
+ end
27
+
28
+ class AddExpressionFilterHandler < YARD::Handlers::Ruby::Base
29
+ handles method_call(:xpath)
30
+ handles method_call(:css)
31
+
32
+ process do
33
+ return unless owner.is_a?(SelectorObject)
34
+ return if statement.parameters.empty?
35
+ # names = statement.parameters.children.map { |p| p.jump(:tstring_content, :ident).source.sub(/^:/, '') }
36
+ names = statement.parameters.children.map &:source
37
+ current_names = owner.tags(:filter).map(&:name)
38
+ (names-current_names).each do |name|
39
+ owner.add_tag(YARD::Tags::Tag.new(:filter, nil, nil, name))
40
+ end
41
+ end
42
+ end
43
+
44
+ class AddFilterHandler < YARD::Handlers::Ruby::Base
45
+ handles method_call(:filter)
46
+
47
+ process do
48
+ return unless owner.is_a?(SelectorObject)
49
+ return if statement.parameters.empty?
50
+ name = statement.parameters.first.source
51
+ type = if statement.parameters[1] && statement.parameters[1].source == ':boolean'
52
+ 'Boolean'
53
+ else
54
+ nil
55
+ end
56
+ if owner.tags(:filter).none? {|tag| tag.name == name }
57
+ filter_tag = YARD::Tags::Tag.new(:filter, nil, type, name)
58
+ owner.add_tag(filter_tag)
59
+ end
60
+ end
61
+ end
62
+
63
+ class FilterSetHandler < YARD::Handlers::Ruby::Base
64
+ handles method_call(:filter_set)
65
+
66
+ process do
67
+ return unless owner.is_a?(SelectorObject)
68
+ return if statement.parameters.empty? || !statement.parameters[1]
69
+
70
+ names = statement.parameters[1].flatten.map { |name| ":#{name}" }
71
+ names.each do |name|
72
+ if owner.tags(:filter).none? {|tag| tag.name == name }
73
+ filter_tag = YARD::Tags::Tag.new(:filter, nil, nil, name)
74
+ owner.add_tag(filter_tag)
75
+ end
76
+ end
77
+ end
78
+ end
data/.yardopts ADDED
@@ -0,0 +1 @@
1
+ --load ./.yard/yard_extensions.rb
data/History.md CHANGED
@@ -1,47 +1,449 @@
1
+ #Version 2.18.0
2
+ Release date: 2018-02-12
3
+
4
+ ### Fixed
5
+
6
+ * Firefox/geckodriver setting of contenteditable childs contents
7
+ * Ignore Selenium::WebDriver::Error::SessionNotCreatedError when quitting driver [Tim Connor]
8
+
9
+ ### Removed
10
+
11
+ * Headless chrome modal JS injection that is no longer needed for Chrome 64+/chromedriver 2.35+
12
+
13
+ # Version 2.17.0
14
+ Release date: 2018-01-02
15
+
16
+ ### Added
17
+
18
+ * `have_all_of_selectors`, `have_none_of_selectors` RSpec matchers for parity with minitest assertions [Thomas Walpole]
19
+
20
+ ### Fixed
21
+
22
+ * Allow xpath 3.x gem [Thomas Walpole]
23
+ * Issue when drivers returned nil for `current_path` and a matcher was used with a Regexp [Thomas Walpole]
24
+ * Error message when visible element not found, but non-visible was [Andy Klimczak]
25
+
26
+ # Version 2.16.1
27
+ Release date: 2017-11-20
28
+
29
+ ### Fixed
30
+
31
+ * Fix rack_test driver for rack_test 0.7.1/0.8.0 [Thomas Walpole]
32
+ * `accept_prompt` response text can contain quotes when using selenium with headless chrome [Thomas Walpole]
33
+
34
+ # Version 2.16.0
35
+ Release date: 2017-11-13
36
+
37
+ ### Added
38
+
39
+ * Attempt to move element into view when selenium doesn't correctly do it - See PR #1917 [Thomas Walpole]
40
+ * `current_path` matchers will now autodetect path vs url based on string to be matched. Deprecates
41
+ `:only_path` in favor of `:ignore_query` option [Thomas Walpole]
42
+ * Session#evaluate_async_script [Thomas Walpole]
43
+
44
+ ### Fixed
45
+
46
+ * Default prompt value when using headless Chrome works correctly [Thomas Walpole]
47
+ * Support new modal error returned by selenium-webdriver 3.7 for W3C drivers [Thomas Walpole]
48
+ * Calling `respond_to?` on the object passed to `Capybara.configure` block - Issue #1935
49
+
50
+ # Version 2.15.4
51
+ Release date: 2017-10-07
52
+
53
+ ### Fixed
54
+ * Visiting an absolute URL shouldn't overwrite the port when no server or always_include_port=false - Issue #1921
55
+
56
+ # Version 2.15.3
57
+ Release date: 2017-10-03
58
+
59
+ ### Fixed
60
+ * Visiting '/' when Capybara.app_host has a trailing '/' - Issue #1918 [Thomas Walpole]
61
+
62
+ # Version 2.15.2
63
+ Release date: 2017-10-02
64
+
65
+ ### Fixed
66
+
67
+ * Include within scope description in element not found/ambiguous errors [Thomas Walpole]
68
+ * Raise error when no activation block is passed to modal methods if using headless chrome [Thomas Walpole]
69
+ * Don't retry element access when inspecting [Ivan Neverov]
70
+ * Don't override a specified port (even if it is default port) in visited url [Thomas Walpole]
71
+
72
+ # Version 2.15.1
73
+
74
+ Release date: 2017-08-04
75
+
76
+ ### Fixed
77
+
78
+ * `attach_file` with no extension/MIME type when using the `:rack_test` driver [Thomas Walpole]
79
+
80
+ # Version 2.15.0
81
+
82
+ Release date: 2017-08-04
83
+
84
+ ### Added
85
+
86
+ * `sibling` and `ancestor` finders added [Thomas Walpole]
87
+ * Added ability to pass options to registered servers when setting
88
+ * Added basic built-in driver registrations `:selenium_chrome` and `:selenium_chrome_headless` [Thomas Walpole]
89
+ * Add `and_then` to Capybara RSpec matchers which behaves like the previous `and` compounder. [Thomas Walpole]
90
+ * Compound RSpec expectations with Capybara matchers now run both matchers inside a retry loop rather
91
+ than waiting for one to pass/fail before checking the second. Will make `#or` more performant and confirm
92
+ both conditions are true "simultaneously" for `and`. [Thomas Walpole]
93
+ If you still want the
94
+ * Default filter values are now included in error descriptions [Thomas Walpole]
95
+ * Add `Session#refresh` [Thomas Walpole]
96
+ * Loosened restrictions on where `Session#within_window` can be called from [Thomas Walpole]
97
+ * Switched from `mime-types` dependency to `mini_mime` [Jason Frey]
98
+
99
+ # Version 2.14.4
100
+
101
+ Release date: 2017-06-27
102
+
103
+ ### Fixed
104
+
105
+ * Fix retrieval of session_options for HaveSelector matcher descriptions - Issue #1883
106
+
107
+ # Version 2.14.3
108
+
109
+ Release date: 2017-06-15
110
+
111
+ ### Fixed
112
+
113
+ * Minitest assertions now raise the correct error type - Issue #1879 [Thomas Walpole]
114
+ * Improve flexibility of detecting Chrome headless mode [Thomas Walpole]
115
+
116
+ # Version 2.14.2
117
+
118
+ Release date: 2017-06-09
119
+
120
+ ### Fixed
121
+
122
+ * Workaround for system modals when using headless Chrome now works if the page changes
123
+
124
+ # Version 2.14.1
125
+
126
+ Release date: 2017-06-07
127
+
128
+ ### Fixed
129
+
130
+ * Catch correct error when unexpected system modals are discovered in latest selenium [Thomas Walpole]
131
+ * Update default `puma` server registration to encourage it to run in single mode [Thomas Walpole]
132
+ * Suppress invalid element errors raised while lazily evaluating the results of `all` [Thomas Walpole]
133
+ * Added missing `with_selected` option to the :select selector to match `options`/`with_options` options - Issue #1865 [Bartosz Nowak]
134
+ * Workaround broken system modals when using selenium with headless Chrome
135
+
136
+ # Version 2.14.0
137
+
138
+ Release date: 2017-05-01
139
+
140
+ ### Added
141
+
142
+ * "threadsafe" mode that allows per-session configuration
143
+ * `:type` filter added to the `:fillable_field` selector
144
+ * Proxy methods when using RSpec for `all`/`within` that call either the Capybara::DSL or RSpec matchers
145
+ depending on arguments passed
146
+ * Support for the new errors in selenium-webdriver 3.4
147
+
148
+ ### Fixed
149
+
150
+ * Element#inspect doesn't raise an error on obsolete elements
151
+ * Setting a contenteditable element with Selenium and Chrome 59
152
+ * Workaround a hang while setting the window size when using geckodriver 0.16 and Firefox 53
153
+ * Clicking on url with a blank href goes to the current url when using the RackTest driver
154
+
155
+ # Version 2.13.0
156
+
157
+ Release date: 2017-03-16
158
+
159
+ ### Added
160
+
161
+ * Selenium driver supports returning element(s) from evaluate_script [Thomas Walpole]
162
+ * rack_test driver supports click on checkboxes and radio buttons to change their states [Thomas Walpole]
163
+ * Support RSpec equivalent assertions and expectations for MiniTest [Thomas Walpole]
164
+
165
+ ### Fixed
166
+
167
+ * Editing of content editable children with selenium
168
+
169
+ # Version 2.12.1
170
+
171
+ Release date: 2017-02-16
172
+
173
+ ### Fixed
174
+ * Disable lazy Capybara::Results evaluation for JRuby due to ongoing issues
175
+
176
+ # Version 2.12.0
177
+
178
+ Release date: 2017-01-22
179
+
180
+ ### Added
181
+
182
+ * Session#switch_to_frame for manually handling frame switching - Issue #1365 [Thomas Walpole]
183
+ * Session#within_frame now accepts a selector type (defaults to :frame) and locator [Thomas Walpole]
184
+ * Session#execute_script and Session#evaluate_script now accept optional arguments that will be passed to the JS function. This may not be supported
185
+ by all drivers, and the types of arguments that may be passed is limited. If drivers opt to support this feature they should support passing page elements. [Thomas Walpole]
186
+ * :exact option for text and title matchers - Issue #1256 [Thomas Walpole]
187
+ * :exact_text option for selector finders/minders - Issue #1256 [Thomas Walpole]
188
+ * Capybara.exact_text setting that affects the text matchers and :text options passed to selector finders/matchers. Issue #1256 [Thomas Walpole]
189
+ * :make_visible option for #attach_file that allows for convenient changing of the CSS style of a file input element before attaching the file to it. Requires driver
190
+ support for passing page elements to Session#execute_script [Thomas Walpole]
191
+ * assert_all_selectors/assert_none_of_selectors assertions added
192
+ * :link selector (used by find_link/click_link) now supports finding hyperlink placeholders (no href attribute) when href: nil option is specified [Thomas Walpole]
193
+ * `within_element` as an alias of `within` due to RSpec collision
194
+
195
+ ### Fixed
196
+
197
+ * Fields inside a disabled fieldset are now correctly considered disabled - Issue #1816 [Thomas Walpole]
198
+ * Lazy Capybara::Results evaluation enabled for JRuby 9.1.6.0+
199
+ * A driver returning nil for #current_url won't raise an exception when calling #current_path [Dylan Reichstadt]
200
+ * Support Ruby 2.4.0 unified Integer [Koichi ITO]
201
+ * RackTest driver no longer modifies the text content of textarea elements in order to behave more like a real browser [Thomas Walpole]
202
+ * TextQuery (assert_text/have_text/etc) now ignores errors when trying to generate more helpful errors messages so the original error isn't hidden [Thomas Walpole]
203
+
204
+ # Version 2.11.0
205
+
206
+ Release date: 2016-12-05
207
+
208
+ ### Added
209
+
210
+ * Options for clearing session/local storage on reset added to the Selenium driver
211
+ * Window size changes wait for the size to stabilize
212
+ * Defined return value for most actions
213
+ * Ignore specific error when qutting selenium driver instance - Issue #1773 [Dylan Reichstadt, Thomas Walpole]
214
+ * Warn on selenium unknown errors rather than raising when quitting driver [Adam Pohorecki, Thomas Walpole]
215
+ * Capybara::Result#each now returns an `Enumerator` when called without a block - Issue #1777 [Thomas Walpole]
216
+
217
+ ### Fixed
218
+
219
+ * Selenium driver with Chrome should support multiple file upload [Thomas Walpole]
220
+ * Fix visible: :hidden with :text option behavior [Thomas Walpole]
221
+
222
+ # Version 2.10.2
223
+
224
+ Release date: 2016-11-30
225
+
226
+ ### Fixed
227
+
228
+ * App exceptions with multiple parameter initializers now re-raised correctly - Issue #1785 [Michael Lutsiuk]
229
+ * Use Addressable::URI when parsing current_path since it's more lenient of technically invalid URLs - Issue #1801 [Marcos Duque, Thomas Walpole]
230
+
231
+ # Version 2.10.1
232
+
233
+ Release date: 2016-10-08
234
+
235
+ ### Fixed
236
+ * App errors are now correctly raised with the explanatory cause in JRuby [Thomas Walpole]
237
+ * Capybara::Result optimization disabled in JRuby due to issue with lazy enumerator evaluation [Thomas Walpole]
238
+ See: https://github.com/jruby/jruby/issues/4212
239
+
240
+ # Version 2.10.0
241
+
242
+ Release date: 2016-10-05
243
+
244
+ ### Added
245
+
246
+ * Select `<button>` elements with descendant images with `alt` attributes matching the locator [Ian Lesperance]
247
+ * Locator string is optional in selector based matchers [Thomas Walpole]
248
+ * Selectors can specify their default visible setting [Thomas Walpole]
249
+ * Selector based finders and matchers can be passed a block to filter the results within the retry behavior [Thomas Walpole]
250
+
251
+ # Version 2.9.2
252
+
253
+ Release date: 2016-09-29
254
+
255
+ ### Fixed
256
+ * :label built-in selector finds nested label/control by control id if the label has no 'for' attribute [Thomas Walpole]
257
+ * Warning issued if an unknown selector type is specified [Thomas Walpole]
258
+
259
+ # Version 2.9.1
260
+
261
+ Release date: 2016-09-23
262
+
263
+ ### Fixed
264
+
265
+ * allow_label_click option did not work in some cases with Poltergeist - Issue #1762 [Thomas Walpole]
266
+ * matches_selector? should have access to all of a selectors options except the count options [Thomas Walpole]
267
+
268
+ # Version 2.9.0
269
+
270
+ Release date: 2016-09-19
271
+
272
+ ### Fixed
273
+
274
+ * Issue with rack-test driver and obselete mime-types when using `#attach_file` - Issue #1756 [Thomas Walpole]
275
+
276
+ ### Added
277
+
278
+ * `:class` option to many of the built-in selectors [Thomas Walpole]
279
+ * Removed need to specify value when creating `:boolean` filter type in custom selectors [Thomas Walpole]
280
+ * Filters can now be implemented through the XPath/CSS expressions in custom selectors [Thomas Walpole]
281
+ * `Element#matches_xpath?` and `Element#matches_css?` [Thomas Walpole]
282
+
283
+ # Version 2.8.1
284
+
285
+ Release date: 2016-08-25
286
+
287
+ ### Fixed
288
+
289
+ * Fixed error message from have_text when text is not found but contains regex special characters [Ryunosuke Sato]
290
+ * Warn when :exact option is passed that has no effect [Thomas Walpole]
291
+
292
+ # Version 2.8.0
293
+
294
+ Release date: 2016-08-16
295
+
296
+ ### Fixed
297
+
298
+ * Issue with modals present when closing the page using selenium - Issue #1696 [Jonas Nicklas, Thomas Walpole]
299
+ * Server errors raised in test code have the cause set to an explanatory exception
300
+ in rubies that support Exception#cause rather than a confusing ExpectationNotMet - Issue #1719 [Thomas Walpole]
301
+ * background/given/given! RSpec aliases will work if RSpec config.shared_context_metadata_behavior == :apply_to_host_groups [Thomas Walpole]
302
+ * Fixed setting of unexpectedAlertError now that Selenium will be freezing the Capabilities::DEFAULTS [Thomas Walpole]
303
+
304
+ ### Added
305
+
306
+ * 'check', 'uncheck', and 'choose' can now optionally click the associated label if the checkbox/radio button is not visible [Thomas Walpole]
307
+ * Raise error if Capybara.app_host/default_host are specified incorrectly [Thomas Walpole]
308
+ * Capybara::Selector::FilterSet allows for sharing filter definitions between selectors [Thomas Walpole]
309
+ * Remove need to pass nil locator in most node actions when locator is not needed [Thomas Walpole]
310
+ * New frames API for drivers - Issue #1365 [Thomas Walpole]
311
+ * Deprecated Element#parent in favor of Element#query_scope to better indicate what it is [Thomas Walpole]
312
+ * Improved error messages for have_text matcher [Alex Chaffee, Thomas Walpole]
313
+ * The `:with` option for the field selector now accepts a regular expression for matching the field value [Uwe Kubosch]
314
+ * Support matching on aria-label attribute when finding fields/links/buttons - Issue #1528 [Thomas Walpole]
315
+ * Optimize Capybara::Result to only apply fields as necessary in common use-case of `.all[idx]` [Thomas Walpole]
316
+
317
+ # Version 2.7.1
318
+
319
+ Release date: 2016-05-01
320
+
321
+ ### Fixed
322
+
323
+ * Issue where within_Frame would fail with Selenium if the frame is removed from within itself [Thomas Walpole]
324
+ * Reset sessions in reverse order so sessions with active servers are reset last - Issue #1692 [Jonas Nicklas, Thomas Walpole]
325
+
326
+ # Version 2.7.0
327
+
328
+ Release date: 2016-04-07
329
+
330
+ ### Fixed
331
+
332
+ * Element#visible?/checked?/disabled?/selected? Now return boolean as expected when using the rack_test driver [Thomas Walpole]
333
+ * The rack_test driver now considers \<input type="hidden"> elements as non-visible [Thomas Walpole]
334
+ * A nil locator passed to the built-in html type selectors now behaves consistently, and finds elements of the expected types [Thomas Walpole]
335
+ * Capybara::Server now searches for available ports on the same interface it binds to [Aaron Stone]
336
+ * Selenium Driver handles system modals that appear when page is unloading [Thomas Walpole]
337
+ * Warning output if unused parameters are passed to a selector query [Thomas Walpole]
338
+
339
+ ### Added
340
+
341
+ * Capybara now waits for requests to Capybaras server to complete while restting the session [John Hawthorn, Thomas Walpole]
342
+ * Capybara.reuse_server option to allow disabling of sharing server instance between sessions [Thomas Walpole]
343
+ * :multiple filter added to relevant selectors [Thomas Walpole]
344
+ * Provided server registrations for :webrick and :puma. Capybara.server = :puma for testing with Rails 5 [Thomas Walpole]
345
+ * Deprecate passing a block to Capybara::server user Capybara::register_server instead [Thomas Walpole]
346
+ * :option selector supports :selected and :disabled filters [Thomas Walpole]
347
+ * Element#matches_selector? and associated matchers (match_selector, match_css, etc) for comparing an element to a selector [Thomas Walpole]
348
+ * Deprecated Driver#browser_initialized? - Driver#reset! is required to be synchronous [Jonas Nicklas, Thomas Walpole]
349
+ * Deprecated Capybara.save_and_open_page_path in favor of Capybara.save_path with slightly different behavior when using relative paths with
350
+ save_page/save_screenshot [Thomas Walpole]
351
+ * :label selector [Thomas Walpole]
352
+
353
+ # Version 2.6.2
354
+
355
+ Relase date: 2016-01-27
356
+
357
+ ### Fixed
358
+
359
+ * support for more than just addressable 2.4.0 [Thomas Walpole]
360
+
361
+ # Version 2.6.1
362
+
363
+ Release date: 2016-01-27
364
+
365
+ ### Fixed
366
+
367
+ * Add missing require for addressable [Jorge Bejar]
368
+
369
+ # Version 2.6.0
370
+
371
+ Relase date: 2016-01-17
372
+
373
+ ### Fixed
374
+
375
+ * Fixed path escaping issue with current_path matchers [Thomas Walpole, Luke Rollans] (Issue #1611)
376
+ * Fixed circular require [David Rodríguez]
377
+ * Capybara::RackTest::Form no longer overrides Object#method [David Rodriguez]
378
+ * options and with_options filter for :select selector have more intuitive visibility behavior [Nathan]
379
+ * Test for nested modal API method support [Thomas Walpole]
380
+
381
+
382
+ ### Added
383
+
384
+ * Capybara.modify_selector [Thomas Walpole]
385
+ * xfeature and ffeature aliases added when using RSpec [Filip Bartuzi]
386
+ * Selenium driver supports a :clear option to #set to handle different strategies for clearing a field [Thomas Walpole]
387
+ * Support the use of rack 2.0 with the rack_test driver [Travis Grathwell, Thomas Walpole]
388
+ * Disabled option for default selectors now supports true, false, or :all [Jillian Rosile, Thomas Walpole]
389
+ * Modal API methods now default wait time to Capybara.default_max_wait_time [Thomas Walpole]
390
+
1
391
  # Version 2.5.0
392
+
2
393
  Release date: 2015-08-25
3
394
 
4
395
  ### Fixed
5
- * Error message now raised correctly when invalid options passed to 'have_text'/'have_content' [Tom Walpole]
6
- * Rack-test driver correctly gets document title when elements on the page have nested title elements (SVG) [Tom Walpole]
396
+
397
+ * Error message now raised correctly when invalid options passed to 'have_text'/'have_content' [Thomas Walpole]
398
+ * Rack-test driver correctly gets document title when elements on the page have nested title elements (SVG) [Thomas Walpole]
7
399
  * 'save_page' no longer errors when using Capybara.asset_host if the page has no \<head> element [Travis Grathwell]
8
400
  * rack-test driver will ignore clicks on links with href starting with '#' or 'javascript:'
9
401
 
10
402
  ### Added
11
- * has_current_path? and associated asserts/matchers added [Tom Walpole]
403
+
404
+ * has_current_path? and associated asserts/matchers added [Thomas Walpole]
12
405
  * Implement Node#path in selenium driver [Soutaro Matsumoto]
13
- * 'using_session' is now nestable [Tom Walpole]
14
- * 'switch_to_window' will now use waiting behavior for a matching window to appear [Tom Walpole]
15
- * Capybara.default_wait_time deprecated in favor of Capybara.default_max_wait_time to more clearly explain its purpose [Paul Pettengill]
406
+ * 'using_session' is now nestable [Thomas Walpole]
407
+ * 'switch_to_window' will now use waiting behavior for a matching window to appear [Thomas Walpole]
16
408
  * Warning when attempting to select a disabled option
17
409
  * Capybara matchers are now available in RSpec view specs by default [Joshua Clayton]
18
410
  * 'have_link' and 'click_link' now accept Regexp for href matching [Yaniv Savir]
19
411
  * 'find_all' as an alias of 'all' due to collision with RSpec
20
412
  * Capybara.wait_on_first_by_default setting (default is false)
21
413
  If set to true 'first' will use Capybaras waiting behavior to wait for at least one element to appear by default
22
- * Capybara waiting behavior uses the monotonic clock if supported to ease restrictions on freezing time in tests [Dmitry Maksyoma, Tom Walpole]
23
- * Capybara.server_errors setting that allows to configure what type of errors will be raised from the server thread [Tom Walpole]
24
- * Node#send_keys to allow for sending keypresses directly to elements [Tom Walpole]
414
+ * Capybara waiting behavior uses the monotonic clock if supported to ease restrictions on freezing time in tests [Dmitry Maksyoma, Thomas Walpole]
415
+ * Capybara.server_errors setting that allows to configure what type of errors will be raised from the server thread [Thomas Walpole]
416
+ * Node#send_keys to allow for sending keypresses directly to elements [Thomas Walpole]
25
417
  * 'formmethod' attribute support in RackTest driver [Emilia Andrzejewska]
26
418
  * Clear field using backspaces in Selenium driver by using `:fill_options => { :clear => :backspace }` [Joe Lencioni]
27
419
 
28
- #Version 2.4.4
420
+ ### Deprecated
421
+
422
+ * Capybara.default_wait_time deprecated in favor of Capybara.default_max_wait_time to more clearly explain its purpose [Paul Pettengill]
423
+
424
+ # Version 2.4.4
425
+
29
426
  Release date: 2014-10-13
30
427
 
31
428
  ### Fixed
429
+
32
430
  * Test for visit behavior updated [Phil Baker]
33
431
  * Removed concurrency prevention in favor of a note in the README - due to load order issues
34
432
 
35
433
  # Version 2.4.3
434
+
36
435
  Relase date: 2014-09-21
37
436
 
38
437
  ### Fixed
438
+
39
439
  * Update concurrency prevention to match Rails 4.2 behavior
40
440
 
41
441
  # Version 2.4.2
442
+
42
443
  Release date: 2014-09-20
43
444
 
44
445
  ### Fixed
446
+
45
447
  * Prevent concurrency issue when testing Rails app with default test environment [Thomas Walpole]
46
448
  * Tags for windows API tests fixed [Dmitry Vorotilin]
47
449
  * Documentation Fixes [Andrey Botalov]
@@ -76,6 +478,7 @@ Release date: 2014-07-03
76
478
  Release date: 2014-06-02
77
479
 
78
480
  ### Added
481
+
79
482
  * New window management API [Andrey Botalov]
80
483
  * Speed improvement for visible text detection in RackTest [Thomas Walpole]
81
484
  Thanks to Phillipe Creux for instigating this
data/License.txt CHANGED
@@ -1,6 +1,6 @@
1
1
  (The MIT License)
2
2
 
3
- Copyright (c) 2009-2012 Jonas Nicklas
3
+ Copyright (c) 2009-2016 Jonas Nicklas
4
4
 
5
5
  Permission is hereby granted, free of charge, to any person obtaining
6
6
  a copy of this software and associated documentation files (the