capybara 3.0.3 → 3.1.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 (82) hide show
  1. checksums.yaml +4 -4
  2. data/History.md +10 -0
  3. data/lib/capybara.rb +1 -1
  4. data/lib/capybara/helpers.rb +1 -1
  5. data/lib/capybara/minitest/spec.rb +2 -0
  6. data/lib/capybara/node/actions.rb +45 -5
  7. data/lib/capybara/queries/match_query.rb +2 -0
  8. data/lib/capybara/queries/selector_query.rb +3 -4
  9. data/lib/capybara/queries/text_query.rb +4 -5
  10. data/lib/capybara/rack_test/node.rb +6 -4
  11. data/lib/capybara/result.rb +1 -1
  12. data/lib/capybara/rspec/compound.rb +2 -0
  13. data/lib/capybara/selector.rb +72 -18
  14. data/lib/capybara/selector/css.rb +2 -0
  15. data/lib/capybara/selenium/driver.rb +14 -15
  16. data/lib/capybara/selenium/node.rb +23 -29
  17. data/lib/capybara/server.rb +29 -4
  18. data/lib/capybara/session.rb +12 -13
  19. data/lib/capybara/spec/session/all_spec.rb +6 -6
  20. data/lib/capybara/spec/session/{assert_current_path.rb → assert_current_path_spec.rb} +2 -3
  21. data/lib/capybara/spec/session/{assert_selector.rb → assert_selector_spec.rb} +0 -0
  22. data/lib/capybara/spec/session/{assert_text.rb → assert_text_spec.rb} +1 -1
  23. data/lib/capybara/spec/session/{assert_title.rb → assert_title_spec.rb} +0 -0
  24. data/lib/capybara/spec/session/check_spec.rb +6 -6
  25. data/lib/capybara/spec/session/click_link_or_button_spec.rb +0 -7
  26. data/lib/capybara/spec/session/current_url_spec.rb +6 -8
  27. data/lib/capybara/spec/session/element/{assert_match_selector.rb → assert_match_selector_spec.rb} +2 -0
  28. data/lib/capybara/spec/session/element/match_css_spec.rb +2 -0
  29. data/lib/capybara/spec/session/element/match_xpath_spec.rb +2 -0
  30. data/lib/capybara/spec/session/element/matches_selector_spec.rb +2 -0
  31. data/lib/capybara/spec/session/find_by_id_spec.rb +1 -1
  32. data/lib/capybara/spec/session/find_field_spec.rb +1 -1
  33. data/lib/capybara/spec/session/first_spec.rb +12 -12
  34. data/lib/capybara/spec/session/frame/frame_title_spec.rb +1 -1
  35. data/lib/capybara/spec/session/frame/frame_url_spec.rb +1 -1
  36. data/lib/capybara/spec/session/frame/switch_to_frame_spec.rb +2 -2
  37. data/lib/capybara/spec/session/frame/within_frame_spec.rb +1 -1
  38. data/lib/capybara/spec/session/has_button_spec.rb +5 -0
  39. data/lib/capybara/spec/session/has_current_path_spec.rb +2 -2
  40. data/lib/capybara/spec/session/has_field_spec.rb +1 -1
  41. data/lib/capybara/spec/session/has_none_selectors_spec.rb +2 -0
  42. data/lib/capybara/spec/session/has_selector_spec.rb +8 -0
  43. data/lib/capybara/spec/session/{headers.rb → headers_spec.rb} +0 -0
  44. data/lib/capybara/spec/session/node_spec.rb +4 -4
  45. data/lib/capybara/spec/session/reset_session_spec.rb +2 -2
  46. data/lib/capybara/spec/session/{response_code.rb → response_code_spec.rb} +0 -0
  47. data/lib/capybara/spec/session/save_and_open_screenshot_spec.rb +2 -1
  48. data/lib/capybara/spec/session/select_spec.rb +27 -1
  49. data/lib/capybara/spec/session/selectors_spec.rb +2 -0
  50. data/lib/capybara/spec/session/uncheck_spec.rb +3 -3
  51. data/lib/capybara/spec/session/visit_spec.rb +17 -10
  52. data/lib/capybara/spec/session/window/become_closed_spec.rb +3 -3
  53. data/lib/capybara/spec/session/window/current_window_spec.rb +2 -2
  54. data/lib/capybara/spec/session/window/open_new_window_spec.rb +3 -3
  55. data/lib/capybara/spec/session/window/switch_to_window_spec.rb +5 -5
  56. data/lib/capybara/spec/session/window/window_opened_by_spec.rb +3 -3
  57. data/lib/capybara/spec/session/window/window_spec.rb +24 -9
  58. data/lib/capybara/spec/session/window/windows_spec.rb +2 -2
  59. data/lib/capybara/spec/session/window/within_window_spec.rb +2 -2
  60. data/lib/capybara/spec/session/within_spec.rb +3 -3
  61. data/lib/capybara/spec/spec_helper.rb +7 -5
  62. data/lib/capybara/spec/views/form.erb +9 -0
  63. data/lib/capybara/version.rb +1 -1
  64. data/spec/basic_node_spec.rb +1 -1
  65. data/spec/capybara_spec.rb +4 -14
  66. data/spec/dsl_spec.rb +5 -3
  67. data/spec/fixtures/certificate.pem +25 -0
  68. data/spec/fixtures/key.pem +27 -0
  69. data/spec/fixtures/selenium_driver_rspec_failure.rb +2 -2
  70. data/spec/fixtures/selenium_driver_rspec_success.rb +2 -2
  71. data/spec/rack_test_spec.rb +8 -6
  72. data/spec/result_spec.rb +22 -2
  73. data/spec/rspec/features_spec.rb +4 -2
  74. data/spec/rspec/scenarios_spec.rb +1 -1
  75. data/spec/rspec/shared_spec_matchers.rb +7 -4
  76. data/spec/rspec/views_spec.rb +2 -1
  77. data/spec/rspec_spec.rb +80 -78
  78. data/spec/selenium_spec_marionette.rb +6 -4
  79. data/spec/server_spec.rb +40 -2
  80. data/spec/session_spec.rb +12 -4
  81. data/spec/shared_selenium_session.rb +106 -84
  82. metadata +11 -9
