capybara 2.18.0 → 3.0.0.rc1
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.
- checksums.yaml +4 -4
- data/History.md +26 -1
- data/README.md +12 -12
- data/lib/capybara.rb +13 -25
- data/lib/capybara/config.rb +11 -57
- data/lib/capybara/cucumber.rb +2 -3
- data/lib/capybara/driver/base.rb +5 -16
- data/lib/capybara/driver/node.rb +5 -4
- data/lib/capybara/dsl.rb +1 -0
- data/lib/capybara/helpers.rb +16 -28
- data/lib/capybara/minitest.rb +139 -138
- data/lib/capybara/minitest/spec.rb +15 -14
- data/lib/capybara/node/actions.rb +59 -81
- data/lib/capybara/node/base.rb +11 -18
- data/lib/capybara/node/document.rb +2 -2
- data/lib/capybara/node/document_matchers.rb +8 -8
- data/lib/capybara/node/element.rb +30 -40
- data/lib/capybara/node/finders.rb +62 -70
- data/lib/capybara/node/matchers.rb +48 -71
- data/lib/capybara/node/simple.rb +11 -17
- data/lib/capybara/queries/ancestor_query.rb +4 -6
- data/lib/capybara/queries/base_query.rb +18 -17
- data/lib/capybara/queries/current_path_query.rb +8 -24
- data/lib/capybara/queries/match_query.rb +3 -7
- data/lib/capybara/queries/selector_query.rb +92 -95
- data/lib/capybara/queries/sibling_query.rb +4 -4
- data/lib/capybara/queries/text_query.rb +37 -34
- data/lib/capybara/queries/title_query.rb +8 -11
- data/lib/capybara/rack_test/browser.rb +15 -18
- data/lib/capybara/rack_test/css_handlers.rb +6 -4
- data/lib/capybara/rack_test/driver.rb +6 -10
- data/lib/capybara/rack_test/form.rb +50 -40
- data/lib/capybara/rack_test/node.rb +70 -56
- data/lib/capybara/rails.rb +2 -6
- data/lib/capybara/result.rb +22 -22
- data/lib/capybara/rspec.rb +5 -10
- data/lib/capybara/rspec/compound.rb +5 -10
- data/lib/capybara/rspec/features.rb +17 -48
- data/lib/capybara/rspec/matcher_proxies.rb +31 -15
- data/lib/capybara/rspec/matchers.rb +70 -60
- data/lib/capybara/selector.rb +129 -117
- data/lib/capybara/selector/css.rb +6 -11
- data/lib/capybara/selector/filter.rb +1 -17
- data/lib/capybara/selector/filter_set.rb +17 -14
- data/lib/capybara/selector/filters/base.rb +7 -6
- data/lib/capybara/selector/filters/expression_filter.rb +6 -23
- data/lib/capybara/selector/filters/node_filter.rb +2 -12
- data/lib/capybara/selector/selector.rb +27 -33
- data/lib/capybara/selenium/driver.rb +113 -127
- data/lib/capybara/selenium/node.rb +148 -113
- data/lib/capybara/server.rb +3 -2
- data/lib/capybara/session.rb +137 -223
- data/lib/capybara/session/config.rb +47 -67
- data/lib/capybara/session/matchers.rb +8 -7
- data/lib/capybara/spec/public/test.js +26 -4
- data/lib/capybara/spec/session/accept_alert_spec.rb +1 -0
- data/lib/capybara/spec/session/accept_confirm_spec.rb +3 -2
- data/lib/capybara/spec/session/accept_prompt_spec.rb +1 -0
- data/lib/capybara/spec/session/all_spec.rb +31 -18
- data/lib/capybara/spec/session/ancestor_spec.rb +2 -4
- data/lib/capybara/spec/session/assert_all_of_selectors_spec.rb +6 -5
- data/lib/capybara/spec/session/assert_current_path.rb +12 -11
- data/lib/capybara/spec/session/assert_selector.rb +1 -0
- data/lib/capybara/spec/session/assert_text.rb +18 -17
- data/lib/capybara/spec/session/assert_title.rb +1 -0
- data/lib/capybara/spec/session/attach_file_spec.rb +14 -13
- data/lib/capybara/spec/session/body_spec.rb +1 -0
- data/lib/capybara/spec/session/check_spec.rb +7 -6
- data/lib/capybara/spec/session/choose_spec.rb +5 -4
- data/lib/capybara/spec/session/click_button_spec.rb +20 -28
- data/lib/capybara/spec/session/click_link_or_button_spec.rb +8 -7
- data/lib/capybara/spec/session/click_link_spec.rb +8 -7
- data/lib/capybara/spec/session/current_scope_spec.rb +4 -3
- data/lib/capybara/spec/session/current_url_spec.rb +7 -6
- data/lib/capybara/spec/session/dismiss_confirm_spec.rb +1 -1
- data/lib/capybara/spec/session/dismiss_prompt_spec.rb +1 -0
- data/lib/capybara/spec/session/element/assert_match_selector.rb +1 -1
- data/lib/capybara/spec/session/element/match_xpath_spec.rb +1 -1
- data/lib/capybara/spec/session/element/matches_selector_spec.rb +5 -5
- data/lib/capybara/spec/session/evaluate_async_script_spec.rb +3 -2
- data/lib/capybara/spec/session/evaluate_script_spec.rb +4 -3
- data/lib/capybara/spec/session/execute_script_spec.rb +4 -3
- data/lib/capybara/spec/session/fill_in_spec.rb +6 -5
- data/lib/capybara/spec/session/find_button_spec.rb +4 -3
- data/lib/capybara/spec/session/find_by_id_spec.rb +2 -1
- data/lib/capybara/spec/session/find_field_spec.rb +8 -14
- data/lib/capybara/spec/session/find_link_spec.rb +6 -5
- data/lib/capybara/spec/session/find_spec.rb +37 -31
- data/lib/capybara/spec/session/first_spec.rb +60 -33
- data/lib/capybara/spec/session/frame/switch_to_frame_spec.rb +2 -1
- data/lib/capybara/spec/session/frame/within_frame_spec.rb +9 -16
- data/lib/capybara/spec/session/go_back_spec.rb +1 -0
- data/lib/capybara/spec/session/go_forward_spec.rb +1 -0
- data/lib/capybara/spec/session/has_all_selectors_spec.rb +15 -15
- data/lib/capybara/spec/session/has_button_spec.rb +2 -1
- data/lib/capybara/spec/session/has_css_spec.rb +3 -2
- data/lib/capybara/spec/session/has_current_path_spec.rb +12 -28
- data/lib/capybara/spec/session/has_field_spec.rb +4 -3
- data/lib/capybara/spec/session/has_link_spec.rb +1 -0
- data/lib/capybara/spec/session/has_none_selectors_spec.rb +17 -17
- data/lib/capybara/spec/session/has_select_spec.rb +30 -29
- data/lib/capybara/spec/session/has_selector_spec.rb +5 -4
- data/lib/capybara/spec/session/has_table_spec.rb +2 -1
- data/lib/capybara/spec/session/has_text_spec.rb +6 -5
- data/lib/capybara/spec/session/has_title_spec.rb +1 -0
- data/lib/capybara/spec/session/has_xpath_spec.rb +1 -0
- data/lib/capybara/spec/session/headers.rb +2 -1
- data/lib/capybara/spec/session/html_spec.rb +1 -0
- data/lib/capybara/spec/session/node_spec.rb +91 -56
- data/lib/capybara/spec/session/node_wrapper_spec.rb +36 -0
- data/lib/capybara/spec/session/refresh_spec.rb +4 -2
- data/lib/capybara/spec/session/reset_session_spec.rb +1 -0
- data/lib/capybara/spec/session/response_code.rb +1 -0
- data/lib/capybara/spec/session/save_and_open_page_spec.rb +1 -0
- data/lib/capybara/spec/session/save_and_open_screenshot_spec.rb +6 -11
- data/lib/capybara/spec/session/save_page_spec.rb +1 -17
- data/lib/capybara/spec/session/save_screenshot_spec.rb +1 -1
- data/lib/capybara/spec/session/select_spec.rb +20 -20
- data/lib/capybara/spec/session/selectors_spec.rb +2 -2
- data/lib/capybara/spec/session/sibling_spec.rb +1 -1
- data/lib/capybara/spec/session/text_spec.rb +1 -0
- data/lib/capybara/spec/session/title_spec.rb +1 -1
- data/lib/capybara/spec/session/uncheck_spec.rb +4 -3
- data/lib/capybara/spec/session/unselect_spec.rb +6 -5
- data/lib/capybara/spec/session/visit_spec.rb +9 -3
- data/lib/capybara/spec/session/window/become_closed_spec.rb +2 -1
- data/lib/capybara/spec/session/window/current_window_spec.rb +1 -0
- data/lib/capybara/spec/session/window/open_new_window_spec.rb +1 -0
- data/lib/capybara/spec/session/window/switch_to_window_spec.rb +2 -1
- data/lib/capybara/spec/session/window/window_opened_by_spec.rb +2 -1
- data/lib/capybara/spec/session/window/window_spec.rb +12 -12
- data/lib/capybara/spec/session/window/windows_spec.rb +2 -3
- data/lib/capybara/spec/session/window/within_window_spec.rb +13 -68
- data/lib/capybara/spec/session/within_spec.rb +1 -0
- data/lib/capybara/spec/spec_helper.rb +26 -18
- data/lib/capybara/spec/test_app.rb +8 -9
- data/lib/capybara/spec/views/form.erb +1 -0
- data/lib/capybara/spec/views/with_html.erb +3 -1
- data/lib/capybara/spec/views/within_frames.erb +4 -1
- data/lib/capybara/version.rb +2 -1
- data/lib/capybara/window.rb +6 -10
- data/spec/basic_node_spec.rb +1 -0
- data/spec/capybara_spec.rb +9 -32
- data/spec/dsl_spec.rb +5 -13
- data/spec/filter_set_spec.rb +5 -4
- data/spec/fixtures/selenium_driver_rspec_failure.rb +2 -1
- data/spec/fixtures/selenium_driver_rspec_success.rb +3 -2
- data/spec/minitest_spec.rb +4 -3
- data/spec/minitest_spec_spec.rb +3 -2
- data/spec/per_session_config_spec.rb +9 -8
- data/spec/rack_test_spec.rb +21 -20
- data/spec/result_spec.rb +17 -16
- data/spec/rspec/features_spec.rb +17 -14
- data/spec/rspec/scenarios_spec.rb +5 -7
- data/spec/rspec/shared_spec_matchers.rb +96 -99
- data/spec/rspec/views_spec.rb +2 -1
- data/spec/rspec_matchers_spec.rb +19 -2
- data/spec/rspec_spec.rb +11 -15
- data/spec/selector_spec.rb +5 -6
- data/spec/selenium_spec_chrome.rb +7 -4
- data/spec/selenium_spec_marionette.rb +26 -12
- data/spec/server_spec.rb +33 -33
- data/spec/session_spec.rb +2 -1
- data/spec/shared_selenium_session.rb +27 -21
- data/spec/spec_helper.rb +2 -5
- metadata +66 -87
- data/lib/capybara/query.rb +0 -7
- data/spec/selenium_spec_firefox.rb +0 -68
@@ -1,4 +1,5 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
|
+
|
2
3
|
Capybara::SpecHelper.spec '#click_link' do
|
3
4
|
before do
|
4
5
|
@session.visit('/with_html')
|
@@ -11,7 +12,7 @@ Capybara::SpecHelper.spec '#click_link' do
|
|
11
12
|
end
|
12
13
|
|
13
14
|
it "casts to string" do
|
14
|
-
@session.click_link(:
|
15
|
+
@session.click_link(:foo)
|
15
16
|
expect(@session).to have_content('Another World')
|
16
17
|
end
|
17
18
|
|
@@ -35,7 +36,7 @@ Capybara::SpecHelper.spec '#click_link' do
|
|
35
36
|
expect(@session).to have_content('Bar')
|
36
37
|
end
|
37
38
|
|
38
|
-
it "should accept partial matches" do
|
39
|
+
it "should accept partial matches", :exact_false do
|
39
40
|
@session.click_link('abo')
|
40
41
|
expect(@session).to have_content('Bar')
|
41
42
|
end
|
@@ -47,7 +48,7 @@ Capybara::SpecHelper.spec '#click_link' do
|
|
47
48
|
expect(@session).to have_content('Bar')
|
48
49
|
end
|
49
50
|
|
50
|
-
it "should accept partial matches" do
|
51
|
+
it "should accept partial matches", :exact_false do
|
51
52
|
@session.click_link('some titl')
|
52
53
|
expect(@session).to have_content('Bar')
|
53
54
|
end
|
@@ -59,7 +60,7 @@ Capybara::SpecHelper.spec '#click_link' do
|
|
59
60
|
expect(@session).to have_content('Bar')
|
60
61
|
end
|
61
62
|
|
62
|
-
it "should accept partial matches" do
|
63
|
+
it "should accept partial matches", :exact_false do
|
63
64
|
@session.click_link('some imag')
|
64
65
|
expect(@session).to have_content('Bar')
|
65
66
|
end
|
@@ -85,7 +86,7 @@ Capybara::SpecHelper.spec '#click_link' do
|
|
85
86
|
end
|
86
87
|
end
|
87
88
|
|
88
|
-
context "with a regex :href option given"
|
89
|
+
context "with a regex :href option given" do
|
89
90
|
it "should find a link matching an all-matching regex pattern" do
|
90
91
|
@session.click_link('labore', href: /.+/)
|
91
92
|
expect(@session).to have_content('Bar')
|
@@ -180,13 +181,13 @@ Capybara::SpecHelper.spec '#click_link' do
|
|
180
181
|
|
181
182
|
context "with :exact option" do
|
182
183
|
it "should accept partial matches when false" do
|
183
|
-
@session.click_link('abo', exact:
|
184
|
+
@session.click_link('abo', exact: false)
|
184
185
|
expect(@session).to have_content('Bar')
|
185
186
|
end
|
186
187
|
|
187
188
|
it "should not accept partial matches when true" do
|
188
189
|
expect do
|
189
|
-
@session.click_link('abo', exact:
|
190
|
+
@session.click_link('abo', exact: true)
|
190
191
|
end.to raise_error(Capybara::ElementNotFound)
|
191
192
|
end
|
192
193
|
end
|
@@ -1,15 +1,16 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
|
+
|
2
3
|
Capybara::SpecHelper.spec '#current_scope' do
|
3
4
|
before do
|
4
5
|
@session.visit('/with_scope')
|
5
6
|
end
|
6
|
-
|
7
|
+
|
7
8
|
context "when not in a #within block" do
|
8
9
|
it "should return the document" do
|
9
10
|
expect(@session.current_scope).to be_kind_of Capybara::Node::Document
|
10
11
|
end
|
11
12
|
end
|
12
|
-
|
13
|
+
|
13
14
|
context "when in a #within block" do
|
14
15
|
it "should return the element in scope" do
|
15
16
|
@session.within(:css, "#simple_first_name") do
|
@@ -17,7 +18,7 @@ Capybara::SpecHelper.spec '#current_scope' do
|
|
17
18
|
end
|
18
19
|
end
|
19
20
|
end
|
20
|
-
|
21
|
+
|
21
22
|
context "when in a nested #within block" do
|
22
23
|
it "should return the element in scope" do
|
23
24
|
@session.within("//div[@id='for_bar']") do
|
@@ -1,24 +1,25 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
|
+
|
2
3
|
require "capybara/spec/test_app"
|
3
4
|
|
4
5
|
Capybara::SpecHelper.spec '#current_url, #current_path, #current_host' do
|
5
6
|
before :all do
|
6
|
-
@servers = 2
|
7
|
+
@servers = Array.new(2) { Capybara::Server.new(TestApp.new).boot }
|
7
8
|
# sanity check
|
8
9
|
expect(@servers[0].port).not_to eq(@servers[1].port)
|
9
|
-
expect(@servers.map
|
10
|
+
expect(@servers.map(&:port)).not_to include 80
|
10
11
|
end
|
11
12
|
|
12
13
|
def bases
|
13
14
|
@servers.map { |s| "http://#{s.host}:#{s.port}" }
|
14
15
|
end
|
15
16
|
|
16
|
-
def should_be_on
|
17
|
-
#This delay is to give fully async drivers (selenium w/chromedriver) time for the browser
|
18
|
-
#to get to its destination - should be removed when we have a waiting current_url matcher
|
19
|
-
sleep 0.1 # remove and adjust tests when a waiting current_url/path matcher is implemented
|
17
|
+
def should_be_on(server_index, path = "/host", scheme = "http")
|
20
18
|
# Check that we are on /host on the given server
|
21
19
|
s = @servers[server_index]
|
20
|
+
|
21
|
+
expect(@session).to have_current_path("#{scheme}://#{s.host}:#{s.port}#{path}", url: true)
|
22
|
+
|
22
23
|
expect(@session.current_url.chomp('?')).to eq("#{scheme}://#{s.host}:#{s.port}#{path}")
|
23
24
|
expect(@session.current_host).to eq("#{scheme}://#{s.host}") # no port
|
24
25
|
expect(@session.current_path).to eq(path)
|
@@ -1,4 +1,5 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
|
+
|
2
3
|
Capybara::SpecHelper.spec '#dismiss_confirm', requires: [:modals] do
|
3
4
|
before do
|
4
5
|
@session.visit('/with_js')
|
@@ -26,7 +27,6 @@ Capybara::SpecHelper.spec '#dismiss_confirm', requires: [:modals] do
|
|
26
27
|
end.to raise_error(Capybara::ModalNotFound)
|
27
28
|
end
|
28
29
|
|
29
|
-
|
30
30
|
it "should return the message presented" do
|
31
31
|
message = @session.dismiss_confirm do
|
32
32
|
@session.click_link('Open confirm')
|
@@ -31,6 +31,6 @@ Capybara::SpecHelper.spec '#assert_matches_selector' do
|
|
31
31
|
|
32
32
|
it "should accept a filter block" do
|
33
33
|
@element.assert_matches_selector(:css, 'span') { |el| el[:class] == "number" }
|
34
|
-
@element.assert_not_matches_selector(:css,'span') { |el| el[:class] == "not_number" }
|
34
|
+
@element.assert_not_matches_selector(:css, 'span') { |el| el[:class] == "not_number" }
|
35
35
|
end
|
36
36
|
end
|
@@ -52,10 +52,10 @@ Capybara::SpecHelper.spec '#match_selector?' do
|
|
52
52
|
it 'should accept a custom filter block' do
|
53
53
|
@session.visit('/form')
|
54
54
|
cbox = @session.find(:css, '#form_pets_dog')
|
55
|
-
expect(cbox).to match_selector(:checkbox){ |node| node[:id] == "form_pets_dog"}
|
56
|
-
expect(cbox).not_to match_selector(:checkbox){ |node| node[:id] != "form_pets_dog"}
|
57
|
-
expect(cbox.matches_selector?(:checkbox){ |node| node[:id] == "form_pets_dog"}).to be true
|
58
|
-
expect(cbox.matches_selector?(:checkbox){ |node| node[:id] != "form_pets_dog"}).to be false
|
55
|
+
expect(cbox).to match_selector(:checkbox) { |node| node[:id] == "form_pets_dog" }
|
56
|
+
expect(cbox).not_to match_selector(:checkbox) { |node| node[:id] != "form_pets_dog" }
|
57
|
+
expect(cbox.matches_selector?(:checkbox) { |node| node[:id] == "form_pets_dog" }).to be true
|
58
|
+
expect(cbox.matches_selector?(:checkbox) { |node| node[:id] != "form_pets_dog" }).to be false
|
59
59
|
end
|
60
60
|
end
|
61
61
|
|
@@ -103,4 +103,4 @@ Capybara::SpecHelper.spec '#not_matches_selector?' do
|
|
103
103
|
expect(@element.not_matches_xpath?("//span", text: "42")).to be false
|
104
104
|
expect(@element.not_matches_xpath?("//span", text: "Doesnotexist")).to be true
|
105
105
|
end
|
106
|
-
end
|
106
|
+
end
|
@@ -1,18 +1,19 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
|
+
|
2
3
|
Capybara::SpecHelper.spec "#evaluate_async_script", requires: [:js] do
|
3
4
|
it "should evaluate the given script and return whatever it produces" do
|
4
5
|
@session.visit('/with_js')
|
5
6
|
expect(@session.evaluate_async_script("arguments[0](4)")).to eq(4)
|
6
7
|
end
|
7
8
|
|
8
|
-
it "should support passing elements as arguments to the script", requires: [
|
9
|
+
it "should support passing elements as arguments to the script", requires: %i[js es_args] do
|
9
10
|
@session.visit('/with_js')
|
10
11
|
el = @session.find(:css, '#drag p')
|
11
12
|
result = @session.evaluate_async_script("arguments[2]([arguments[0].innerText, arguments[1]])", el, "Doodle Funk")
|
12
13
|
expect(result).to eq ["This is a draggable element.", "Doodle Funk"]
|
13
14
|
end
|
14
15
|
|
15
|
-
it "should support returning elements after asynchronous operation", requires: [
|
16
|
+
it "should support returning elements after asynchronous operation", requires: %i[js es_args] do
|
16
17
|
@session.visit('/with_js')
|
17
18
|
@session.find(:css, '#change') # ensure page has loaded and element is available
|
18
19
|
el = @session.evaluate_async_script("var cb = arguments[0]; setTimeout(function(){ cb(document.getElementById('change')) }, 100)")
|
@@ -1,24 +1,25 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
|
+
|
2
3
|
Capybara::SpecHelper.spec "#evaluate_script", requires: [:js] do
|
3
4
|
it "should evaluate the given script and return whatever it produces" do
|
4
5
|
@session.visit('/with_js')
|
5
6
|
expect(@session.evaluate_script("1+3")).to eq(4)
|
6
7
|
end
|
7
8
|
|
8
|
-
it "should pass arguments to the script", requires: [
|
9
|
+
it "should pass arguments to the script", requires: %i[js es_args] do
|
9
10
|
@session.visit('/with_js')
|
10
11
|
@session.evaluate_script("document.getElementById('change').textContent = arguments[0]", "Doodle Funk")
|
11
12
|
expect(@session).to have_css('#change', text: 'Doodle Funk')
|
12
13
|
end
|
13
14
|
|
14
|
-
it "should support passing elements as arguments to the script", requires: [
|
15
|
+
it "should support passing elements as arguments to the script", requires: %i[js es_args] do
|
15
16
|
@session.visit('/with_js')
|
16
17
|
el = @session.find(:css, '#change')
|
17
18
|
@session.evaluate_script("arguments[0].textContent = arguments[1]", el, "Doodle Funk")
|
18
19
|
expect(@session).to have_css('#change', text: 'Doodle Funk')
|
19
20
|
end
|
20
21
|
|
21
|
-
it "should support returning elements", requires: [
|
22
|
+
it "should support returning elements", requires: %i[js es_args] do
|
22
23
|
@session.visit('/with_js')
|
23
24
|
@session.find(:css, '#change') # ensure page has loaded and element is available
|
24
25
|
el = @session.evaluate_script("document.getElementById('change')")
|
@@ -1,4 +1,5 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
|
+
|
2
3
|
Capybara::SpecHelper.spec "#execute_script", requires: [:js] do
|
3
4
|
it "should execute the given script and return nothing" do
|
4
5
|
@session.visit('/with_js')
|
@@ -8,16 +9,16 @@ Capybara::SpecHelper.spec "#execute_script", requires: [:js] do
|
|
8
9
|
|
9
10
|
it "should be able to call functions defined in the page" do
|
10
11
|
@session.visit('/with_js')
|
11
|
-
expect{ @session.execute_script("$('#change').text('Funky Doodle')") }.not_to raise_error
|
12
|
+
expect { @session.execute_script("$('#change').text('Funky Doodle')") }.not_to raise_error
|
12
13
|
end
|
13
14
|
|
14
|
-
it "should pass arguments to the script", requires: [
|
15
|
+
it "should pass arguments to the script", requires: %i[js es_args] do
|
15
16
|
@session.visit('/with_js')
|
16
17
|
@session.execute_script("document.getElementById('change').textContent = arguments[0]", "Doodle Funk")
|
17
18
|
expect(@session).to have_css('#change', text: 'Doodle Funk')
|
18
19
|
end
|
19
20
|
|
20
|
-
it "should support passing elements as arguments to the script", requires: [
|
21
|
+
it "should support passing elements as arguments to the script", requires: %i[js es_args] do
|
21
22
|
@session.visit('/with_js')
|
22
23
|
el = @session.find(:css, '#change')
|
23
24
|
@session.execute_script("arguments[1].textContent = arguments[0]", "Doodle Funk", el)
|
@@ -1,4 +1,5 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
|
+
|
2
3
|
Capybara::SpecHelper.spec "#fill_in" do
|
3
4
|
before do
|
4
5
|
@session.visit('/form')
|
@@ -113,7 +114,7 @@ Capybara::SpecHelper.spec "#fill_in" do
|
|
113
114
|
end
|
114
115
|
|
115
116
|
it "should throw an exception if a hash containing 'with' is not provided" do
|
116
|
-
expect {@session.fill_in 'Name'
|
117
|
+
expect { @session.fill_in 'Name' }.to raise_error(ArgumentError, /with/)
|
117
118
|
end
|
118
119
|
|
119
120
|
it "should wait for asynchronous load", requires: [:js] do
|
@@ -123,13 +124,13 @@ Capybara::SpecHelper.spec "#fill_in" do
|
|
123
124
|
end
|
124
125
|
|
125
126
|
it "casts to string" do
|
126
|
-
@session.fill_in(:
|
127
|
+
@session.fill_in(:form_first_name, with: :Harry)
|
127
128
|
@session.click_button('awesome')
|
128
129
|
expect(extract_results(@session)['first_name']).to eq('Harry')
|
129
130
|
end
|
130
131
|
|
131
132
|
it "casts to string if field has maxlength" do
|
132
|
-
@session.fill_in(:
|
133
|
+
@session.fill_in(:form_zipcode, with: 1234567)
|
133
134
|
@session.click_button('awesome')
|
134
135
|
expect(extract_results(@session)['zipcode']).to eq('12345')
|
135
136
|
end
|
@@ -182,14 +183,14 @@ Capybara::SpecHelper.spec "#fill_in" do
|
|
182
183
|
|
183
184
|
context "with :exact option" do
|
184
185
|
it "should accept partial matches when false" do
|
185
|
-
@session.fill_in("Explanation", with: "Dude", exact:
|
186
|
+
@session.fill_in("Explanation", with: "Dude", exact: false)
|
186
187
|
@session.click_button("awesome")
|
187
188
|
expect(extract_results(@session)["name_explanation"]).to eq("Dude")
|
188
189
|
end
|
189
190
|
|
190
191
|
it "should not accept partial matches when true" do
|
191
192
|
expect do
|
192
|
-
@session.fill_in("Explanation", with: "Dude", exact:
|
193
|
+
@session.fill_in("Explanation", with: "Dude", exact: true)
|
193
194
|
end.to raise_error(Capybara::ElementNotFound)
|
194
195
|
end
|
195
196
|
end
|
@@ -1,4 +1,5 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
|
+
|
2
3
|
Capybara::SpecHelper.spec '#find_button' do
|
3
4
|
before do
|
4
5
|
@session.visit('/form')
|
@@ -22,7 +23,7 @@ Capybara::SpecHelper.spec '#find_button' do
|
|
22
23
|
end
|
23
24
|
|
24
25
|
it "casts to string" do
|
25
|
-
expect(@session.find_button(:
|
26
|
+
expect(@session.find_button(:med)[:id]).to eq("mediocre")
|
26
27
|
end
|
27
28
|
|
28
29
|
it "should raise error if the button doesn't exist" do
|
@@ -33,12 +34,12 @@ Capybara::SpecHelper.spec '#find_button' do
|
|
33
34
|
|
34
35
|
context "with :exact option" do
|
35
36
|
it "should accept partial matches when false" do
|
36
|
-
expect(@session.find_button('What an Awesome', exact:
|
37
|
+
expect(@session.find_button('What an Awesome', exact: false).value).to eq("awesome")
|
37
38
|
end
|
38
39
|
|
39
40
|
it "should not accept partial matches when true" do
|
40
41
|
expect do
|
41
|
-
@session.find_button('What an Awesome', exact:
|
42
|
+
@session.find_button('What an Awesome', exact: true)
|
42
43
|
end.to raise_error(Capybara::ElementNotFound)
|
43
44
|
end
|
44
45
|
end
|
@@ -1,4 +1,5 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
|
+
|
2
3
|
Capybara::SpecHelper.spec '#find_by_id' do
|
3
4
|
before do
|
4
5
|
@session.visit('/with_html')
|
@@ -9,7 +10,7 @@ Capybara::SpecHelper.spec '#find_by_id' do
|
|
9
10
|
end
|
10
11
|
|
11
12
|
it "casts to string" do
|
12
|
-
expect(@session.find_by_id(:
|
13
|
+
expect(@session.find_by_id(:red).tag_name).to eq('a')
|
13
14
|
end
|
14
15
|
|
15
16
|
it "should raise error if no element with id is found" do
|
@@ -1,4 +1,5 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
|
+
|
2
3
|
Capybara::SpecHelper.spec '#find_field' do
|
3
4
|
before do
|
4
5
|
@session.visit('/form')
|
@@ -26,7 +27,7 @@ Capybara::SpecHelper.spec '#find_field' do
|
|
26
27
|
end
|
27
28
|
|
28
29
|
it "casts to string" do
|
29
|
-
expect(@session.find_field(:
|
30
|
+
expect(@session.find_field(:Dog).value).to eq('dog')
|
30
31
|
end
|
31
32
|
|
32
33
|
it "should raise error if the field doesn't exist" do
|
@@ -35,27 +36,20 @@ Capybara::SpecHelper.spec '#find_field' do
|
|
35
36
|
end.to raise_error(Capybara::ElementNotFound)
|
36
37
|
end
|
37
38
|
|
38
|
-
it "should
|
39
|
-
expect_any_instance_of(Kernel).to receive(:warn).
|
40
|
-
with('Invalid value nil passed to filter disabled - defaulting to false')
|
41
|
-
@session.find_field('Dog', disabled: nil)
|
42
|
-
end
|
43
|
-
|
44
|
-
it "should be aliased as 'field_labeled' for webrat compatibility" do
|
45
|
-
expect(@session.field_labeled('Dog').value).to eq('dog')
|
39
|
+
it "should raise error if filter option is invalid" do
|
46
40
|
expect do
|
47
|
-
@session.
|
48
|
-
end.to raise_error
|
41
|
+
@session.find_field('Dog', disabled: nil)
|
42
|
+
end.to raise_error ArgumentError, "Invalid value nil passed to filter disabled"
|
49
43
|
end
|
50
44
|
|
51
45
|
context "with :exact option" do
|
52
46
|
it "should accept partial matches when false" do
|
53
|
-
expect(@session.find_field("Explanation", exact:
|
47
|
+
expect(@session.find_field("Explanation", exact: false)[:name]).to eq("form[name_explanation]")
|
54
48
|
end
|
55
49
|
|
56
50
|
it "should not accept partial matches when true" do
|
57
51
|
expect do
|
58
|
-
@session.find_field("Explanation", exact:
|
52
|
+
@session.find_field("Explanation", exact: true)
|
59
53
|
end.to raise_error(Capybara::ElementNotFound)
|
60
54
|
end
|
61
55
|
end
|
@@ -112,6 +106,6 @@ Capybara::SpecHelper.spec '#find_field' do
|
|
112
106
|
|
113
107
|
it "should accept an optional filter block" do
|
114
108
|
# this would be better done with the :with option but this is just a test
|
115
|
-
expect(@session.find_field('form[pets][]'){ |node| node.value == 'dog' }[:id]).to eq "form_pets_dog"
|
109
|
+
expect(@session.find_field('form[pets][]') { |node| node.value == 'dog' }[:id]).to eq "form_pets_dog"
|
116
110
|
end
|
117
111
|
end
|
@@ -1,4 +1,5 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
|
+
|
2
3
|
Capybara::SpecHelper.spec '#find_link' do
|
3
4
|
before do
|
4
5
|
@session.visit('/with_html')
|
@@ -6,13 +7,13 @@ Capybara::SpecHelper.spec '#find_link' do
|
|
6
7
|
|
7
8
|
it "should find any link" do
|
8
9
|
expect(@session.find_link('foo').text).to eq("ullamco")
|
9
|
-
expect(@session.find_link('labore')[:href]).to match %r
|
10
|
+
expect(@session.find_link('labore')[:href]).to match %r{/with_simple_html$}
|
10
11
|
end
|
11
12
|
|
12
13
|
context "aria_label attribute with Capybara.enable_aria_label" do
|
13
14
|
it "should find when true" do
|
14
15
|
Capybara.enable_aria_label = true
|
15
|
-
expect(@session.find_link('Go to simple')[:href]).to match %r
|
16
|
+
expect(@session.find_link('Go to simple')[:href]).to match %r{/with_simple_html$}
|
16
17
|
end
|
17
18
|
|
18
19
|
it "should not find when false" do
|
@@ -22,7 +23,7 @@ Capybara::SpecHelper.spec '#find_link' do
|
|
22
23
|
end
|
23
24
|
|
24
25
|
it "casts to string" do
|
25
|
-
expect(@session.find_link(:
|
26
|
+
expect(@session.find_link(:foo).text).to eq("ullamco")
|
26
27
|
end
|
27
28
|
|
28
29
|
it "should raise error if the field doesn't exist" do
|
@@ -33,12 +34,12 @@ Capybara::SpecHelper.spec '#find_link' do
|
|
33
34
|
|
34
35
|
context "with :exact option" do
|
35
36
|
it "should accept partial matches when false" do
|
36
|
-
expect(@session.find_link('abo', exact:
|
37
|
+
expect(@session.find_link('abo', exact: false).text).to eq("labore")
|
37
38
|
end
|
38
39
|
|
39
40
|
it "should not accept partial matches when true" do
|
40
41
|
expect do
|
41
|
-
@session.find_link('abo', exact:
|
42
|
+
@session.find_link('abo', exact: true)
|
42
43
|
end.to raise_error(Capybara::ElementNotFound)
|
43
44
|
end
|
44
45
|
end
|