capybara 2.9.2 → 2.10.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.
- checksums.yaml +4 -4
- data/History.md +10 -1
- data/README.md +34 -27
- data/lib/capybara.rb +2 -2
- data/lib/capybara/node/actions.rb +3 -3
- data/lib/capybara/node/base.rb +2 -2
- data/lib/capybara/node/element.rb +1 -1
- data/lib/capybara/node/finders.rb +37 -32
- data/lib/capybara/node/matchers.rb +187 -171
- data/lib/capybara/queries/selector_query.rb +11 -14
- data/lib/capybara/rack_test/driver.rb +3 -3
- data/lib/capybara/rails.rb +1 -1
- data/lib/capybara/rspec/features.rb +1 -1
- data/lib/capybara/rspec/matchers.rb +31 -22
- data/lib/capybara/selector.rb +2 -2
- data/lib/capybara/selector/selector.rb +22 -0
- data/lib/capybara/session.rb +4 -4
- data/lib/capybara/spec/session/accept_alert_spec.rb +4 -4
- data/lib/capybara/spec/session/accept_confirm_spec.rb +1 -1
- data/lib/capybara/spec/session/accept_prompt_spec.rb +5 -5
- data/lib/capybara/spec/session/all_spec.rb +27 -27
- data/lib/capybara/spec/session/assert_current_path.rb +2 -2
- data/lib/capybara/spec/session/assert_selector.rb +28 -28
- data/lib/capybara/spec/session/assert_text.rb +20 -20
- data/lib/capybara/spec/session/assert_title.rb +2 -2
- data/lib/capybara/spec/session/attach_file_spec.rb +2 -2
- data/lib/capybara/spec/session/check_spec.rb +5 -5
- data/lib/capybara/spec/session/choose_spec.rb +4 -4
- data/lib/capybara/spec/session/click_button_spec.rb +18 -5
- data/lib/capybara/spec/session/click_link_or_button_spec.rb +6 -6
- data/lib/capybara/spec/session/click_link_spec.rb +13 -13
- data/lib/capybara/spec/session/current_url_spec.rb +2 -2
- data/lib/capybara/spec/session/dismiss_confirm_spec.rb +1 -1
- data/lib/capybara/spec/session/dismiss_prompt_spec.rb +1 -1
- data/lib/capybara/spec/session/element/matches_selector_spec.rb +15 -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 +30 -30
- data/lib/capybara/spec/session/find_button_spec.rb +5 -5
- data/lib/capybara/spec/session/find_by_id_spec.rb +2 -2
- data/lib/capybara/spec/session/find_field_spec.rb +11 -7
- data/lib/capybara/spec/session/find_link_spec.rb +2 -2
- data/lib/capybara/spec/session/find_spec.rb +52 -48
- data/lib/capybara/spec/session/first_spec.rb +9 -9
- data/lib/capybara/spec/session/go_back_spec.rb +1 -1
- data/lib/capybara/spec/session/go_forward_spec.rb +1 -1
- data/lib/capybara/spec/session/has_button_spec.rb +12 -12
- data/lib/capybara/spec/session/has_css_spec.rb +73 -73
- data/lib/capybara/spec/session/has_current_path_spec.rb +2 -2
- data/lib/capybara/spec/session/has_field_spec.rb +78 -68
- data/lib/capybara/spec/session/has_link_spec.rb +8 -8
- data/lib/capybara/spec/session/has_select_spec.rb +70 -61
- data/lib/capybara/spec/session/has_selector_spec.rb +28 -28
- data/lib/capybara/spec/session/has_text_spec.rb +6 -6
- data/lib/capybara/spec/session/has_title_spec.rb +2 -2
- data/lib/capybara/spec/session/has_xpath_spec.rb +26 -26
- data/lib/capybara/spec/session/headers.rb +1 -1
- data/lib/capybara/spec/session/html_spec.rb +3 -3
- data/lib/capybara/spec/session/node_spec.rb +15 -15
- data/lib/capybara/spec/session/reset_session_spec.rb +4 -4
- data/lib/capybara/spec/session/response_code.rb +1 -1
- data/lib/capybara/spec/session/save_and_open_screenshot_spec.rb +3 -3
- data/lib/capybara/spec/session/screenshot_spec.rb +1 -1
- data/lib/capybara/spec/session/select_spec.rb +30 -30
- data/lib/capybara/spec/session/uncheck_spec.rb +2 -2
- data/lib/capybara/spec/session/unselect_spec.rb +14 -14
- data/lib/capybara/spec/session/visit_spec.rb +2 -2
- data/lib/capybara/spec/session/within_frame_spec.rb +2 -2
- data/lib/capybara/spec/session/within_spec.rb +6 -6
- data/lib/capybara/spec/spec_helper.rb +1 -1
- data/lib/capybara/spec/test_app.rb +1 -1
- data/lib/capybara/spec/views/form.erb +1 -0
- data/lib/capybara/version.rb +1 -1
- data/spec/basic_node_spec.rb +5 -5
- data/spec/capybara_spec.rb +1 -1
- data/spec/dsl_spec.rb +1 -1
- data/spec/rack_test_spec.rb +7 -7
- data/spec/rspec/matchers_spec.rb +6 -6
- data/spec/rspec_spec.rb +1 -1
- data/spec/selector_spec.rb +13 -0
- data/spec/selenium_firefox_spec.rb +1 -1
- data/spec/selenium_spec_chrome.rb +1 -1
- data/spec/shared_selenium_session.rb +10 -10
- metadata +2 -2
@@ -7,15 +7,15 @@ Capybara::SpecHelper.spec '#has_link?' do
|
|
7
7
|
it "should be true if the given link is on the page" do
|
8
8
|
expect(@session).to have_link('foo')
|
9
9
|
expect(@session).to have_link('awesome title')
|
10
|
-
expect(@session).to have_link('A link', :
|
11
|
-
expect(@session).to have_link(:'A link', :
|
12
|
-
expect(@session).to have_link('A link', :
|
10
|
+
expect(@session).to have_link('A link', href: '/with_simple_html')
|
11
|
+
expect(@session).to have_link(:'A link', href: :'/with_simple_html')
|
12
|
+
expect(@session).to have_link('A link', href: /\/with_simple_html/)
|
13
13
|
end
|
14
14
|
|
15
15
|
it "should be false if the given link is not on the page" do
|
16
16
|
expect(@session).not_to have_link('monkey')
|
17
|
-
expect(@session).not_to have_link('A link', :
|
18
|
-
expect(@session).not_to have_link('A link', :
|
17
|
+
expect(@session).not_to have_link('A link', href: '/non-existant-href')
|
18
|
+
expect(@session).not_to have_link('A link', href: /non-existant/)
|
19
19
|
end
|
20
20
|
end
|
21
21
|
|
@@ -27,12 +27,12 @@ Capybara::SpecHelper.spec '#has_no_link?' do
|
|
27
27
|
it "should be false if the given link is on the page" do
|
28
28
|
expect(@session).not_to have_no_link('foo')
|
29
29
|
expect(@session).not_to have_no_link('awesome title')
|
30
|
-
expect(@session).not_to have_no_link('A link', :
|
30
|
+
expect(@session).not_to have_no_link('A link', href: '/with_simple_html')
|
31
31
|
end
|
32
32
|
|
33
33
|
it "should be true if the given link is not on the page" do
|
34
34
|
expect(@session).to have_no_link('monkey')
|
35
|
-
expect(@session).to have_no_link('A link', :
|
36
|
-
expect(@session).to have_no_link('A link', :
|
35
|
+
expect(@session).to have_no_link('A link', href: '/non-existant-href')
|
36
|
+
expect(@session).to have_no_link('A link', href: /\/non-existant-href/)
|
37
37
|
end
|
38
38
|
end
|
@@ -15,92 +15,92 @@ Capybara::SpecHelper.spec '#has_select?' do
|
|
15
15
|
|
16
16
|
context 'with selected value' do
|
17
17
|
it "should be true if a field with the given value is on the page" do
|
18
|
-
expect(@session).to have_select('form_locale', :
|
19
|
-
expect(@session).to have_select('Region', :
|
20
|
-
expect(@session).to have_select('Underwear', :
|
18
|
+
expect(@session).to have_select('form_locale', selected: 'English')
|
19
|
+
expect(@session).to have_select('Region', selected: 'Norway')
|
20
|
+
expect(@session).to have_select('Underwear', selected: [
|
21
21
|
'Boxerbriefs', 'Briefs', 'Commando', "Frenchman's Pantalons", 'Long Johns'
|
22
22
|
])
|
23
23
|
end
|
24
24
|
|
25
25
|
it "should be false if the given field is not on the page" do
|
26
|
-
expect(@session).not_to have_select('Locale', :
|
27
|
-
expect(@session).not_to have_select('Does not exist', :
|
28
|
-
expect(@session).not_to have_select('City', :
|
29
|
-
expect(@session).not_to have_select('Underwear', :
|
26
|
+
expect(@session).not_to have_select('Locale', selected: 'Swedish')
|
27
|
+
expect(@session).not_to have_select('Does not exist', selected: 'John')
|
28
|
+
expect(@session).not_to have_select('City', selected: 'Not there')
|
29
|
+
expect(@session).not_to have_select('Underwear', selected: [
|
30
30
|
'Boxerbriefs', 'Briefs', 'Commando', "Frenchman's Pantalons", 'Long Johns', 'Nonexistant'
|
31
31
|
])
|
32
|
-
expect(@session).not_to have_select('Underwear', :
|
32
|
+
expect(@session).not_to have_select('Underwear', selected: [
|
33
33
|
'Boxerbriefs', 'Briefs', 'Boxers', 'Commando', "Frenchman's Pantalons", 'Long Johns'
|
34
34
|
])
|
35
|
-
expect(@session).not_to have_select('Underwear', :
|
35
|
+
expect(@session).not_to have_select('Underwear', selected: [
|
36
36
|
'Boxerbriefs', 'Briefs','Commando', "Frenchman's Pantalons"
|
37
37
|
])
|
38
38
|
end
|
39
39
|
|
40
40
|
it "should be true after the given value is selected" do
|
41
|
-
@session.select('Swedish', :
|
42
|
-
expect(@session).to have_select('Locale', :
|
41
|
+
@session.select('Swedish', from: 'Locale')
|
42
|
+
expect(@session).to have_select('Locale', selected: 'Swedish')
|
43
43
|
end
|
44
44
|
|
45
45
|
it "should be false after a different value is selected" do
|
46
|
-
@session.select('Swedish', :
|
47
|
-
expect(@session).not_to have_select('Locale', :
|
46
|
+
@session.select('Swedish', from: 'Locale')
|
47
|
+
expect(@session).not_to have_select('Locale', selected: 'English')
|
48
48
|
end
|
49
49
|
|
50
50
|
it "should be true after the given values are selected" do
|
51
|
-
@session.select('Boxers', :
|
52
|
-
expect(@session).to have_select('Underwear', :
|
51
|
+
@session.select('Boxers', from: 'Underwear')
|
52
|
+
expect(@session).to have_select('Underwear', selected: [
|
53
53
|
'Boxerbriefs', 'Briefs', 'Boxers', 'Commando', "Frenchman's Pantalons", 'Long Johns'
|
54
54
|
])
|
55
55
|
end
|
56
56
|
|
57
57
|
it "should be false after one of the values is unselected" do
|
58
|
-
@session.unselect('Briefs', :
|
59
|
-
expect(@session).not_to have_select('Underwear', :
|
58
|
+
@session.unselect('Briefs', from: 'Underwear')
|
59
|
+
expect(@session).not_to have_select('Underwear', selected: [
|
60
60
|
'Boxerbriefs', 'Briefs', 'Commando', "Frenchman's Pantalons", 'Long Johns'
|
61
61
|
])
|
62
62
|
end
|
63
63
|
|
64
64
|
it "should be true even when the selected option invisible, regardless of the select's visibility" do
|
65
|
-
expect(@session).to have_select('Icecream', :
|
66
|
-
expect(@session).to have_select('Sorbet', :
|
65
|
+
expect(@session).to have_select('Icecream', visible: false, selected: 'Chocolate')
|
66
|
+
expect(@session).to have_select('Sorbet', selected: 'Vanilla')
|
67
67
|
end
|
68
68
|
end
|
69
69
|
|
70
70
|
context 'with exact options' do
|
71
71
|
it "should be true if a field with the given options is on the page" do
|
72
|
-
expect(@session).to have_select('Region', :
|
73
|
-
expect(@session).to have_select('Tendency', :
|
72
|
+
expect(@session).to have_select('Region', options: ['Norway', 'Sweden', 'Finland'])
|
73
|
+
expect(@session).to have_select('Tendency', options: [])
|
74
74
|
end
|
75
75
|
|
76
76
|
it "should be false if the given field is not on the page" do
|
77
|
-
expect(@session).not_to have_select('Locale', :
|
78
|
-
expect(@session).not_to have_select('Does not exist', :
|
79
|
-
expect(@session).not_to have_select('City', :
|
80
|
-
expect(@session).not_to have_select('Region', :
|
81
|
-
expect(@session).not_to have_select('Region', :
|
77
|
+
expect(@session).not_to have_select('Locale', options: ['Swedish'])
|
78
|
+
expect(@session).not_to have_select('Does not exist', options: ['John'])
|
79
|
+
expect(@session).not_to have_select('City', options: ['London', 'Made up city'])
|
80
|
+
expect(@session).not_to have_select('Region', options: ['Norway', 'Sweden'])
|
81
|
+
expect(@session).not_to have_select('Region', options: ['Norway', 'Norway', 'Norway'])
|
82
82
|
end
|
83
83
|
|
84
84
|
it" should be true even when the options are invisible, if the select itself is invisible" do
|
85
|
-
expect(@session).to have_select("Icecream", :
|
85
|
+
expect(@session).to have_select("Icecream", visible: false, options: ['Chocolate', 'Vanilla', 'Strawberry'])
|
86
86
|
end
|
87
87
|
|
88
88
|
end
|
89
89
|
|
90
90
|
context 'with partial options' do
|
91
91
|
it "should be true if a field with the given partial options is on the page" do
|
92
|
-
expect(@session).to have_select('Region', :
|
93
|
-
expect(@session).to have_select('City', :
|
92
|
+
expect(@session).to have_select('Region', with_options: ['Norway', 'Sweden'])
|
93
|
+
expect(@session).to have_select('City', with_options: ['London'])
|
94
94
|
end
|
95
95
|
|
96
96
|
it "should be false if a field with the given partial options is not on the page" do
|
97
|
-
expect(@session).not_to have_select('Locale', :
|
98
|
-
expect(@session).not_to have_select('Does not exist', :
|
99
|
-
expect(@session).not_to have_select('Region', :
|
97
|
+
expect(@session).not_to have_select('Locale', with_options: ['Uruguayan'])
|
98
|
+
expect(@session).not_to have_select('Does not exist', with_options: ['John'])
|
99
|
+
expect(@session).not_to have_select('Region', with_options: ['Norway', 'Sweden', 'Finland', 'Latvia'])
|
100
100
|
end
|
101
101
|
|
102
102
|
it" should be true even when the options are invisible, if the select itself is invisible" do
|
103
|
-
expect(@session).to have_select("Icecream", :
|
103
|
+
expect(@session).to have_select("Icecream", visible: false, with_options: ['Vanilla', 'Strawberry'])
|
104
104
|
end
|
105
105
|
end
|
106
106
|
|
@@ -121,6 +121,10 @@ Capybara::SpecHelper.spec '#has_select?' do
|
|
121
121
|
end
|
122
122
|
end
|
123
123
|
|
124
|
+
it "should support locator-less usage" do
|
125
|
+
expect(@session.has_select?(with_options: ['Norway', 'Sweden'])).to eq true
|
126
|
+
expect(@session).to have_select(with_options: ['London'] )
|
127
|
+
end
|
124
128
|
end
|
125
129
|
|
126
130
|
Capybara::SpecHelper.spec '#has_no_select?' do
|
@@ -138,48 +142,48 @@ Capybara::SpecHelper.spec '#has_no_select?' do
|
|
138
142
|
|
139
143
|
context 'with selected value' do
|
140
144
|
it "should be false if a field with the given value is on the page" do
|
141
|
-
expect(@session).not_to have_no_select('form_locale', :
|
142
|
-
expect(@session).not_to have_no_select('Region', :
|
143
|
-
expect(@session).not_to have_no_select('Underwear', :
|
145
|
+
expect(@session).not_to have_no_select('form_locale', selected: 'English')
|
146
|
+
expect(@session).not_to have_no_select('Region', selected: 'Norway')
|
147
|
+
expect(@session).not_to have_no_select('Underwear', selected: [
|
144
148
|
'Boxerbriefs', 'Briefs', 'Commando', "Frenchman's Pantalons", 'Long Johns'
|
145
149
|
])
|
146
150
|
end
|
147
151
|
|
148
152
|
it "should be true if the given field is not on the page" do
|
149
|
-
expect(@session).to have_no_select('Locale', :
|
150
|
-
expect(@session).to have_no_select('Does not exist', :
|
151
|
-
expect(@session).to have_no_select('City', :
|
152
|
-
expect(@session).to have_no_select('Underwear', :
|
153
|
+
expect(@session).to have_no_select('Locale', selected: 'Swedish')
|
154
|
+
expect(@session).to have_no_select('Does not exist', selected: 'John')
|
155
|
+
expect(@session).to have_no_select('City', selected: 'Not there')
|
156
|
+
expect(@session).to have_no_select('Underwear', selected: [
|
153
157
|
'Boxerbriefs', 'Briefs', 'Commando', "Frenchman's Pantalons", 'Long Johns', 'Nonexistant'
|
154
158
|
])
|
155
|
-
expect(@session).to have_no_select('Underwear', :
|
159
|
+
expect(@session).to have_no_select('Underwear', selected: [
|
156
160
|
'Boxerbriefs', 'Briefs', 'Boxers', 'Commando', "Frenchman's Pantalons", 'Long Johns'
|
157
161
|
])
|
158
|
-
expect(@session).to have_no_select('Underwear', :
|
162
|
+
expect(@session).to have_no_select('Underwear', selected: [
|
159
163
|
'Boxerbriefs', 'Briefs','Commando', "Frenchman's Pantalons"
|
160
164
|
])
|
161
165
|
end
|
162
166
|
|
163
167
|
it "should be false after the given value is selected" do
|
164
|
-
@session.select('Swedish', :
|
165
|
-
expect(@session).not_to have_no_select('Locale', :
|
168
|
+
@session.select('Swedish', from: 'Locale')
|
169
|
+
expect(@session).not_to have_no_select('Locale', selected: 'Swedish')
|
166
170
|
end
|
167
171
|
|
168
172
|
it "should be true after a different value is selected" do
|
169
|
-
@session.select('Swedish', :
|
170
|
-
expect(@session).to have_no_select('Locale', :
|
173
|
+
@session.select('Swedish', from: 'Locale')
|
174
|
+
expect(@session).to have_no_select('Locale', selected: 'English')
|
171
175
|
end
|
172
176
|
|
173
177
|
it "should be false after the given values are selected" do
|
174
|
-
@session.select('Boxers', :
|
175
|
-
expect(@session).not_to have_no_select('Underwear', :
|
178
|
+
@session.select('Boxers', from: 'Underwear')
|
179
|
+
expect(@session).not_to have_no_select('Underwear', selected: [
|
176
180
|
'Boxerbriefs', 'Briefs', 'Boxers', 'Commando', "Frenchman's Pantalons", 'Long Johns'
|
177
181
|
])
|
178
182
|
end
|
179
183
|
|
180
184
|
it "should be true after one of the values is unselected" do
|
181
|
-
@session.unselect('Briefs', :
|
182
|
-
expect(@session).to have_no_select('Underwear', :
|
185
|
+
@session.unselect('Briefs', from: 'Underwear')
|
186
|
+
expect(@session).to have_no_select('Underwear', selected: [
|
183
187
|
'Boxerbriefs', 'Briefs', 'Commando', "Frenchman's Pantalons", 'Long Johns'
|
184
188
|
])
|
185
189
|
end
|
@@ -187,28 +191,33 @@ Capybara::SpecHelper.spec '#has_no_select?' do
|
|
187
191
|
|
188
192
|
context 'with exact options' do
|
189
193
|
it "should be false if a field with the given options is on the page" do
|
190
|
-
expect(@session).not_to have_no_select('Region', :
|
194
|
+
expect(@session).not_to have_no_select('Region', options: ['Norway', 'Sweden', 'Finland'])
|
191
195
|
end
|
192
196
|
|
193
197
|
it "should be true if the given field is not on the page" do
|
194
|
-
expect(@session).to have_no_select('Locale', :
|
195
|
-
expect(@session).to have_no_select('Does not exist', :
|
196
|
-
expect(@session).to have_no_select('City', :
|
197
|
-
expect(@session).to have_no_select('Region', :
|
198
|
-
expect(@session).to have_no_select('Region', :
|
198
|
+
expect(@session).to have_no_select('Locale', options: ['Swedish'])
|
199
|
+
expect(@session).to have_no_select('Does not exist', options: ['John'])
|
200
|
+
expect(@session).to have_no_select('City', options: ['London', 'Made up city'])
|
201
|
+
expect(@session).to have_no_select('Region', options: ['Norway', 'Sweden'])
|
202
|
+
expect(@session).to have_no_select('Region', options: ['Norway', 'Norway', 'Norway'])
|
199
203
|
end
|
200
204
|
end
|
201
205
|
|
202
206
|
context 'with partial options' do
|
203
207
|
it "should be false if a field with the given partial options is on the page" do
|
204
|
-
expect(@session).not_to have_no_select('Region', :
|
205
|
-
expect(@session).not_to have_no_select('City', :
|
208
|
+
expect(@session).not_to have_no_select('Region', with_options: ['Norway', 'Sweden'])
|
209
|
+
expect(@session).not_to have_no_select('City', with_options: ['London'])
|
206
210
|
end
|
207
211
|
|
208
212
|
it "should be true if a field with the given partial options is not on the page" do
|
209
|
-
expect(@session).to have_no_select('Locale', :
|
210
|
-
expect(@session).to have_no_select('Does not exist', :
|
211
|
-
expect(@session).to have_no_select('Region', :
|
213
|
+
expect(@session).to have_no_select('Locale', with_options: ['Uruguayan'])
|
214
|
+
expect(@session).to have_no_select('Does not exist', with_options: ['John'])
|
215
|
+
expect(@session).to have_no_select('Region', with_options: ['Norway', 'Sweden', 'Finland', 'Latvia'])
|
212
216
|
end
|
213
217
|
end
|
218
|
+
|
219
|
+
it "should support locator-less usage" do
|
220
|
+
expect(@session.has_no_select?(with_options: ['Norway', 'Sweden', 'Finland', 'Latvia'])).to eq true
|
221
|
+
expect(@session).to have_no_select(with_options: ['New London'] )
|
222
|
+
end
|
214
223
|
end
|
@@ -31,41 +31,41 @@ Capybara::SpecHelper.spec '#has_selector?' do
|
|
31
31
|
|
32
32
|
context "with count" do
|
33
33
|
it "should be true if the content is on the page the given number of times" do
|
34
|
-
expect(@session).to have_selector("//p", :
|
35
|
-
expect(@session).to have_selector("//p//a[@id='foo']", :
|
36
|
-
expect(@session).to have_selector("//p[contains(.,'est')]", :
|
34
|
+
expect(@session).to have_selector("//p", count: 3)
|
35
|
+
expect(@session).to have_selector("//p//a[@id='foo']", count: 1)
|
36
|
+
expect(@session).to have_selector("//p[contains(.,'est')]", count: 1)
|
37
37
|
end
|
38
38
|
|
39
39
|
it "should be false if the content is on the page the given number of times" do
|
40
|
-
expect(@session).not_to have_selector("//p", :
|
41
|
-
expect(@session).not_to have_selector("//p//a[@id='foo']", :
|
42
|
-
expect(@session).not_to have_selector("//p[contains(.,'est')]", :
|
40
|
+
expect(@session).not_to have_selector("//p", count: 6)
|
41
|
+
expect(@session).not_to have_selector("//p//a[@id='foo']", count: 2)
|
42
|
+
expect(@session).not_to have_selector("//p[contains(.,'est')]", count: 5)
|
43
43
|
end
|
44
44
|
|
45
45
|
it "should be false if the content isn't on the page at all" do
|
46
|
-
expect(@session).not_to have_selector("//abbr", :
|
47
|
-
expect(@session).not_to have_selector("//p//a[@id='doesnotexist']", :
|
46
|
+
expect(@session).not_to have_selector("//abbr", count: 2)
|
47
|
+
expect(@session).not_to have_selector("//p//a[@id='doesnotexist']", count: 1)
|
48
48
|
end
|
49
49
|
end
|
50
50
|
|
51
51
|
context "with text" do
|
52
52
|
it "should discard all matches where the given string is not contained" do
|
53
|
-
expect(@session).to have_selector("//p//a", :
|
54
|
-
expect(@session).not_to have_selector("//p", :
|
53
|
+
expect(@session).to have_selector("//p//a", text: "Redirect", count: 1)
|
54
|
+
expect(@session).not_to have_selector("//p", text: "Doesnotexist")
|
55
55
|
end
|
56
56
|
|
57
57
|
it "should respect visibility setting" do
|
58
|
-
expect(@session).to have_selector(:id, "hidden-text", :
|
59
|
-
expect(@session).not_to have_selector(:id, "hidden-text", :
|
58
|
+
expect(@session).to have_selector(:id, "hidden-text", text: "Some of this text is hidden!", visible: false)
|
59
|
+
expect(@session).not_to have_selector(:id, "hidden-text", text: "Some of this text is hidden!", visible: true)
|
60
60
|
Capybara.ignore_hidden_elements = false
|
61
|
-
expect(@session).to have_selector(:id, "hidden-text", :
|
61
|
+
expect(@session).to have_selector(:id, "hidden-text", text: "Some of this text is hidden!", visible: false)
|
62
62
|
Capybara.visible_text_only = true
|
63
|
-
expect(@session).not_to have_selector(:id, "hidden-text", :
|
63
|
+
expect(@session).not_to have_selector(:id, "hidden-text", text: "Some of this text is hidden!", visible: true)
|
64
64
|
end
|
65
65
|
|
66
66
|
it "should discard all matches where the given regexp is not matched" do
|
67
|
-
expect(@session).to have_selector("//p//a", :
|
68
|
-
expect(@session).not_to have_selector("//p//a", :
|
67
|
+
expect(@session).to have_selector("//p//a", text: /re[dab]i/i, count: 1)
|
68
|
+
expect(@session).not_to have_selector("//p//a", text: /Red$/)
|
69
69
|
end
|
70
70
|
|
71
71
|
it "should warn when extra parameters passed" do
|
@@ -107,32 +107,32 @@ Capybara::SpecHelper.spec '#has_no_selector?' do
|
|
107
107
|
|
108
108
|
context "with count" do
|
109
109
|
it "should be false if the content is on the page the given number of times" do
|
110
|
-
expect(@session).not_to have_no_selector("//p", :
|
111
|
-
expect(@session).not_to have_no_selector("//p//a[@id='foo']", :
|
112
|
-
expect(@session).not_to have_no_selector("//p[contains(.,'est')]", :
|
110
|
+
expect(@session).not_to have_no_selector("//p", count: 3)
|
111
|
+
expect(@session).not_to have_no_selector("//p//a[@id='foo']", count: 1)
|
112
|
+
expect(@session).not_to have_no_selector("//p[contains(.,'est')]", count: 1)
|
113
113
|
end
|
114
114
|
|
115
115
|
it "should be true if the content is on the page the wrong number of times" do
|
116
|
-
expect(@session).to have_no_selector("//p", :
|
117
|
-
expect(@session).to have_no_selector("//p//a[@id='foo']", :
|
118
|
-
expect(@session).to have_no_selector("//p[contains(.,'est')]", :
|
116
|
+
expect(@session).to have_no_selector("//p", count: 6)
|
117
|
+
expect(@session).to have_no_selector("//p//a[@id='foo']", count: 2)
|
118
|
+
expect(@session).to have_no_selector("//p[contains(.,'est')]", count: 5)
|
119
119
|
end
|
120
120
|
|
121
121
|
it "should be true if the content isn't on the page at all" do
|
122
|
-
expect(@session).to have_no_selector("//abbr", :
|
123
|
-
expect(@session).to have_no_selector("//p//a[@id='doesnotexist']", :
|
122
|
+
expect(@session).to have_no_selector("//abbr", count: 2)
|
123
|
+
expect(@session).to have_no_selector("//p//a[@id='doesnotexist']", count: 1)
|
124
124
|
end
|
125
125
|
end
|
126
126
|
|
127
127
|
context "with text" do
|
128
128
|
it "should discard all matches where the given string is contained" do
|
129
|
-
expect(@session).not_to have_no_selector("//p//a", :
|
130
|
-
expect(@session).to have_no_selector("//p", :
|
129
|
+
expect(@session).not_to have_no_selector("//p//a", text: "Redirect", count: 1)
|
130
|
+
expect(@session).to have_no_selector("//p", text: "Doesnotexist")
|
131
131
|
end
|
132
132
|
|
133
133
|
it "should discard all matches where the given regexp is matched" do
|
134
|
-
expect(@session).not_to have_no_selector("//p//a", :
|
135
|
-
expect(@session).to have_no_selector("//p//a", :
|
134
|
+
expect(@session).not_to have_no_selector("//p//a", text: /re[dab]i/i, count: 1)
|
135
|
+
expect(@session).to have_no_selector("//p//a", text: /Red$/)
|
136
136
|
end
|
137
137
|
end
|
138
138
|
end
|
@@ -112,7 +112,7 @@ Capybara::SpecHelper.spec '#has_text?' do
|
|
112
112
|
expect(@session).to have_text(nil)
|
113
113
|
end
|
114
114
|
|
115
|
-
it "should wait for text to appear", :
|
115
|
+
it "should wait for text to appear", requires: [:js] do
|
116
116
|
@session.visit('/with_js')
|
117
117
|
@session.click_link('Click me')
|
118
118
|
expect(@session).to have_text("Has been clicked")
|
@@ -192,12 +192,12 @@ Capybara::SpecHelper.spec '#has_text?' do
|
|
192
192
|
end
|
193
193
|
end
|
194
194
|
|
195
|
-
context "with wait", :
|
195
|
+
context "with wait", requires: [:js] do
|
196
196
|
it "should find element if it appears before given wait duration" do
|
197
197
|
Capybara.using_wait_time(0.1) do
|
198
198
|
@session.visit('/with_js')
|
199
199
|
@session.click_link('Click me')
|
200
|
-
expect(@session).to have_text('Has been clicked', :
|
200
|
+
expect(@session).to have_text('Has been clicked', wait: 0.9)
|
201
201
|
end
|
202
202
|
end
|
203
203
|
end
|
@@ -301,17 +301,17 @@ Capybara::SpecHelper.spec '#has_no_text?' do
|
|
301
301
|
expect(@session).to have_no_text('.orem')
|
302
302
|
end
|
303
303
|
|
304
|
-
it "should wait for text to disappear", :
|
304
|
+
it "should wait for text to disappear", requires: [:js] do
|
305
305
|
@session.visit('/with_js')
|
306
306
|
@session.click_link('Click me')
|
307
307
|
expect(@session).to have_no_text("I changed it")
|
308
308
|
end
|
309
309
|
|
310
|
-
context "with wait", :
|
310
|
+
context "with wait", requires: [:js] do
|
311
311
|
it "should not find element if it appears after given wait duration" do
|
312
312
|
@session.visit('/with_js')
|
313
313
|
@session.click_link('Click me')
|
314
|
-
expect(@session).to have_no_text('Has been clicked', :
|
314
|
+
expect(@session).to have_no_text('Has been clicked', wait: 0.1)
|
315
315
|
end
|
316
316
|
end
|
317
317
|
end
|
@@ -13,7 +13,7 @@ Capybara::SpecHelper.spec '#has_title?' do
|
|
13
13
|
expect(@session).not_to have_title(/monkey/)
|
14
14
|
end
|
15
15
|
|
16
|
-
it "should wait for title", :
|
16
|
+
it "should wait for title", requires: [:js] do
|
17
17
|
@session.click_link("Change title")
|
18
18
|
expect(@session).to have_title("changed title")
|
19
19
|
end
|
@@ -37,7 +37,7 @@ Capybara::SpecHelper.spec '#has_no_title?' do
|
|
37
37
|
expect(@session).to have_no_title(/monkey/)
|
38
38
|
end
|
39
39
|
|
40
|
-
it "should wait for title to disappear", :
|
40
|
+
it "should wait for title to disappear", requires: [:js] do
|
41
41
|
@session.click_link("Change title")
|
42
42
|
expect(@session).to have_no_title('with_js')
|
43
43
|
end
|
@@ -28,7 +28,7 @@ Capybara::SpecHelper.spec '#has_xpath?' do
|
|
28
28
|
end
|
29
29
|
end
|
30
30
|
|
31
|
-
it "should wait for content to appear", :
|
31
|
+
it "should wait for content to appear", requires: [:js] do
|
32
32
|
@session.visit('/with_js')
|
33
33
|
@session.click_link('Click me')
|
34
34
|
expect(@session).to have_xpath("//input[@type='submit' and @value='New Here']")
|
@@ -36,29 +36,29 @@ Capybara::SpecHelper.spec '#has_xpath?' do
|
|
36
36
|
|
37
37
|
context "with count" do
|
38
38
|
it "should be true if the content occurs the given number of times" do
|
39
|
-
expect(@session).to have_xpath("//p", :
|
40
|
-
expect(@session).to have_xpath("//p//a[@id='foo']", :
|
41
|
-
expect(@session).to have_xpath("//p[contains(.,'est')]", :
|
42
|
-
expect(@session).to have_xpath("//p//a[@id='doesnotexist']", :
|
39
|
+
expect(@session).to have_xpath("//p", count: 3)
|
40
|
+
expect(@session).to have_xpath("//p//a[@id='foo']", count: 1)
|
41
|
+
expect(@session).to have_xpath("//p[contains(.,'est')]", count: 1)
|
42
|
+
expect(@session).to have_xpath("//p//a[@id='doesnotexist']", count: 0)
|
43
43
|
end
|
44
44
|
|
45
45
|
it "should be false if the content occurs a different number of times than the given" do
|
46
|
-
expect(@session).not_to have_xpath("//p", :
|
47
|
-
expect(@session).not_to have_xpath("//p//a[@id='foo']", :
|
48
|
-
expect(@session).not_to have_xpath("//p[contains(.,'est')]", :
|
49
|
-
expect(@session).not_to have_xpath("//p//a[@id='doesnotexist']", :
|
46
|
+
expect(@session).not_to have_xpath("//p", count: 6)
|
47
|
+
expect(@session).not_to have_xpath("//p//a[@id='foo']", count: 2)
|
48
|
+
expect(@session).not_to have_xpath("//p[contains(.,'est')]", count: 5)
|
49
|
+
expect(@session).not_to have_xpath("//p//a[@id='doesnotexist']", count: 1)
|
50
50
|
end
|
51
51
|
end
|
52
52
|
|
53
53
|
context "with text" do
|
54
54
|
it "should discard all matches where the given string is not contained" do
|
55
|
-
expect(@session).to have_xpath("//p//a", :
|
56
|
-
expect(@session).not_to have_xpath("//p", :
|
55
|
+
expect(@session).to have_xpath("//p//a", text: "Redirect", count: 1)
|
56
|
+
expect(@session).not_to have_xpath("//p", text: "Doesnotexist")
|
57
57
|
end
|
58
58
|
|
59
59
|
it "should discard all matches where the given regexp is not matched" do
|
60
|
-
expect(@session).to have_xpath("//p//a", :
|
61
|
-
expect(@session).not_to have_xpath("//p//a", :
|
60
|
+
expect(@session).to have_xpath("//p//a", text: /re[dab]i/i, count: 1)
|
61
|
+
expect(@session).not_to have_xpath("//p//a", text: /Red$/)
|
62
62
|
end
|
63
63
|
end
|
64
64
|
end
|
@@ -92,7 +92,7 @@ Capybara::SpecHelper.spec '#has_no_xpath?' do
|
|
92
92
|
end
|
93
93
|
end
|
94
94
|
|
95
|
-
it "should wait for content to disappear", :
|
95
|
+
it "should wait for content to disappear", requires: [:js] do
|
96
96
|
@session.visit('/with_js')
|
97
97
|
@session.click_link('Click me')
|
98
98
|
expect(@session).to have_no_xpath("//p[@id='change']")
|
@@ -100,29 +100,29 @@ Capybara::SpecHelper.spec '#has_no_xpath?' do
|
|
100
100
|
|
101
101
|
context "with count" do
|
102
102
|
it "should be false if the content occurs the given number of times" do
|
103
|
-
expect(@session).not_to have_no_xpath("//p", :
|
104
|
-
expect(@session).not_to have_no_xpath("//p//a[@id='foo']", :
|
105
|
-
expect(@session).not_to have_no_xpath("//p[contains(.,'est')]", :
|
106
|
-
expect(@session).not_to have_no_xpath("//p//a[@id='doesnotexist']", :
|
103
|
+
expect(@session).not_to have_no_xpath("//p", count: 3)
|
104
|
+
expect(@session).not_to have_no_xpath("//p//a[@id='foo']", count: 1)
|
105
|
+
expect(@session).not_to have_no_xpath("//p[contains(.,'est')]", count: 1)
|
106
|
+
expect(@session).not_to have_no_xpath("//p//a[@id='doesnotexist']", count: 0)
|
107
107
|
end
|
108
108
|
|
109
109
|
it "should be true if the content occurs a different number of times than the given" do
|
110
|
-
expect(@session).to have_no_xpath("//p", :
|
111
|
-
expect(@session).to have_no_xpath("//p//a[@id='foo']", :
|
112
|
-
expect(@session).to have_no_xpath("//p[contains(.,'est')]", :
|
113
|
-
expect(@session).to have_no_xpath("//p//a[@id='doesnotexist']", :
|
110
|
+
expect(@session).to have_no_xpath("//p", count: 6)
|
111
|
+
expect(@session).to have_no_xpath("//p//a[@id='foo']", count: 2)
|
112
|
+
expect(@session).to have_no_xpath("//p[contains(.,'est')]", count: 5)
|
113
|
+
expect(@session).to have_no_xpath("//p//a[@id='doesnotexist']", count: 1)
|
114
114
|
end
|
115
115
|
end
|
116
116
|
|
117
117
|
context "with text" do
|
118
118
|
it "should discard all matches where the given string is contained" do
|
119
|
-
expect(@session).not_to have_no_xpath("//p//a", :
|
120
|
-
expect(@session).to have_no_xpath("//p", :
|
119
|
+
expect(@session).not_to have_no_xpath("//p//a", text: "Redirect", count: 1)
|
120
|
+
expect(@session).to have_no_xpath("//p", text: "Doesnotexist")
|
121
121
|
end
|
122
122
|
|
123
123
|
it "should discard all matches where the given regexp is matched" do
|
124
|
-
expect(@session).not_to have_no_xpath("//p//a", :
|
125
|
-
expect(@session).to have_no_xpath("//p//a", :
|
124
|
+
expect(@session).not_to have_no_xpath("//p//a", text: /re[dab]i/i, count: 1)
|
125
|
+
expect(@session).to have_no_xpath("//p//a", text: /Red$/)
|
126
126
|
end
|
127
127
|
end
|
128
128
|
end
|