@@ -61,10 +61,14 @@ module Capybara
61
61
 
62
62
  attr_reader :app, :port, :host
63
63
 
64
- def initialize(app, port = Capybara.server_port, host = Capybara.server_host, server_errors = Capybara.server_errors)
64
+ def initialize(app, *deprecated_options, port: Capybara.server_port, host: Capybara.server_host, reportable_errors: Capybara.server_errors)
65
+ warn "Positional arguments, other than the application, to Server#new are deprecated, please use keyword arguments" unless deprecated_options.empty?
65
66
  @app = app
66
67
  @server_thread = nil # suppress warnings
67
- @host, @port, @server_errors = host, port, server_errors
68
+ @host = deprecated_options[1] || host
69
+ @reportable_errors = deprecated_options[2] || reportable_errors
70
+ @using_ssl = false
71
+ @port = deprecated_options[0] || port
68
72
  @port ||= Capybara::Server.ports[port_key]
69
73
  @port ||= find_available_port(host)
70
74
  end
@@ -77,10 +81,23 @@ module Capybara
77
81
  middleware.error
78
82
  end
79
83
 
84
+ def using_ssl?
85
+ @using_ssl
86
+ end
87
+
80
88
  def responsive?
81
89
  return false if @server_thread && @server_thread.join(0)
82
90
 
83
- res = Net::HTTP.start(host, port) { |http| http.get('/__identify__') }
91
+ begin
92
+ res = if !@using_ssl
93
+ http_connect
94
+ else
95
+ https_connect
96
+ end
97
+ rescue EOFError, Net::ReadTimeout
98
+ res = https_connect
99
+ @using_ssl = true
100
+ end
84
101
 
85
102
  if res.is_a?(Net::HTTPSuccess) or res.is_a?(Net::HTTPRedirection)
86
103
  return res.body == app.object_id.to_s
@@ -121,8 +138,16 @@ module Capybara
121
138
 
122
139
  private
123
140
 
