capybara 3.8.2 → 3.9.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 +10 -0
- data/lib/capybara.rb +32 -10
- data/lib/capybara/config.rb +1 -0
- data/lib/capybara/dsl.rb +2 -2
- data/lib/capybara/helpers.rb +1 -0
- data/lib/capybara/node/actions.rb +4 -0
- data/lib/capybara/node/base.rb +1 -0
- data/lib/capybara/node/element.rb +3 -0
- data/lib/capybara/node/finders.rb +2 -0
- data/lib/capybara/node/simple.rb +1 -0
- data/lib/capybara/queries/base_query.rb +1 -0
- data/lib/capybara/queries/match_query.rb +1 -0
- data/lib/capybara/queries/selector_query.rb +34 -37
- data/lib/capybara/queries/text_query.rb +2 -0
- data/lib/capybara/rack_test/browser.rb +1 -0
- data/lib/capybara/rack_test/driver.rb +5 -0
- data/lib/capybara/rack_test/node.rb +2 -0
- data/lib/capybara/result.rb +2 -0
- data/lib/capybara/rspec/compound.rb +2 -0
- data/lib/capybara/rspec/matchers.rb +1 -0
- data/lib/capybara/selector.rb +14 -27
- data/lib/capybara/selector/builders/css_builder.rb +49 -0
- data/lib/capybara/selector/builders/xpath_builder.rb +56 -0
- data/lib/capybara/selector/filter_set.rb +1 -0
- data/lib/capybara/selector/filters/base.rb +2 -0
- data/lib/capybara/selector/regexp_disassembler.rb +66 -0
- data/lib/capybara/selector/selector.rb +25 -5
- data/lib/capybara/selenium/driver.rb +8 -1
- data/lib/capybara/selenium/driver_specializations/chrome_driver.rb +19 -1
- data/lib/capybara/selenium/driver_specializations/marionette_driver.rb +1 -0
- data/lib/capybara/selenium/node.rb +7 -0
- data/lib/capybara/selenium/nodes/chrome_node.rb +2 -0
- data/lib/capybara/selenium/nodes/marionette_node.rb +37 -20
- data/lib/capybara/server.rb +4 -0
- data/lib/capybara/server/animation_disabler.rb +1 -0
- data/lib/capybara/session.rb +5 -0
- data/lib/capybara/session/config.rb +2 -0
- data/lib/capybara/spec/session/has_css_spec.rb +16 -0
- data/lib/capybara/spec/session/has_field_spec.rb +4 -0
- data/lib/capybara/spec/session/node_spec.rb +6 -0
- data/lib/capybara/spec/session/node_wrapper_spec.rb +1 -1
- data/lib/capybara/spec/session/reset_session_spec.rb +15 -1
- data/lib/capybara/spec/session/selectors_spec.rb +12 -2
- data/lib/capybara/spec/views/form.erb +15 -0
- data/lib/capybara/version.rb +1 -1
- data/lib/capybara/xpath_patches.rb +27 -0
- data/spec/dsl_spec.rb +15 -1
- data/spec/rack_test_spec.rb +6 -1
- data/spec/regexp_dissassembler_spec.rb +154 -0
- data/spec/selector_spec.rb +37 -2
- data/spec/selenium_spec_chrome.rb +2 -2
- data/spec/selenium_spec_firefox_remote.rb +2 -0
- data/spec/selenium_spec_marionette.rb +11 -0
- data/spec/shared_selenium_session.rb +20 -0
- data/spec/spec_helper.rb +4 -0
- metadata +7 -2
data/spec/rack_test_spec.rb
CHANGED
@@ -19,7 +19,12 @@ skipped_tests = %i[
|
|
19
19
|
download
|
20
20
|
css
|
21
21
|
]
|
22
|
-
Capybara::SpecHelper.run_specs TestSessions::RackTest, 'RackTest', capybara_skip: skipped_tests
|
22
|
+
Capybara::SpecHelper.run_specs TestSessions::RackTest, 'RackTest', capybara_skip: skipped_tests do |example|
|
23
|
+
case example.metadata[:full_description]
|
24
|
+
when /has_css\? should support case insensitive :class and :id options/
|
25
|
+
pending "Nokogiri doesn't support case insensitive CSS attribute matchers"
|
26
|
+
end
|
27
|
+
end
|
23
28
|
|
24
29
|
RSpec.describe Capybara::Session do # rubocop:disable RSpec/MultipleDescribes
|
25
30
|
context 'with rack test driver' do
|
@@ -0,0 +1,154 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require 'spec_helper'
|
4
|
+
|
5
|
+
RSpec.describe Capybara::Selector::RegexpDisassembler do
|
6
|
+
it 'handles strings' do
|
7
|
+
verify_strings(
|
8
|
+
/abcdef/ => %w[abcdef],
|
9
|
+
/abc def/ => ['abc def']
|
10
|
+
)
|
11
|
+
end
|
12
|
+
|
13
|
+
it 'handles escaped characters' do
|
14
|
+
verify_strings(
|
15
|
+
/abc\\def/ => %w[abc def],
|
16
|
+
/\nabc/ => %w[abc],
|
17
|
+
%r{abc/} => %w[abc/]
|
18
|
+
)
|
19
|
+
end
|
20
|
+
|
21
|
+
it 'handles wildcards' do
|
22
|
+
verify_strings(
|
23
|
+
/abc.*def/ => %w[abc def],
|
24
|
+
/.*def/ => %w[def],
|
25
|
+
/abc./ => %w[abc],
|
26
|
+
/abc.*/ => %w[abc],
|
27
|
+
/abc.def/ => %w[abc def],
|
28
|
+
/abc.def.ghi/ => %w[abc def ghi]
|
29
|
+
)
|
30
|
+
end
|
31
|
+
|
32
|
+
it 'handles optional characters' do
|
33
|
+
verify_strings(
|
34
|
+
/abc*def/ => %w[ab def],
|
35
|
+
/abc*/ => %w[ab],
|
36
|
+
/abc?def/ => %w[ab def],
|
37
|
+
/abc?/ => %w[ab],
|
38
|
+
/abc?def?/ => %w[ab de],
|
39
|
+
/abc?def?g/ => %w[ab de g]
|
40
|
+
)
|
41
|
+
end
|
42
|
+
|
43
|
+
it 'handles character classes' do
|
44
|
+
verify_strings(
|
45
|
+
/abc[a-z]/ => %w[abc],
|
46
|
+
/abc[a-z]def[0-9]g/ => %w[abc def g],
|
47
|
+
/[0-9]abc/ => %w[abc],
|
48
|
+
/[0-9]+/ => %w[],
|
49
|
+
/abc[0-9&&[^7]]/ => %w[abc]
|
50
|
+
)
|
51
|
+
end
|
52
|
+
|
53
|
+
it 'handles posix bracket expressions' do
|
54
|
+
verify_strings(
|
55
|
+
/abc[[:alpha:]]/ => %w[abc],
|
56
|
+
/[[:digit:]]abc/ => %w[abc],
|
57
|
+
/abc[[:print:]]def/ => %w[abc def]
|
58
|
+
)
|
59
|
+
end
|
60
|
+
|
61
|
+
it 'handles repitition' do
|
62
|
+
verify_strings(
|
63
|
+
/abc{3}/ => %w[abccc],
|
64
|
+
/abc{3}d/ => %w[abcccd],
|
65
|
+
/abc{0}/ => %w[ab],
|
66
|
+
/abc{,2}/ => %w[ab],
|
67
|
+
/abc{2,}/ => %w[abcc],
|
68
|
+
/def{1,5}/ => %w[def],
|
69
|
+
/abc+def/ => %w[abc def],
|
70
|
+
/ab(cde){,4}/ => %w[ab],
|
71
|
+
/(ab){,2}cd/ => %w[cd],
|
72
|
+
/(abc){2,3}/ => %w[abcabc],
|
73
|
+
/(abc){3}/ => %w[abcabcabc],
|
74
|
+
/ab{2,3}cd/ => %w[abb cd],
|
75
|
+
/(ab){2,3}cd/ => %w[abab cd]
|
76
|
+
)
|
77
|
+
end
|
78
|
+
|
79
|
+
it 'handles non-greedy repetition' do
|
80
|
+
verify_strings(
|
81
|
+
/abc.*?/ => %w[abc],
|
82
|
+
/abc+?/ => %w[abc],
|
83
|
+
/abc*?cde/ => %w[ab cde],
|
84
|
+
/(abc)+?def/ => %w[abc def],
|
85
|
+
/ab(cde)*?fg/ => %w[ab fg]
|
86
|
+
)
|
87
|
+
end
|
88
|
+
|
89
|
+
it 'handles alternation' do
|
90
|
+
verify_strings(
|
91
|
+
/abc|def/ => [],
|
92
|
+
/ab(?:c|d)/ => %w[ab],
|
93
|
+
/ab(c|d)ef/ => %w[ab ef]
|
94
|
+
)
|
95
|
+
end
|
96
|
+
|
97
|
+
it 'handles grouping' do
|
98
|
+
verify_strings(
|
99
|
+
/(abc)/ => %w[abc],
|
100
|
+
/(abc)?/ => [],
|
101
|
+
/ab(cde)/ => %w[abcde],
|
102
|
+
/(abc)de/ => %w[abcde],
|
103
|
+
/ab(cde)fg/ => %w[abcdefg],
|
104
|
+
/ab(?<name>cd)ef/ => %w[abcdef],
|
105
|
+
/gh(?>ij)kl/ => %w[ghijkl],
|
106
|
+
/m(n.*p)q/ => %w[mn pq],
|
107
|
+
/(?:ab(cd)*){2,3}/ => %w[ab],
|
108
|
+
/(ab(cd){3})?/ => [],
|
109
|
+
/(ab(cd)+){2}/ => %w[abcd]
|
110
|
+
)
|
111
|
+
end
|
112
|
+
|
113
|
+
it 'handles meta characters' do
|
114
|
+
verify_strings(
|
115
|
+
/abc\d/ => %w[abc],
|
116
|
+
/abc\wdef/ => %w[abc def],
|
117
|
+
/\habc/ => %w[abc]
|
118
|
+
)
|
119
|
+
end
|
120
|
+
|
121
|
+
it 'handles character properties' do
|
122
|
+
verify_strings(
|
123
|
+
/ab\p{Alpha}cd/ => %w[ab cd],
|
124
|
+
/ab\p{Blank}/ => %w[ab],
|
125
|
+
/\p{Digit}cd/ => %w[cd]
|
126
|
+
)
|
127
|
+
end
|
128
|
+
|
129
|
+
it 'handles backreferences' do
|
130
|
+
verify_strings(
|
131
|
+
/a(?<group>abc).\k<group>.+/ => %w[aabc]
|
132
|
+
)
|
133
|
+
end
|
134
|
+
|
135
|
+
it 'handles subexpressions' do
|
136
|
+
verify_strings(
|
137
|
+
/\A(?<paren>a\g<paren>*b)+\z/ => %w[a b]
|
138
|
+
)
|
139
|
+
end
|
140
|
+
|
141
|
+
it 'handles anchors' do
|
142
|
+
verify_strings(
|
143
|
+
/^abc/ => %w[abc],
|
144
|
+
/def$/ => %w[def],
|
145
|
+
/^abc$/ => %w[abc]
|
146
|
+
)
|
147
|
+
end
|
148
|
+
|
149
|
+
def verify_strings(hsh)
|
150
|
+
hsh.each do |regexp, expected|
|
151
|
+
expect(Capybara::Selector::RegexpDisassembler.new(regexp).substrings).to eq expected
|
152
|
+
end
|
153
|
+
end
|
154
|
+
end
|
data/spec/selector_spec.rb
CHANGED
@@ -31,6 +31,7 @@ RSpec.describe Capybara do
|
|
31
31
|
<input type="file" id="file" class=".special file"/>
|
32
32
|
<input type="hidden" id="hidden_field" value="this is hidden"/>
|
33
33
|
<input type="submit" value="click me" title="submit button"/>
|
34
|
+
<input type="button" value="don't click me" title="Other button 1"/>
|
34
35
|
<a href="#">link</a>
|
35
36
|
<fieldset></fieldset>
|
36
37
|
<select id="select">
|
@@ -147,6 +148,15 @@ RSpec.describe Capybara do
|
|
147
148
|
expect { string.find(:custom_css_selector, 'div', id: XPath.contains('peci')) }
|
148
149
|
.to raise_error(ArgumentError, /not supported/)
|
149
150
|
end
|
151
|
+
|
152
|
+
it 'accepts Regexp for xpath based selectors' do
|
153
|
+
expect(string.find(:custom_xpath_selector, './/div', id: /peci/)[:id]).to eq '#special'
|
154
|
+
expect(string.find(:custom_xpath_selector, './/div', id: /pEcI/i)[:id]).to eq '#special'
|
155
|
+
end
|
156
|
+
|
157
|
+
it 'accepts Regexp for css based selectors' do
|
158
|
+
expect(string.find(:custom_css_selector, 'div', id: /sp.*al/)[:id]).to eq '#special'
|
159
|
+
end
|
150
160
|
end
|
151
161
|
|
152
162
|
context 'with :class option' do
|
@@ -176,6 +186,15 @@ RSpec.describe Capybara do
|
|
176
186
|
expect { string.find(:custom_css_selector, 'div', class: XPath.contains('random')) }
|
177
187
|
.to raise_error(ArgumentError, /not supported/)
|
178
188
|
end
|
189
|
+
|
190
|
+
it 'accepts Regexp for XPath based selectors' do
|
191
|
+
expect(string.find(:custom_xpath_selector, './/div', class: /dom wor/)[:id]).to eq 'random_words'
|
192
|
+
expect(string.find(:custom_xpath_selector, './/div', class: /dOm WoR/i)[:id]).to eq 'random_words'
|
193
|
+
end
|
194
|
+
|
195
|
+
it 'accepts Regexp for CSS base selectors' do
|
196
|
+
expect(string.find(:custom_css_selector, 'div', class: /random/)[:id]).to eq 'random_words'
|
197
|
+
end
|
179
198
|
end
|
180
199
|
|
181
200
|
# :css, :xpath, :id, :field, :fieldset, :link, :button, :link_or_button, :fillable_field, :radio_button, :checkbox, :select,
|
@@ -206,10 +225,14 @@ RSpec.describe Capybara do
|
|
206
225
|
expect(string.find(:field, 'form[my_text_input]')[:id]).to eq 'my_text_input'
|
207
226
|
end
|
208
227
|
|
209
|
-
it 'finds by id' do
|
228
|
+
it 'finds by id string' do
|
210
229
|
expect(string.find(:field, id: 'my_text_input')[:name]).to eq 'form[my_text_input]'
|
211
230
|
end
|
212
231
|
|
232
|
+
it 'finds by id regexp' do
|
233
|
+
expect(string.find(:field, id: /my_text_inp/)[:name]).to eq 'form[my_text_input]'
|
234
|
+
end
|
235
|
+
|
213
236
|
it 'finds by name' do
|
214
237
|
expect(string.find(:field, name: 'form[my_text_input]')[:id]).to eq 'my_text_input'
|
215
238
|
end
|
@@ -257,6 +280,18 @@ RSpec.describe Capybara do
|
|
257
280
|
expect(string.find(:element, 'input', type: 'submit').value).to eq 'click me'
|
258
281
|
end
|
259
282
|
|
283
|
+
it 'supports regexp matching' do
|
284
|
+
expect(string.find(:element, 'input', type: /sub/).value).to eq 'click me'
|
285
|
+
expect(string.find(:element, 'input', title: /sub\w.*button/).value).to eq 'click me'
|
286
|
+
expect(string.find(:element, 'input', title: /sub.* b.*ton/).value).to eq 'click me'
|
287
|
+
expect(string.find(:element, 'input', title: /sub.*mit.*/).value).to eq 'click me'
|
288
|
+
expect(string.find(:element, 'input', title: /^submit button$/).value).to eq 'click me'
|
289
|
+
expect(string.find(:element, 'input', title: /^(?:submit|other) button$/).value).to eq 'click me'
|
290
|
+
expect(string.find(:element, 'input', title: /SuB.*mIt/i).value).to eq 'click me'
|
291
|
+
expect(string.find(:element, 'input', title: /^Su.*Bm.*It/i).value).to eq 'click me'
|
292
|
+
expect(string.find(:element, 'input', title: /^Ot.*he.*r b.*\d/i).value).to eq "don't click me"
|
293
|
+
end
|
294
|
+
|
260
295
|
it 'still works with system keys' do
|
261
296
|
expect { string.all(:element, 'input', type: 'submit', count: 1) }.not_to raise_error
|
262
297
|
end
|
@@ -289,7 +324,7 @@ RSpec.describe Capybara do
|
|
289
324
|
expect(string.find(:element, 'input', type: XPath.ends_with('ext'))[:type]).to eq 'text'
|
290
325
|
expect(string.find(:element, 'input', type: XPath.contains('ckb'))[:type]).to eq 'checkbox'
|
291
326
|
expect(string.find(:element, 'input', title: XPath.contains_word('submit'))[:type]).to eq 'submit'
|
292
|
-
expect(string.find(:element, 'input', title: XPath.contains_word('button'))[:type]).to eq '
|
327
|
+
expect(string.find(:element, 'input', title: XPath.contains_word('button 1'))[:type]).to eq 'button'
|
293
328
|
end
|
294
329
|
end
|
295
330
|
end
|
@@ -94,13 +94,13 @@ RSpec.describe 'Capybara::Session with chrome' do
|
|
94
94
|
end
|
95
95
|
|
96
96
|
it 'should fill in a date input with a String' do
|
97
|
-
@session.fill_in('form_date', with:
|
97
|
+
@session.fill_in('form_date', with: '06/19/1983')
|
98
98
|
@session.click_button('awesome')
|
99
99
|
expect(Date.parse(extract_results(@session)['date'])).to eq datetime.to_date
|
100
100
|
end
|
101
101
|
|
102
102
|
it 'should fill in a time input with a String' do
|
103
|
-
@session.fill_in('form_time', with:
|
103
|
+
@session.fill_in('form_time', with: '06:30A')
|
104
104
|
@session.click_button('awesome')
|
105
105
|
results = extract_results(@session)['time']
|
106
106
|
expect(Time.parse(results).strftime('%r')).to eq datetime.strftime('%r')
|
@@ -69,6 +69,8 @@ Capybara::SpecHelper.run_specs TestSessions::RemoteFirefox, FIREFOX_REMOTE_DRIVE
|
|
69
69
|
'if files are already set'
|
70
70
|
when 'Capybara::Session selenium_firefox_remote #attach_file with multipart form should fire change once when uploading multiple files from empty'
|
71
71
|
pending "FF < 62 doesn't support setting all files at once" if marionette_lt?(62, @session)
|
72
|
+
when 'Capybara::Session selenium_firefox_remote #reset_session! removes ALL cookies'
|
73
|
+
pending "Geckodriver doesn't provide a way to remove cookies outside the current domain"
|
72
74
|
end
|
73
75
|
end
|
74
76
|
|
@@ -65,6 +65,8 @@ Capybara::SpecHelper.run_specs TestSessions::SeleniumMarionette, 'selenium', cap
|
|
65
65
|
skip 'Broken in FF 63 - https://bugzilla.mozilla.org/show_bug.cgi?id=1487358' if marionette_gte?(63, @session)
|
66
66
|
when 'Capybara::Session selenium #click_link can download a file'
|
67
67
|
skip 'Need to figure out testing of file downloading on windows platform' if Gem.win_platform?
|
68
|
+
when 'Capybara::Session selenium #reset_session! removes ALL cookies'
|
69
|
+
pending "Geckodriver doesn't provide a way to remove cookies outside the current domain"
|
68
70
|
end
|
69
71
|
end
|
70
72
|
|
@@ -169,4 +171,13 @@ RSpec.describe Capybara::Selenium::Node do
|
|
169
171
|
expect(session).to have_link('Has been alt control meta')
|
170
172
|
end
|
171
173
|
end
|
174
|
+
|
175
|
+
context '#send_keys' do
|
176
|
+
it 'should process space' do
|
177
|
+
session = TestSessions::SeleniumMarionette
|
178
|
+
session.visit('/form')
|
179
|
+
session.find(:css, '#address1_city').send_keys('ocean', [:shift, :space, 'side'])
|
180
|
+
expect(session.find(:css, '#address1_city').value).to eq 'ocean SIDE'
|
181
|
+
end
|
182
|
+
end
|
172
183
|
end
|
@@ -334,6 +334,20 @@ RSpec.shared_examples 'Capybara::Session' do |session, mode|
|
|
334
334
|
end
|
335
335
|
end
|
336
336
|
|
337
|
+
describe 'Capybara#Node#attach_file' do
|
338
|
+
it 'can attach a directory' do
|
339
|
+
pending "Geckodriver doesn't support uploading a directory" if marionette?(session)
|
340
|
+
pending "Selenium remote doesn't support transferring a directory" if remote?(session)
|
341
|
+
pending "Headless Chrome doesn't support directory upload - https://bugs.chromium.org/p/chromedriver/issues/detail?id=2521&q=directory%20upload&colspec=ID%20Status%20Pri%20Owner%20Summary" if chrome?(session) && ENV['HEADLESS']
|
342
|
+
|
343
|
+
session.visit('/form')
|
344
|
+
@test_file_dir = File.expand_path('./fixtures', File.dirname(__FILE__))
|
345
|
+
session.attach_file('Directory Upload', @test_file_dir)
|
346
|
+
session.click_button('Upload Multiple')
|
347
|
+
expect(session.body).to include('5 | ') # number of files
|
348
|
+
end
|
349
|
+
end
|
350
|
+
|
337
351
|
context 'Windows' do
|
338
352
|
it "can't close the primary window" do
|
339
353
|
expect do
|
@@ -431,6 +445,12 @@ RSpec.shared_examples 'Capybara::Session' do |session, mode|
|
|
431
445
|
expect(session).to have_selector(:element, :circle)
|
432
446
|
expect(session).to have_selector(:element, :linearGradient, visible: :all)
|
433
447
|
end
|
448
|
+
|
449
|
+
it 'can query attributes with strange characters' do
|
450
|
+
session.visit('/form')
|
451
|
+
expect(session).to have_selector(:element, "{custom}": true)
|
452
|
+
expect(session).to have_selector(:element, "{custom}": 'abcdef')
|
453
|
+
end
|
434
454
|
end
|
435
455
|
end
|
436
456
|
|
data/spec/spec_helper.rb
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: capybara
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 3.
|
4
|
+
version: 3.9.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Thomas Walpole
|
@@ -10,7 +10,7 @@ autorequire:
|
|
10
10
|
bindir: bin
|
11
11
|
cert_chain:
|
12
12
|
- gem-public_cert.pem
|
13
|
-
date: 2018-
|
13
|
+
date: 2018-10-03 00:00:00.000000000 Z
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
16
16
|
name: addressable
|
@@ -301,12 +301,15 @@ files:
|
|
301
301
|
- lib/capybara/rspec/matcher_proxies.rb
|
302
302
|
- lib/capybara/rspec/matchers.rb
|
303
303
|
- lib/capybara/selector.rb
|
304
|
+
- lib/capybara/selector/builders/css_builder.rb
|
305
|
+
- lib/capybara/selector/builders/xpath_builder.rb
|
304
306
|
- lib/capybara/selector/css.rb
|
305
307
|
- lib/capybara/selector/filter.rb
|
306
308
|
- lib/capybara/selector/filter_set.rb
|
307
309
|
- lib/capybara/selector/filters/base.rb
|
308
310
|
- lib/capybara/selector/filters/expression_filter.rb
|
309
311
|
- lib/capybara/selector/filters/node_filter.rb
|
312
|
+
- lib/capybara/selector/regexp_disassembler.rb
|
310
313
|
- lib/capybara/selector/selector.rb
|
311
314
|
- lib/capybara/selenium/driver.rb
|
312
315
|
- lib/capybara/selenium/driver_specializations/chrome_driver.rb
|
@@ -452,6 +455,7 @@ files:
|
|
452
455
|
- lib/capybara/spec/views/within_frames.erb
|
453
456
|
- lib/capybara/version.rb
|
454
457
|
- lib/capybara/window.rb
|
458
|
+
- lib/capybara/xpath_patches.rb
|
455
459
|
- spec/basic_node_spec.rb
|
456
460
|
- spec/capybara_spec.rb
|
457
461
|
- spec/css_splitter_spec.rb
|
@@ -466,6 +470,7 @@ files:
|
|
466
470
|
- spec/minitest_spec_spec.rb
|
467
471
|
- spec/per_session_config_spec.rb
|
468
472
|
- spec/rack_test_spec.rb
|
473
|
+
- spec/regexp_dissassembler_spec.rb
|
469
474
|
- spec/result_spec.rb
|
470
475
|
- spec/rspec/features_spec.rb
|
471
476
|
- spec/rspec/scenarios_spec.rb
|