capybara 2.2.1 → 2.3.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/History.md +26 -0
- data/README.md +36 -14
- data/lib/capybara.rb +6 -3
- data/lib/capybara/driver/base.rb +37 -1
- data/lib/capybara/driver/node.rb +10 -2
- data/lib/capybara/helpers.rb +21 -13
- data/lib/capybara/node/base.rb +12 -7
- data/lib/capybara/node/element.rb +17 -1
- data/lib/capybara/node/finders.rb +22 -1
- data/lib/capybara/node/matchers.rb +26 -5
- data/lib/capybara/node/simple.rb +9 -2
- data/lib/capybara/rack_test/css_handlers.rb +3 -1
- data/lib/capybara/rack_test/form.rb +3 -2
- data/lib/capybara/rack_test/node.rb +3 -3
- data/lib/capybara/rspec.rb +1 -0
- data/lib/capybara/rspec/features.rb +2 -1
- data/lib/capybara/rspec/matchers.rb +50 -5
- data/lib/capybara/selenium/driver.rb +76 -12
- data/lib/capybara/selenium/node.rb +8 -0
- data/lib/capybara/server.rb +1 -1
- data/lib/capybara/session.rb +234 -29
- data/lib/capybara/spec/public/jquery.js +1 -1
- data/lib/capybara/spec/public/test.js +7 -0
- data/lib/capybara/spec/session/all_spec.rb +88 -17
- data/lib/capybara/spec/session/assert_selector.rb +6 -0
- data/lib/capybara/spec/session/attach_file_spec.rb +15 -15
- data/lib/capybara/spec/session/body_spec.rb +4 -4
- data/lib/capybara/spec/session/check_spec.rb +16 -16
- data/lib/capybara/spec/session/choose_spec.rb +5 -5
- data/lib/capybara/spec/session/click_button_spec.rb +93 -84
- data/lib/capybara/spec/session/click_link_or_button_spec.rb +8 -8
- data/lib/capybara/spec/session/click_link_spec.rb +26 -19
- data/lib/capybara/spec/session/current_scope_spec.rb +3 -3
- data/lib/capybara/spec/session/current_url_spec.rb +8 -8
- data/lib/capybara/spec/session/evaluate_script_spec.rb +1 -1
- data/lib/capybara/spec/session/execute_script_spec.rb +2 -2
- data/lib/capybara/spec/session/fill_in_spec.rb +22 -22
- data/lib/capybara/spec/session/find_button_spec.rb +4 -4
- data/lib/capybara/spec/session/find_by_id_spec.rb +3 -3
- data/lib/capybara/spec/session/find_field_spec.rb +7 -7
- data/lib/capybara/spec/session/find_link_spec.rb +4 -4
- data/lib/capybara/spec/session/find_spec.rb +46 -46
- data/lib/capybara/spec/session/first_spec.rb +23 -23
- data/lib/capybara/spec/session/go_back_spec.rb +3 -3
- data/lib/capybara/spec/session/go_forward_spec.rb +4 -4
- data/lib/capybara/spec/session/has_button_spec.rb +13 -13
- data/lib/capybara/spec/session/has_css_spec.rb +87 -87
- data/lib/capybara/spec/session/has_field_spec.rb +87 -87
- data/lib/capybara/spec/session/has_link_spec.rb +11 -11
- data/lib/capybara/spec/session/has_select_spec.rb +58 -58
- data/lib/capybara/spec/session/has_selector_spec.rb +48 -48
- data/lib/capybara/spec/session/has_table_spec.rb +7 -7
- data/lib/capybara/spec/session/has_text_spec.rb +73 -73
- data/lib/capybara/spec/session/has_title_spec.rb +10 -10
- data/lib/capybara/spec/session/has_xpath_spec.rb +44 -44
- data/lib/capybara/spec/session/headers.rb +1 -1
- data/lib/capybara/spec/session/html_spec.rb +9 -9
- data/lib/capybara/spec/session/node_spec.rb +81 -65
- data/lib/capybara/spec/session/reset_session_spec.rb +15 -15
- data/lib/capybara/spec/session/response_code.rb +1 -1
- data/lib/capybara/spec/session/save_and_open_screenshot_spec.rb +46 -0
- data/lib/capybara/spec/session/save_page_spec.rb +9 -9
- data/lib/capybara/spec/session/{screenshot.rb → screenshot_spec.rb} +4 -2
- data/lib/capybara/spec/session/select_spec.rb +22 -22
- data/lib/capybara/spec/session/text_spec.rb +15 -10
- data/lib/capybara/spec/session/title_spec.rb +2 -2
- data/lib/capybara/spec/session/uncheck_spec.rb +7 -7
- data/lib/capybara/spec/session/unselect_spec.rb +14 -14
- data/lib/capybara/spec/session/visit_spec.rb +24 -17
- data/lib/capybara/spec/session/window/become_closed_spec.rb +84 -0
- data/lib/capybara/spec/session/window/current_window_spec.rb +25 -0
- data/lib/capybara/spec/session/window/open_new_window_spec.rb +28 -0
- data/lib/capybara/spec/session/window/switch_to_window_spec.rb +114 -0
- data/lib/capybara/spec/session/window/window_opened_by_spec.rb +83 -0
- data/lib/capybara/spec/session/window/window_spec.rb +141 -0
- data/lib/capybara/spec/session/window/windows_spec.rb +31 -0
- data/lib/capybara/spec/session/window/within_window_spec.rb +188 -0
- data/lib/capybara/spec/session/within_frame_spec.rb +9 -9
- data/lib/capybara/spec/session/within_spec.rb +16 -16
- data/lib/capybara/spec/spec_helper.rb +14 -4
- data/lib/capybara/spec/views/form.erb +7 -0
- data/lib/capybara/spec/views/popup_one.erb +1 -1
- data/lib/capybara/spec/views/popup_two.erb +1 -1
- data/lib/capybara/spec/views/with_js.erb +2 -0
- data/lib/capybara/spec/views/with_windows.erb +38 -0
- data/lib/capybara/version.rb +1 -1
- data/lib/capybara/window.rb +123 -0
- data/spec/basic_node_spec.rb +32 -32
- data/spec/capybara_spec.rb +6 -7
- data/spec/dsl_spec.rb +48 -48
- data/spec/fixtures/selenium_driver_rspec_failure.rb +2 -2
- data/spec/fixtures/selenium_driver_rspec_success.rb +2 -2
- data/spec/rack_test_spec.rb +33 -19
- data/spec/result_spec.rb +13 -13
- data/spec/rspec/features_spec.rb +20 -15
- data/spec/rspec/matchers_spec.rb +109 -109
- data/spec/rspec_spec.rb +10 -10
- data/spec/selenium_spec.rb +31 -6
- data/spec/selenium_spec_chrome.rb +2 -2
- data/spec/server_spec.rb +13 -13
- metadata +51 -62
- checksums.yaml.gz.sig +0 -0
- data.tar.gz.sig +0 -0
- data/lib/capybara/spec/session/within_window_spec.rb +0 -45
- data/lib/capybara/spec/views/within_popups.erb +0 -25
- metadata.gz.sig +0 -0
@@ -4,11 +4,11 @@ Capybara::SpecHelper.spec '#find_by_id' do
|
|
4
4
|
end
|
5
5
|
|
6
6
|
it "should find any element by id" do
|
7
|
-
@session.find_by_id('red').tag_name.
|
7
|
+
expect(@session.find_by_id('red').tag_name).to eq('a')
|
8
8
|
end
|
9
9
|
|
10
10
|
it "casts to string" do
|
11
|
-
@session.find_by_id(:'red').tag_name.
|
11
|
+
expect(@session.find_by_id(:'red').tag_name).to eq('a')
|
12
12
|
end
|
13
13
|
|
14
14
|
it "should raise error if no element with id is found" do
|
@@ -19,7 +19,7 @@ Capybara::SpecHelper.spec '#find_by_id' do
|
|
19
19
|
|
20
20
|
context "with :visible option" do
|
21
21
|
it "finds invisible elements when `false`" do
|
22
|
-
@session.find_by_id("hidden_via_ancestor", :visible => false).text(:all).
|
22
|
+
expect(@session.find_by_id("hidden_via_ancestor", :visible => false).text(:all)).to match(/with hidden ancestor/)
|
23
23
|
end
|
24
24
|
|
25
25
|
it "finds invisible elements when `false`" do
|
@@ -4,13 +4,13 @@ Capybara::SpecHelper.spec '#find_field' do
|
|
4
4
|
end
|
5
5
|
|
6
6
|
it "should find any field" do
|
7
|
-
@session.find_field('Dog').value.
|
8
|
-
@session.find_field('form_description').text.
|
9
|
-
@session.find_field('Region')[:name].
|
7
|
+
expect(@session.find_field('Dog').value).to eq('dog')
|
8
|
+
expect(@session.find_field('form_description').text).to eq('Descriptive text goes here')
|
9
|
+
expect(@session.find_field('Region')[:name]).to eq('form[region]')
|
10
10
|
end
|
11
11
|
|
12
12
|
it "casts to string" do
|
13
|
-
@session.find_field(:'Dog').value.
|
13
|
+
expect(@session.find_field(:'Dog').value).to eq('dog')
|
14
14
|
end
|
15
15
|
|
16
16
|
it "should raise error if the field doesn't exist" do
|
@@ -20,7 +20,7 @@ Capybara::SpecHelper.spec '#find_field' do
|
|
20
20
|
end
|
21
21
|
|
22
22
|
it "should be aliased as 'field_labeled' for webrat compatibility" do
|
23
|
-
@session.field_labeled('Dog').value.
|
23
|
+
expect(@session.field_labeled('Dog').value).to eq('dog')
|
24
24
|
expect do
|
25
25
|
@session.field_labeled('Does not exist')
|
26
26
|
end.to raise_error(Capybara::ElementNotFound)
|
@@ -28,7 +28,7 @@ Capybara::SpecHelper.spec '#find_field' do
|
|
28
28
|
|
29
29
|
context "with :exact option" do
|
30
30
|
it "should accept partial matches when false" do
|
31
|
-
@session.find_field("Explanation", :exact => false)[:name].
|
31
|
+
expect(@session.find_field("Explanation", :exact => false)[:name]).to eq("form[name_explanation]")
|
32
32
|
end
|
33
33
|
|
34
34
|
it "should not accept partial matches when true" do
|
@@ -40,7 +40,7 @@ Capybara::SpecHelper.spec '#find_field' do
|
|
40
40
|
|
41
41
|
context "with :disabled option" do
|
42
42
|
it "should find disabled fields when true" do
|
43
|
-
@session.find_field("Disabled Checkbox", :disabled => true)[:name].
|
43
|
+
expect(@session.find_field("Disabled Checkbox", :disabled => true)[:name]).to eq("form[disabled_checkbox]")
|
44
44
|
end
|
45
45
|
|
46
46
|
it "should not find disabled fields when false" do
|
@@ -4,12 +4,12 @@ Capybara::SpecHelper.spec '#find_link' do
|
|
4
4
|
end
|
5
5
|
|
6
6
|
it "should find any field" do
|
7
|
-
@session.find_link('foo').text.
|
8
|
-
@session.find_link('labore')[:href].
|
7
|
+
expect(@session.find_link('foo').text).to eq("ullamco")
|
8
|
+
expect(@session.find_link('labore')[:href]).to match %r(/with_simple_html$)
|
9
9
|
end
|
10
10
|
|
11
11
|
it "casts to string" do
|
12
|
-
@session.find_link(:'foo').text.
|
12
|
+
expect(@session.find_link(:'foo').text).to eq("ullamco")
|
13
13
|
end
|
14
14
|
|
15
15
|
it "should raise error if the field doesn't exist" do
|
@@ -20,7 +20,7 @@ Capybara::SpecHelper.spec '#find_link' do
|
|
20
20
|
|
21
21
|
context "with :exact option" do
|
22
22
|
it "should accept partial matches when false" do
|
23
|
-
@session.find_link('abo', :exact => false).text.
|
23
|
+
expect(@session.find_link('abo', :exact => false).text).to eq("labore")
|
24
24
|
end
|
25
25
|
|
26
26
|
it "should not accept partial matches when true" do
|
@@ -8,13 +8,13 @@ Capybara::SpecHelper.spec '#find' do
|
|
8
8
|
end
|
9
9
|
|
10
10
|
it "should find the first element using the given locator" do
|
11
|
-
@session.find('//h1').text.
|
12
|
-
@session.find("//input[@id='test_field']")[:value].
|
11
|
+
expect(@session.find('//h1').text).to eq('This is a test')
|
12
|
+
expect(@session.find("//input[@id='test_field']")[:value]).to eq('monkey')
|
13
13
|
end
|
14
14
|
|
15
15
|
it "should find the first element using the given locator and options" do
|
16
|
-
@session.find('//a', :text => 'Redirect')[:id].
|
17
|
-
@session.find(:css, 'a', :text => 'A link came first')[:title].
|
16
|
+
expect(@session.find('//a', :text => 'Redirect')[:id]).to eq('red')
|
17
|
+
expect(@session.find(:css, 'a', :text => 'A link came first')[:title]).to eq('twas a fine link')
|
18
18
|
end
|
19
19
|
|
20
20
|
it "should raise an error if there are multiple matches" do
|
@@ -24,12 +24,12 @@ Capybara::SpecHelper.spec '#find' do
|
|
24
24
|
it "should wait for asynchronous load", :requires => [:js] do
|
25
25
|
@session.visit('/with_js')
|
26
26
|
@session.click_link('Click me')
|
27
|
-
@session.find(:css, "a#has-been-clicked").text.
|
27
|
+
expect(@session.find(:css, "a#has-been-clicked").text).to include('Has been clicked')
|
28
28
|
end
|
29
29
|
|
30
30
|
context "with :text option" do
|
31
31
|
it "casts text's argument to string" do
|
32
|
-
@session.find(:css, '.number', text: 42).
|
32
|
+
expect(@session.find(:css, '.number', text: 42)).to have_content("42")
|
33
33
|
end
|
34
34
|
end
|
35
35
|
|
@@ -53,7 +53,7 @@ Capybara::SpecHelper.spec '#find' do
|
|
53
53
|
it "should find element if it appears before given wait duration" do
|
54
54
|
@session.visit('/with_js')
|
55
55
|
@session.click_link('Click me')
|
56
|
-
@session.find(:css, "a#has-been-clicked", :wait => 0.9).text.
|
56
|
+
expect(@session.find(:css, "a#has-been-clicked", :wait => 0.9).text).to include('Has been clicked')
|
57
57
|
end
|
58
58
|
end
|
59
59
|
|
@@ -61,26 +61,26 @@ Capybara::SpecHelper.spec '#find' do
|
|
61
61
|
it "raises an error suggesting that Capybara is stuck in time" do
|
62
62
|
@session.visit('/with_js')
|
63
63
|
now = Time.now
|
64
|
-
Time.
|
64
|
+
allow(Time).to receive(:now).and_return(now)
|
65
65
|
expect { @session.find('//isnotthere') }.to raise_error(Capybara::FrozenInTime)
|
66
66
|
end
|
67
67
|
end
|
68
68
|
|
69
69
|
context "with css selectors" do
|
70
70
|
it "should find the first element using the given locator" do
|
71
|
-
@session.find(:css, 'h1').text.
|
72
|
-
@session.find(:css, "input[id='test_field']")[:value].
|
71
|
+
expect(@session.find(:css, 'h1').text).to eq('This is a test')
|
72
|
+
expect(@session.find(:css, "input[id='test_field']")[:value]).to eq('monkey')
|
73
73
|
end
|
74
74
|
|
75
75
|
it "should support pseudo selectors" do
|
76
|
-
@session.find(:css, 'input:disabled').value.
|
76
|
+
expect(@session.find(:css, 'input:disabled').value).to eq('This is disabled')
|
77
77
|
end
|
78
78
|
end
|
79
79
|
|
80
80
|
context "with xpath selectors" do
|
81
81
|
it "should find the first element using the given locator" do
|
82
|
-
@session.find(:xpath, '//h1').text.
|
83
|
-
@session.find(:xpath, "//input[@id='test_field']")[:value].
|
82
|
+
expect(@session.find(:xpath, '//h1').text).to eq('This is a test')
|
83
|
+
expect(@session.find(:xpath, "//input[@id='test_field']")[:value]).to eq('monkey')
|
84
84
|
end
|
85
85
|
end
|
86
86
|
|
@@ -89,8 +89,8 @@ Capybara::SpecHelper.spec '#find' do
|
|
89
89
|
Capybara.add_selector(:beatle) do
|
90
90
|
xpath { |name| ".//*[@id='#{name}']" }
|
91
91
|
end
|
92
|
-
@session.find(:beatle, 'john').text.
|
93
|
-
@session.find(:beatle, 'paul').text.
|
92
|
+
expect(@session.find(:beatle, 'john').text).to eq('John')
|
93
|
+
expect(@session.find(:beatle, 'paul').text).to eq('Paul')
|
94
94
|
end
|
95
95
|
end
|
96
96
|
|
@@ -100,10 +100,10 @@ Capybara::SpecHelper.spec '#find' do
|
|
100
100
|
xpath { |num| ".//*[contains(@class, 'beatle')][#{num}]" }
|
101
101
|
match { |value| value.is_a?(Fixnum) }
|
102
102
|
end
|
103
|
-
@session.find(:beatle, '2').text.
|
104
|
-
@session.find(1).text.
|
105
|
-
@session.find(2).text.
|
106
|
-
@session.find('//h1').text.
|
103
|
+
expect(@session.find(:beatle, '2').text).to eq('Paul')
|
104
|
+
expect(@session.find(1).text).to eq('John')
|
105
|
+
expect(@session.find(2).text).to eq('Paul')
|
106
|
+
expect(@session.find('//h1').text).to eq('This is a test')
|
107
107
|
end
|
108
108
|
end
|
109
109
|
|
@@ -116,13 +116,13 @@ Capybara::SpecHelper.spec '#find' do
|
|
116
116
|
end
|
117
117
|
|
118
118
|
it "should find elements that match the filter" do
|
119
|
-
@session.find(:beatle, 'Paul', :type => 'drummer').text.
|
120
|
-
@session.find(:beatle, 'Ringo', :type => 'drummer').text.
|
119
|
+
expect(@session.find(:beatle, 'Paul', :type => 'drummer').text).to eq('Paul')
|
120
|
+
expect(@session.find(:beatle, 'Ringo', :type => 'drummer').text).to eq('Ringo')
|
121
121
|
end
|
122
122
|
|
123
123
|
it "ignores filter when it is not given" do
|
124
|
-
@session.find(:beatle, 'Paul').text.
|
125
|
-
@session.find(:beatle, 'John').text.
|
124
|
+
expect(@session.find(:beatle, 'Paul').text).to eq('Paul')
|
125
|
+
expect(@session.find(:beatle, 'John').text).to eq('John')
|
126
126
|
end
|
127
127
|
|
128
128
|
it "should not find elements that don't match the filter" do
|
@@ -140,12 +140,12 @@ Capybara::SpecHelper.spec '#find' do
|
|
140
140
|
end
|
141
141
|
|
142
142
|
it "should find elements that match the filter" do
|
143
|
-
@session.find(:beatle, 'Paul', :type => 'drummer').text.
|
144
|
-
@session.find(:beatle, 'Ringo', :type => 'drummer').text.
|
143
|
+
expect(@session.find(:beatle, 'Paul', :type => 'drummer').text).to eq('Paul')
|
144
|
+
expect(@session.find(:beatle, 'Ringo', :type => 'drummer').text).to eq('Ringo')
|
145
145
|
end
|
146
146
|
|
147
147
|
it "should use default value when filter is not given" do
|
148
|
-
@session.find(:beatle, 'Paul').text.
|
148
|
+
expect(@session.find(:beatle, 'Paul').text).to eq('Paul')
|
149
149
|
expect { @session.find(:beatle, 'John') }.to raise_error(Capybara::ElementNotFound)
|
150
150
|
end
|
151
151
|
|
@@ -158,8 +158,8 @@ Capybara::SpecHelper.spec '#find' do
|
|
158
158
|
context "with css as default selector" do
|
159
159
|
before { Capybara.default_selector = :css }
|
160
160
|
it "should find the first element using the given locator" do
|
161
|
-
@session.find('h1').text.
|
162
|
-
@session.find("input[id='test_field']")[:value].
|
161
|
+
expect(@session.find('h1').text).to eq('This is a test')
|
162
|
+
expect(@session.find("input[id='test_field']")[:value]).to eq('monkey')
|
163
163
|
end
|
164
164
|
after { Capybara.default_selector = :xpath }
|
165
165
|
end
|
@@ -173,20 +173,20 @@ Capybara::SpecHelper.spec '#find' do
|
|
173
173
|
it "should accept an XPath instance" do
|
174
174
|
@session.visit('/form')
|
175
175
|
@xpath = XPath::HTML.fillable_field('First Name')
|
176
|
-
@session.find(@xpath).value.
|
176
|
+
expect(@session.find(@xpath).value).to eq('John')
|
177
177
|
end
|
178
178
|
|
179
179
|
context "with :exact option" do
|
180
180
|
it "matches exactly when true" do
|
181
|
-
@session.find(:xpath, XPath.descendant(:input)[XPath.attr(:id).is("test_field")], :exact => true).value.
|
181
|
+
expect(@session.find(:xpath, XPath.descendant(:input)[XPath.attr(:id).is("test_field")], :exact => true).value).to eq("monkey")
|
182
182
|
expect do
|
183
183
|
@session.find(:xpath, XPath.descendant(:input)[XPath.attr(:id).is("est_fiel")], :exact => true)
|
184
184
|
end.to raise_error(Capybara::ElementNotFound)
|
185
185
|
end
|
186
186
|
|
187
187
|
it "matches loosely when false" do
|
188
|
-
@session.find(:xpath, XPath.descendant(:input)[XPath.attr(:id).is("test_field")], :exact => false).value.
|
189
|
-
@session.find(:xpath, XPath.descendant(:input)[XPath.attr(:id).is("est_fiel")], :exact => false).value.
|
188
|
+
expect(@session.find(:xpath, XPath.descendant(:input)[XPath.attr(:id).is("test_field")], :exact => false).value).to eq("monkey")
|
189
|
+
expect(@session.find(:xpath, XPath.descendant(:input)[XPath.attr(:id).is("est_fiel")], :exact => false).value).to eq("monkey")
|
190
190
|
end
|
191
191
|
|
192
192
|
it "defaults to `Capybara.exact`" do
|
@@ -212,7 +212,7 @@ Capybara::SpecHelper.spec '#find' do
|
|
212
212
|
end.to raise_error(Capybara::Ambiguous)
|
213
213
|
end
|
214
214
|
it "returns the element if there is only one" do
|
215
|
-
@session.find(:css, ".singular", :match => :one).text.
|
215
|
+
expect(@session.find(:css, ".singular", :match => :one).text).to eq("singular")
|
216
216
|
end
|
217
217
|
it "raises an error if there is no match" do
|
218
218
|
expect do
|
@@ -223,7 +223,7 @@ Capybara::SpecHelper.spec '#find' do
|
|
223
223
|
|
224
224
|
context "when set to `first`" do
|
225
225
|
it "returns the first matched element" do
|
226
|
-
@session.find(:css, ".multiple", :match => :first).text.
|
226
|
+
expect(@session.find(:css, ".multiple", :match => :first).text).to eq("multiple one")
|
227
227
|
end
|
228
228
|
it "raises an error if there is no match" do
|
229
229
|
expect do
|
@@ -241,7 +241,7 @@ Capybara::SpecHelper.spec '#find' do
|
|
241
241
|
end
|
242
242
|
it "finds a single exact match when there also are inexact matches" do
|
243
243
|
result = @session.find(:xpath, XPath.descendant[XPath.attr(:class).is("almost_singular")], :match => :smart, :exact => false)
|
244
|
-
result.text.
|
244
|
+
expect(result.text).to eq("almost singular")
|
245
245
|
end
|
246
246
|
it "raises an error when there are multiple inexact matches" do
|
247
247
|
expect do
|
@@ -250,7 +250,7 @@ Capybara::SpecHelper.spec '#find' do
|
|
250
250
|
end
|
251
251
|
it "finds a single inexact match" do
|
252
252
|
result = @session.find(:xpath, XPath.descendant[XPath.attr(:class).is("almost_singular but")], :match => :smart, :exact => false)
|
253
|
-
result.text.
|
253
|
+
expect(result.text).to eq("almost singular but not quite")
|
254
254
|
end
|
255
255
|
it "raises an error if there is no match" do
|
256
256
|
expect do
|
@@ -267,7 +267,7 @@ Capybara::SpecHelper.spec '#find' do
|
|
267
267
|
end
|
268
268
|
it "finds a single exact match when there also are inexact matches" do
|
269
269
|
result = @session.find(:xpath, XPath.descendant[XPath.attr(:class).is("almost_singular")], :match => :smart, :exact => true)
|
270
|
-
result.text.
|
270
|
+
expect(result.text).to eq("almost singular")
|
271
271
|
end
|
272
272
|
it "raises an error when there are multiple inexact matches" do
|
273
273
|
expect do
|
@@ -291,19 +291,19 @@ Capybara::SpecHelper.spec '#find' do
|
|
291
291
|
context "and `exact` set to `false`" do
|
292
292
|
it "picks the first one when there are multiple exact matches" do
|
293
293
|
result = @session.find(:xpath, XPath.descendant[XPath.attr(:class).is("multiple")], :match => :prefer_exact, :exact => false)
|
294
|
-
result.text.
|
294
|
+
expect(result.text).to eq("multiple one")
|
295
295
|
end
|
296
296
|
it "finds a single exact match when there also are inexact matches" do
|
297
297
|
result = @session.find(:xpath, XPath.descendant[XPath.attr(:class).is("almost_singular")], :match => :prefer_exact, :exact => false)
|
298
|
-
result.text.
|
298
|
+
expect(result.text).to eq("almost singular")
|
299
299
|
end
|
300
300
|
it "picks the first one when there are multiple inexact matches" do
|
301
301
|
result = @session.find(:xpath, XPath.descendant[XPath.attr(:class).is("almost_singul")], :match => :prefer_exact, :exact => false)
|
302
|
-
result.text.
|
302
|
+
expect(result.text).to eq("almost singular but not quite")
|
303
303
|
end
|
304
304
|
it "finds a single inexact match" do
|
305
305
|
result = @session.find(:xpath, XPath.descendant[XPath.attr(:class).is("almost_singular but")], :match => :prefer_exact, :exact => false)
|
306
|
-
result.text.
|
306
|
+
expect(result.text).to eq("almost singular but not quite")
|
307
307
|
end
|
308
308
|
it "raises an error if there is no match" do
|
309
309
|
expect do
|
@@ -315,11 +315,11 @@ Capybara::SpecHelper.spec '#find' do
|
|
315
315
|
context "with `exact` set to `true`" do
|
316
316
|
it "picks the first one when there are multiple exact matches" do
|
317
317
|
result = @session.find(:xpath, XPath.descendant[XPath.attr(:class).is("multiple")], :match => :prefer_exact, :exact => true)
|
318
|
-
result.text.
|
318
|
+
expect(result.text).to eq("multiple one")
|
319
319
|
end
|
320
320
|
it "finds a single exact match when there also are inexact matches" do
|
321
321
|
result = @session.find(:xpath, XPath.descendant[XPath.attr(:class).is("almost_singular")], :match => :prefer_exact, :exact => true)
|
322
|
-
result.text.
|
322
|
+
expect(result.text).to eq("almost singular")
|
323
323
|
end
|
324
324
|
it "raises an error if there are multiple inexact matches" do
|
325
325
|
expect do
|
@@ -345,7 +345,7 @@ Capybara::SpecHelper.spec '#find' do
|
|
345
345
|
@session.find(:css, ".multiple")
|
346
346
|
end.to raise_error(Capybara::Ambiguous)
|
347
347
|
Capybara.match = :first
|
348
|
-
@session.find(:css, ".multiple").text.
|
348
|
+
expect(@session.find(:css, ".multiple").text).to eq("multiple one")
|
349
349
|
end
|
350
350
|
|
351
351
|
it "raises an error when unknown option given" do
|
@@ -362,13 +362,13 @@ Capybara::SpecHelper.spec '#find' do
|
|
362
362
|
|
363
363
|
it "should find the an element using the given locator" do
|
364
364
|
@session.within(:xpath, "//div[@id='for_bar']") do
|
365
|
-
@session.find('.//li[1]').text.
|
365
|
+
expect(@session.find('.//li[1]').text).to match(/With Simple HTML/)
|
366
366
|
end
|
367
367
|
end
|
368
368
|
|
369
369
|
it "should support pseudo selectors" do
|
370
370
|
@session.within(:xpath, "//div[@id='for_bar']") do
|
371
|
-
@session.find(:css, 'input:disabled').value.
|
371
|
+
expect(@session.find(:css, 'input:disabled').value).to eq('James')
|
372
372
|
end
|
373
373
|
end
|
374
374
|
end
|
@@ -4,73 +4,73 @@ Capybara::SpecHelper.spec '#first' do
|
|
4
4
|
end
|
5
5
|
|
6
6
|
it "should find the first element using the given locator" do
|
7
|
-
@session.first('//h1').text.
|
8
|
-
@session.first("//input[@id='test_field']")[:value].
|
7
|
+
expect(@session.first('//h1').text).to eq('This is a test')
|
8
|
+
expect(@session.first("//input[@id='test_field']")[:value]).to eq('monkey')
|
9
9
|
end
|
10
10
|
|
11
11
|
it "should return nil when nothing was found" do
|
12
|
-
@session.first('//div[@id="nosuchthing"]').
|
12
|
+
expect(@session.first('//div[@id="nosuchthing"]')).to be_nil
|
13
13
|
end
|
14
14
|
|
15
15
|
it "should accept an XPath instance" do
|
16
16
|
@session.visit('/form')
|
17
17
|
@xpath = XPath::HTML.fillable_field('First Name')
|
18
|
-
@session.first(@xpath).value.
|
18
|
+
expect(@session.first(@xpath).value).to eq('John')
|
19
19
|
end
|
20
20
|
|
21
21
|
context "with css selectors" do
|
22
22
|
it "should find the first element using the given selector" do
|
23
|
-
@session.first(:css, 'h1').text.
|
24
|
-
@session.first(:css, "input[id='test_field']")[:value].
|
23
|
+
expect(@session.first(:css, 'h1').text).to eq('This is a test')
|
24
|
+
expect(@session.first(:css, "input[id='test_field']")[:value]).to eq('monkey')
|
25
25
|
end
|
26
26
|
end
|
27
27
|
|
28
28
|
context "with xpath selectors" do
|
29
29
|
it "should find the first element using the given locator" do
|
30
|
-
@session.first(:xpath, '//h1').text.
|
31
|
-
@session.first(:xpath, "//input[@id='test_field']")[:value].
|
30
|
+
expect(@session.first(:xpath, '//h1').text).to eq('This is a test')
|
31
|
+
expect(@session.first(:xpath, "//input[@id='test_field']")[:value]).to eq('monkey')
|
32
32
|
end
|
33
33
|
end
|
34
34
|
|
35
35
|
context "with css as default selector" do
|
36
36
|
before { Capybara.default_selector = :css }
|
37
37
|
it "should find the first element using the given locator" do
|
38
|
-
@session.first('h1').text.
|
39
|
-
@session.first("input[id='test_field']")[:value].
|
38
|
+
expect(@session.first('h1').text).to eq('This is a test')
|
39
|
+
expect(@session.first("input[id='test_field']")[:value]).to eq('monkey')
|
40
40
|
end
|
41
41
|
end
|
42
42
|
|
43
43
|
context "with visible filter" do
|
44
44
|
it "should only find visible nodes when true" do
|
45
|
-
@session.first(:css, "a#invisible", :visible => true).
|
45
|
+
expect(@session.first(:css, "a#invisible", :visible => true)).to be_nil
|
46
46
|
end
|
47
47
|
|
48
48
|
it "should find nodes regardless of whether they are invisible when false" do
|
49
|
-
@session.first(:css, "a#invisible", :visible => false).
|
50
|
-
@session.first(:css, "a#visible", :visible => false).
|
49
|
+
expect(@session.first(:css, "a#invisible", :visible => false)).not_to be_nil
|
50
|
+
expect(@session.first(:css, "a#visible", :visible => false)).not_to be_nil
|
51
51
|
end
|
52
52
|
|
53
53
|
it "should find nodes regardless of whether they are invisible when :all" do
|
54
|
-
@session.first(:css, "a#invisible", :visible => :all).
|
55
|
-
@session.first(:css, "a#visible", :visible => :all).
|
54
|
+
expect(@session.first(:css, "a#invisible", :visible => :all)).not_to be_nil
|
55
|
+
expect(@session.first(:css, "a#visible", :visible => :all)).not_to be_nil
|
56
56
|
end
|
57
57
|
|
58
58
|
it "should find only hidden nodes when :hidden" do
|
59
|
-
@session.first(:css, "a#invisible", :visible => :hidden).
|
60
|
-
@session.first(:css, "a#visible", :visible => :hidden).
|
59
|
+
expect(@session.first(:css, "a#invisible", :visible => :hidden)).not_to be_nil
|
60
|
+
expect(@session.first(:css, "a#visible", :visible => :hidden)).to be_nil
|
61
61
|
end
|
62
62
|
|
63
63
|
it "should find only visible nodes when :visible" do
|
64
|
-
@session.first(:css, "a#invisible", :visible => :visible).
|
65
|
-
@session.first(:css, "a#visible", :visible => :visible).
|
64
|
+
expect(@session.first(:css, "a#invisible", :visible => :visible)).to be_nil
|
65
|
+
expect(@session.first(:css, "a#visible", :visible => :visible)).not_to be_nil
|
66
66
|
end
|
67
67
|
|
68
68
|
it "should default to Capybara.ignore_hidden_elements" do
|
69
69
|
Capybara.ignore_hidden_elements = true
|
70
|
-
@session.first(:css, "a#invisible").
|
70
|
+
expect(@session.first(:css, "a#invisible")).to be_nil
|
71
71
|
Capybara.ignore_hidden_elements = false
|
72
|
-
@session.first(:css, "a#invisible").
|
73
|
-
@session.first(:css, "a").
|
72
|
+
expect(@session.first(:css, "a#invisible")).not_to be_nil
|
73
|
+
expect(@session.first(:css, "a")).not_to be_nil
|
74
74
|
end
|
75
75
|
end
|
76
76
|
|
@@ -81,7 +81,7 @@ Capybara::SpecHelper.spec '#first' do
|
|
81
81
|
|
82
82
|
it "should find the first element using the given locator" do
|
83
83
|
@session.within(:xpath, "//div[@id='for_bar']") do
|
84
|
-
@session.first('.//form').
|
84
|
+
expect(@session.first('.//form')).not_to be_nil
|
85
85
|
end
|
86
86
|
end
|
87
87
|
end
|