141
+ def http_connect
142
+ Net::HTTP.start(host, port, read_timeout: 2) { |http| http.get('/__identify__') }
143
+ end
144
+
145
+ def https_connect
146
+ Net::HTTP.start(host, port, use_ssl: true, verify_mode: OpenSSL::SSL::VERIFY_NONE) { |http| http.get('/__identify__') }
147
+ end
148
+
124
149
  def middleware
125
- @middleware ||= Middleware.new(app, @server_errors)
150
+ @middleware ||= Middleware.new(app, @reportable_errors)
126
151
  end
127
152
 
128
153
  def port_key
@@ -84,7 +84,7 @@ module Capybara
84
84
  yield config
85
85
  end
86
86
  @server = if config.run_server and @app and driver.needs_server?
87
- Capybara::Server.new(@app, config.server_port, config.server_host, config.server_errors).boot
87
+ Capybara::Server.new(@app, port: config.server_port, host: config.server_host, reportable_errors: config.server_errors).boot
88
88
  else
89
89
  nil
90
90
  end
@@ -137,18 +137,17 @@ module Capybara
137
137
  # Raise errors encountered in the server
138
138
  #
139
139
  def raise_server_error!
140
- if @server and @server.error
141
- # Force an explanation for the error being raised as the exception cause
142
- begin
143
- if config.raise_server_errors
144
- raise CapybaraError, "Your application server raised an error - It has been raised in your test code because Capybara.raise_server_errors == true"
145
- end
146
- rescue CapybaraError
147
- # needed to get the cause set correctly in JRuby -- otherwise we could just do raise @server.error
148
- raise @server.error, @server.error.message, @server.error.backtrace
149
- ensure
150
- @server.reset_error!
140
+ return if @server.nil? || !@server.error
141
+ # Force an explanation for the error being raised as the exception cause
142
+ begin
143
+ if config.raise_server_errors
144
+ raise CapybaraError, "Your application server raised an error - It has been raised in your test code because Capybara.raise_server_errors == true"
151
145
  end
146
+ rescue CapybaraError
147
+ # needed to get the cause set correctly in JRuby -- otherwise we could just do raise @server.error
148
+ raise @server.error, @server.error.message, @server.error.backtrace
149
+ ensure
150
+ @server.reset_error!
152
151
  end
153
152
  end
154
153
 
@@ -250,7 +249,7 @@ module Capybara
250
249
  visit_uri = ::Addressable::URI.parse(visit_uri.to_s)
251
250
 
252
251
  uri_base = if @server
253
- ::Addressable::URI.parse(config.app_host || "http://#{@server.host}:#{@server.port}")
252
+ ::Addressable::URI.parse(config.app_host || "http#{'s' if @server.using_ssl?}://#{@server.host}:#{@server.port}")
254
253
  else
255
254
  config.app_host && ::Addressable::URI.parse(config.app_host)
256
255
  end
@@ -96,7 +96,7 @@ Capybara::SpecHelper.spec "#all" do
96
96
  context 'with element count filters' do
97
97
  context ':count' do
98
98
  it 'should succeed when the number of elements founds matches the expectation' do
99
- expect { @session.all(:css, 'h1, p', count: 4) }.to_not raise_error
99
+ expect { @session.all(:css, 'h1, p', count: 4) }.not_to raise_error
100
100
  end
101
101
  it 'should raise ExpectationNotMet when the number of elements founds does not match the expectation' do
102
102
  expect { @session.all(:css, 'h1, p', count: 5) }.to raise_error(Capybara::ExpectationNotMet)
@@ -104,7 +104,7 @@ Capybara::SpecHelper.spec "#all" do
104
104
  end
105
105
  context ':minimum' do
106
106
  it 'should succeed when the number of elements founds matches the expectation' do
107
- expect { @session.all(:css, 'h1, p', minimum: 0) }.to_not raise_error
107
+ expect { @session.all(:css, 'h1, p', minimum: 0) }.not_to raise_error
108
108
  end
109
109
  it 'should raise ExpectationNotMet when the number of elements founds does not match the expectation' do
110
110
  expect { @session.all(:css, 'h1, p', minimum: 5) }.to raise_error(Capybara::ExpectationNotMet)
@@ -112,7 +112,7 @@ Capybara::SpecHelper.spec "#all" do
112
112
  end
113
113
  context ':maximum' do
114
114
  it 'should succeed when the number of elements founds matches the expectation' do
115
- expect { @session.all(:css, 'h1, p', maximum: 4) }.to_not raise_error
115
+ expect { @session.all(:css, 'h1, p', maximum: 4) }.not_to raise_error
116
116
  end
117
117
  it 'should raise ExpectationNotMet when the number of elements founds does not match the expectation' do
118
118
  expect { @session.all(:css, 'h1, p', maximum: 0) }.to raise_error(Capybara::ExpectationNotMet)
@@ -120,7 +120,7 @@ Capybara::SpecHelper.spec "#all" do
120
120
  end
121
121
  context ':between' do
122
122
  it 'should succeed when the number of elements founds matches the expectation' do
123
- expect { @session.all(:css, 'h1, p', between: 2..7) }.to_not raise_error
123
+ expect { @session.all(:css, 'h1, p', between: 2..7) }.not_to raise_error
124
124
  end
125
125
  it 'should raise ExpectationNotMet when the number of elements founds does not match the expectation' do
126
126
  expect { @session.all(:css, 'h1, p', between: 0..3) }.to raise_error(Capybara::ExpectationNotMet)
@@ -133,7 +133,7 @@ Capybara::SpecHelper.spec "#all" do
133
133
  minimum: 5,
134
134
  maximum: 0,
135
135
  between: 0..3 }
136
- expect { @session.all(:css, 'h1, p', o) }.to_not raise_error
136
+ expect { @session.all(:css, 'h1, p', o) }.not_to raise_error
137
137
  end
138
138
  context 'with no :count expectation' do
139
139
  it 'fails if :minimum is not met' do
@@ -158,7 +158,7 @@ Capybara::SpecHelper.spec "#all" do
158
158
  o = { minimum: 0,
159
159
  maximum: 4,
160
160
  between: 2..7 }
161
- expect { @session.all(:css, 'h1, p', o) }.to_not raise_error
161
+ expect { @session.all(:css, 'h1, p', o) }.not_to raise_error
162
162
  end
163
163
  end
164
164
  end
@@ -37,8 +37,7 @@ Capybara::SpecHelper.spec '#assert_current_path' do
37
37
  end
38
38
 
39
39
  it "should not cause an exception when current_url is nil" do
40
- allow_any_instance_of(Capybara::Session).to receive(:current_url) { nil }
41
-
40
+ allow_any_instance_of(Capybara::Session).to receive(:current_url).and_return(nil)
42
41
  expect { @session.assert_current_path(nil) }.not_to raise_error
43
42
  end
44
43
  end
@@ -66,7 +65,7 @@ Capybara::SpecHelper.spec '#assert_no_current_path?' do
66
65
  end
67
66
 
68
67
  it "should not cause an exception when current_url is nil" do
69
- allow_any_instance_of(Capybara::Session).to receive(:current_url) { nil }
68
+ allow_any_instance_of(Capybara::Session).to receive(:current_url).and_return(nil)
70
69
 
71
70
  expect { @session.assert_no_current_path('/with_html') }.not_to raise_error
72
71
  end
@@ -128,7 +128,7 @@ Capybara::SpecHelper.spec '#assert_text' do
128
128
  end
129
129
 
130
130
  context 'with multiple count filters' do
131
- before(:each) do
131
+ before do
132
132
  @session.visit('/with_html')
133
133
  end
134
134
 
@@ -128,21 +128,21 @@ Capybara::SpecHelper.spec "#check" do
128
128
  end
129
129
 
130
130
  it "should check via clicking the label with :for attribute if possible" do
131
- expect(@session.find(:checkbox, 'form_cars_tesla', unchecked: true, visible: :hidden)).to be
131
+ expect(@session.find(:checkbox, 'form_cars_tesla', unchecked: true, visible: :hidden)).to be_truthy
132
132
  @session.check('form_cars_tesla')
133
133
  @session.click_button('awesome')
134
134
  expect(extract_results(@session)['cars']).to include('tesla')
135
135
  end
136
136
 
137
137
  it "should check via clicking the wrapping label if possible" do
138
- expect(@session.find(:checkbox, 'form_cars_mclaren', unchecked: true, visible: :hidden)).to be
138
+ expect(@session.find(:checkbox, 'form_cars_mclaren', unchecked: true, visible: :hidden)).to be_truthy
139
139
  @session.check('form_cars_mclaren')
140
140
  @session.click_button('awesome')
141
141
  expect(extract_results(@session)['cars']).to include('mclaren')
142
142
  end
143
143
 
144
144
  it "should not click the label if unneeded" do
145
- expect(@session.find(:checkbox, 'form_cars_jaguar', checked: true, visible: :hidden)).to be
145
+ expect(@session.find(:checkbox, 'form_cars_jaguar', checked: true, visible: :hidden)).to be_truthy
146
146
  @session.check('form_cars_jaguar')
147
147
  @session.click_button('awesome')
148
148
  expect(extract_results(@session)['cars']).to include('jaguar')
@@ -170,14 +170,14 @@ Capybara::SpecHelper.spec "#check" do
170
170
 
171
171
  context "with allow_label_click == true" do
172
172
  it "should check via the label if input is hidden" do
173
- expect(@session.find(:checkbox, 'form_cars_tesla', unchecked: true, visible: :hidden)).to be
173
+ expect(@session.find(:checkbox, 'form_cars_tesla', unchecked: true, visible: :hidden)).to be_truthy
174
174
  @session.check('form_cars_tesla', allow_label_click: true)
175
175
  @session.click_button('awesome')
176
176
  expect(extract_results(@session)['cars']).to include('tesla')
177
177
  end
178
178
 
179
179
  it "should not wait the full time if label can be clicked" do
180
- expect(@session.find(:checkbox, 'form_cars_tesla', unchecked: true, visible: :hidden)).to be
180
+ expect(@session.find(:checkbox, 'form_cars_tesla', unchecked: true, visible: :hidden)).to be_truthy
181
181
  start_time = Time.now
182
182
  @session.check('form_cars_tesla', allow_label_click: true, wait: 10)
183
183
  end_time = Time.now
@@ -185,7 +185,7 @@ Capybara::SpecHelper.spec "#check" do
185
185
  end
186
186
 
187
187
  it "should check via the label if input is moved off the left edge of the page" do
188
- expect(@session.find(:checkbox, 'form_cars_pagani', unchecked: true, visible: :all)).to be
188
+ expect(@session.find(:checkbox, 'form_cars_pagani', unchecked: true, visible: :all)).to be_truthy
189
189
  @session.check('form_cars_pagani', allow_label_click: true)
190
190
  @session.click_button('awesome')
191
191
  expect(extract_results(@session)['cars']).to include('pagani')
@@ -102,13 +102,6 @@ Capybara::SpecHelper.spec '#click_link_or_button' do
102
102
  @session.click_link_or_button('Disabled link')
103
103
  expect(@session).to have_content("Bar")
104
104
  end
105
-
106
- it "does nothing when button is disabled" do
107
- @session.visit('/form')
108
- expect do
109
- @session.click_link_or_button('Disabled button', disabled: false)
110
- end.to raise_error(Capybara::ElementNotFound)
111
- end
112
105
  end
113
106
 
114
107
  it "should return the element clicked" do
@@ -3,11 +3,11 @@
3
3
  require "capybara/spec/test_app"
4
4
 
5
5
  Capybara::SpecHelper.spec '#current_url, #current_path, #current_host' do
6
- before :all do
6
+ before :all do # rubocop:disable RSpec/BeforeAfterAll
7
7
  @servers = Array.new(2) { Capybara::Server.new(TestApp.new).boot }
8
8
  # sanity check
9
- expect(@servers[0].port).not_to eq(@servers[1].port)
10
- expect(@servers.map(&:port)).not_to include 80
9
+ expect(@servers[0].port).not_to eq(@servers[1].port) # rubocop:disable RSpec/ExpectInHook
10
+ expect(@servers.map(&:port)).not_to include 80 # rubocop:disable RSpec/ExpectInHook
11
11
  end
12
12
 
13
13
  def bases
@@ -23,10 +23,8 @@ Capybara::SpecHelper.spec '#current_url, #current_path, #current_host' do
23
23
  expect(@session.current_url.chomp('?')).to eq("#{scheme}://#{s.host}:#{s.port}#{path}")
24
24
  expect(@session.current_host).to eq("#{scheme}://#{s.host}") # no port
25
25
  expect(@session.current_path).to eq(path)
26
- if path == '/host'
27
- # Server should agree with us
28
- expect(@session).to have_content("Current host is #{scheme}://#{s.host}:#{s.port}")
29
- end
26
+ # Server should agree with us
27
+ expect(@session).to have_content("Current host is #{scheme}://#{s.host}:#{s.port}") if path == '/host'
30
28
  end
31
29
 
32
30
  def visit_host_links
@@ -100,7 +98,7 @@ Capybara::SpecHelper.spec '#current_url, #current_path, #current_host' do
100
98
 
101
99
  it "doesn't raise exception on a nil current_url" do
102
100
  skip "Only makes sense when there is a real driver" unless @session.respond_to?(:driver)
103
- allow(@session.driver).to receive(:current_url) { nil }
101
+ allow(@session.driver).to receive(:current_url).and_return(nil)
104
102
  @session.visit("/")
105
103
  expect { @session.current_url }.not_to raise_exception
106
104
  expect { @session.current_path }.not_to raise_exception
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  Capybara::SpecHelper.spec '#assert_matches_selector' do
2
4
  before do
3
5
  @session.visit('/with_html')
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  Capybara::SpecHelper.spec '#match_css?' do
2
4
  before do
3
5
  @session.visit('/with_html')
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  Capybara::SpecHelper.spec '#match_xpath?' do
2
4
  before do
3
5
  @session.visit('/with_html')
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  Capybara::SpecHelper.spec '#match_selector?' do
2
4
  before do
3
5
  @session.visit('/with_html')
@@ -24,7 +24,7 @@ Capybara::SpecHelper.spec '#find_by_id' do
24
24
  expect(@session.find_by_id("hidden_via_ancestor", visible: false).text(:all)).to match(/with hidden ancestor/)
25
25
  end
26
26
 
27
- it "finds invisible elements when `false`" do
27
+ it "doesn't find invisible elements when `true`" do
28
28
  expect do
29
29
  @session.find_by_id("hidden_via_ancestor", visible: true)
30
30
  end.to raise_error(Capybara::ElementNotFound)
@@ -9,7 +9,7 @@ Capybara::SpecHelper.spec '#find_field' do
9
9
  expect(@session.find_field('Dog').value).to eq('dog')
10
10
  expect(@session.find_field('form_description').value).to eq('Descriptive text goes here')
11
11
  expect(@session.find_field('Region')[:name]).to eq('form[region]')
12
- expect(@session.find_field('With Asterisk*')).to be
12
+ expect(@session.find_field('With Asterisk*')).to be_truthy
13
13
  end
14
14
 
15
15
  context "aria_label attribute with Capybara.enable_aria_label" do
@@ -65,20 +65,20 @@ Capybara::SpecHelper.spec '#first' do
65
65
  end
66
66
 
67
67
  it "should find nodes regardless of whether they are invisible when false" do
68
- expect(@session.first(:css, "a#invisible", visible: false)).to be
69
- expect(@session.first(:css, "a#invisible", visible: false, text: 'hidden link')).to be
70
- expect(@session.first(:css, "a#visible", visible: false)).to be
68
+ expect(@session.first(:css, "a#invisible", visible: false)).to be_truthy
69
+ expect(@session.first(:css, "a#invisible", visible: false, text: 'hidden link')).to be_truthy
70
+ expect(@session.first(:css, "a#visible", visible: false)).to be_truthy
71
71
  end
72
72
 
73
73
  it "should find nodes regardless of whether they are invisible when :all" do
74
- expect(@session.first(:css, "a#invisible", visible: :all)).to be
75
- expect(@session.first(:css, "a#invisible", visible: :all, text: 'hidden link')).to be
76
- expect(@session.first(:css, "a#visible", visible: :all)).to be
74
+ expect(@session.first(:css, "a#invisible", visible: :all)).to be_truthy
75
+ expect(@session.first(:css, "a#invisible", visible: :all, text: 'hidden link')).to be_truthy
76
+ expect(@session.first(:css, "a#visible", visible: :all)).to be_truthy
77
77
  end
78
78
 
79
79
  it "should find only hidden nodes when :hidden" do
80
- expect(@session.first(:css, "a#invisible", visible: :hidden)).to be
81
- expect(@session.first(:css, "a#invisible", visible: :hidden, text: 'hidden link')).to be
80
+ expect(@session.first(:css, "a#invisible", visible: :hidden)).to be_truthy
81
+ expect(@session.first(:css, "a#invisible", visible: :hidden, text: 'hidden link')).to be_truthy
82
82
  expect do
83
83
  @session.first(:css, "a#invisible", visible: :hidden, text: 'not hidden link')
84
84
  end.to raise_error Capybara::ElementNotFound
@@ -94,7 +94,7 @@ Capybara::SpecHelper.spec '#first' do
94
94
  expect do
95
95
  @session.first(:css, "a#invisible", visible: :visible, text: 'hidden link')
96
96
  end.to raise_error Capybara::ElementNotFound
97
- expect(@session.first(:css, "a#visible", visible: :visible)).to be
97
+ expect(@session.first(:css, "a#visible", visible: :visible)).to be_truthy
98
98
  end
99
99
 
100
100
  it "should default to Capybara.ignore_hidden_elements" do
@@ -103,8 +103,8 @@ Capybara::SpecHelper.spec '#first' do
103
103
  @session.first(:css, "a#invisible")
104
104
  end.to raise_error Capybara::ElementNotFound
105
105
  Capybara.ignore_hidden_elements = false
106
- expect(@session.first(:css, "a#invisible")).to be
107
- expect(@session.first(:css, "a")).to be
106
+ expect(@session.first(:css, "a#invisible")).to be_truthy
107
+ expect(@session.first(:css, "a")).to be_truthy
108
108
  end
109
109
  end
110
110
 
@@ -115,7 +115,7 @@ Capybara::SpecHelper.spec '#first' do
115
115
 
116
116
  it "should find the first element using the given locator" do
117
117
  @session.within(:xpath, "//div[@id='for_bar']") do
118
- expect(@session.first('.//form')).to be
118
+ expect(@session.first('.//form')).to be_truthy
119
119
  end
120
120
  end
121
121
  end
@@ -1,7 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  Capybara::SpecHelper.spec '#frame_title', requires: [:frames] do
4
- before(:each) do
4
+ before do
5
5
  @session.visit('/within_frames')
6
6
  end
7
7
 
@@ -1,7 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  Capybara::SpecHelper.spec '#frame_url', requires: [:frames] do
4
- before(:each) do
4
+ before do
5
5
  @session.visit('/within_frames')
6
6
  end
7
7
 
@@ -1,11 +1,11 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  Capybara::SpecHelper.spec '#switch_to_frame', requires: [:frames] do
4
- before(:each) do
4
+ before do
5
5
  @session.visit('/within_frames')
6
6
  end
7
7
 
8
- after(:each) do
8
+ after do
9
9
  # Ensure we clean up after the frame changes
10
10
  @session.switch_to_frame(:top)
11
11
  end
@@ -1,7 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  Capybara::SpecHelper.spec '#within_frame', requires: [:frames] do
4
- before(:each) do
4
+ before do
5
5
  @session.visit('/within_frames')
6
6
  end
7
7
 
@@ -34,6 +34,11 @@ Capybara::SpecHelper.spec '#has_button?' do
34
34
  it "should be true for enabled buttons if disabled: :all" do
35
35
  expect(@session).to have_button('med', disabled: :all)
36
36
  end
37
+
38
+ it "can verify button type" do
39
+ expect(@session).to have_button('awe123', type: 'submit')
40
+ expect(@session).not_to have_button('awe123', type: 'reset')
41
+ end
37
42
  end
38
43
 
39
44
  Capybara::SpecHelper.spec '#has_no_button?' do