spreewald 0.9.0 → 0.9.1
Sign up to get free protection for your applications and to get access to all the features.
- data/README.md +44 -71
- data/Rakefile +31 -20
- data/lib/spreewald/file_attachment_steps.rb +12 -19
- data/lib/spreewald/table_steps.rb +3 -5
- data/lib/spreewald/timecop_steps.rb +2 -1
- data/lib/spreewald/web_steps.rb +47 -34
- data/lib/spreewald_support/tolerance_for_selenium_sync_issues.rb +8 -1
- data/lib/spreewald_support/version.rb +1 -1
- data/support/documentation_generator.rb +6 -1
- data/tests/rails-2.3/Gemfile.lock +1 -1
- data/tests/rails-3.2/{Gemfile → capybara-1/Gemfile} +2 -2
- data/tests/rails-3.2/{Gemfile.lock → capybara-1/Gemfile.lock} +2 -2
- data/tests/rails-3.2/{Rakefile → capybara-1/Rakefile} +0 -0
- data/tests/rails-3.2/{config → capybara-1/config}/application.rb +0 -0
- data/tests/rails-3.2/{config → capybara-1/config}/boot.rb +0 -0
- data/tests/rails-3.2/{config → capybara-1/config}/database.yml +0 -0
- data/tests/rails-3.2/{config → capybara-1/config}/environment.rb +0 -0
- data/tests/rails-3.2/{config → capybara-1/config}/initializers/backtrace_silencers.rb +0 -0
- data/tests/rails-3.2/{config → capybara-1/config}/initializers/inflections.rb +0 -0
- data/tests/rails-3.2/{config → capybara-1/config}/initializers/mime_types.rb +0 -0
- data/tests/rails-3.2/{config → capybara-1/config}/initializers/secret_token.rb +0 -0
- data/tests/rails-3.2/{config → capybara-1/config}/initializers/session_store.rb +0 -0
- data/tests/rails-3.2/{config → capybara-1/config}/routes.rb +0 -0
- data/tests/rails-3.2/{features → capybara-1/features}/support/env.rb +3 -3
- data/tests/rails-3.2/{features → capybara-1/features}/support/paths.rb +0 -0
- data/tests/rails-3.2/capybara-2/Gemfile +14 -0
- data/tests/rails-3.2/capybara-2/Gemfile.lock +167 -0
- data/tests/rails-3.2/capybara-2/Rakefile +13 -0
- data/tests/rails-3.2/capybara-2/public/favicon.ico +1 -0
- data/tests/shared/app/controllers/static_pages_controller.rb +3 -0
- data/tests/shared/app/views/static_pages/home.html.haml +0 -0
- data/tests/shared/app/views/static_pages/link_to_home.html.haml +1 -0
- data/tests/shared/features/shared/web_steps.feature +17 -0
- metadata +48 -35
- data/.travis.yml +0 -13
data/README.md
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
# Spreewald
|
1
|
+
# Spreewald
|
2
2
|
|
3
3
|
Spreewald is a collection of useful steps for cucumber. Feel free to fork.
|
4
4
|
|
@@ -22,7 +22,7 @@ Steps are grouped into a number of categories. You can pick and choose single ca
|
|
22
22
|
|
23
23
|
require 'spreewald/email_steps'
|
24
24
|
|
25
|
-
into your `support/env.rb`
|
25
|
+
into either your `support/env.rb` or a `step_defitions/spreewald_steps.rb`.
|
26
26
|
|
27
27
|
Alternatively, you can require everything by doing
|
28
28
|
|
@@ -60,7 +60,7 @@ The "Steps" section is autogenerated by `rake update_readme` from comments in th
|
|
60
60
|
|
61
61
|
### development_steps.rb
|
62
62
|
|
63
|
-
|
63
|
+
|
64
64
|
|
65
65
|
* **Then it should work**
|
66
66
|
|
@@ -153,81 +153,44 @@ Marks scenario as pending
|
|
153
153
|
|
154
154
|
### file_attachment_steps.rb
|
155
155
|
|
156
|
-
Attach a file
|
157
|
-
|
158
|
-
Example:
|
159
|
-
|
160
|
-
Company.new.logo = File.new…
|
161
|
-
|
162
|
-
Given the file "…" was attached as logo to the company above
|
163
|
-
|
164
|
-
|
165
|
-
Example:
|
166
|
-
|
167
|
-
class Gallery
|
168
|
-
has_many :images, :as => :owner
|
169
|
-
end
|
170
|
-
|
171
|
-
class Image
|
172
|
-
belongs_to :owner, polymorphic: true
|
173
|
-
end
|
174
|
-
|
175
|
-
# so container = Image.new; container.file = File.new… , container.owner = object
|
176
|
-
|
177
|
-
Given the file "…" was attached as Image/file to the company above
|
178
|
-
|
179
|
-
|
180
|
-
Example:
|
181
|
-
|
182
|
-
Set updated_at with
|
183
|
-
|
184
|
-
Given … above at "2011-11-11 11:11"
|
185
156
|
|
186
157
|
|
187
158
|
* **Given the file "..." was attached( as (.../)?...)? to the ... above( at "...")?**
|
188
159
|
|
189
|
-
Attach a file
|
190
|
-
|
191
|
-
Example:
|
192
|
-
|
193
|
-
Company.new.logo = File.new…
|
160
|
+
Attach a file to the given ActiveRecord model's last record.
|
194
161
|
|
195
|
-
|
162
|
+
Example (Company has a `file` attribute):
|
196
163
|
|
164
|
+
Given the file "image.png" was attached to the company above
|
197
165
|
|
198
|
-
|
199
|
-
|
200
|
-
class Gallery
|
201
|
-
has_many :images, :as => :owner
|
202
|
-
end
|
166
|
+
You may specify the attribute under which the file is stored …
|
203
167
|
|
204
|
-
|
205
|
-
belongs_to :owner, polymorphic: true
|
206
|
-
end
|
168
|
+
Example (Company has a `logo` attribute):
|
207
169
|
|
208
|
-
|
170
|
+
Given the file "image.png" was attached as logo to the company above
|
209
171
|
|
210
|
-
|
172
|
+
… or both a container class and its attribute name
|
211
173
|
|
174
|
+
Example (Company has many `Image`s, `Image` has a `file` attribute)
|
212
175
|
|
213
|
-
|
176
|
+
Given the file "image.png" was attached as Image/file to the company above
|
214
177
|
|
215
|
-
|
178
|
+
To simultaneously set the `updated_at` timestamp:
|
216
179
|
|
217
|
-
Given
|
180
|
+
Given the file "some_file" was attached to the profile above at "2011-11-11 11:11"
|
218
181
|
|
219
182
|
|
220
183
|
|
221
184
|
|
222
185
|
### table_steps.rb
|
223
186
|
|
224
|
-
Check the content of tables in your HTML.
|
225
187
|
|
226
|
-
See [this article](https://makandracards.com/makandra/763-cucumber-step-to-match-table-rows-with-capybara) for details.
|
227
188
|
|
228
189
|
* **Then I should( not)? see a table with (exactly )?the following rows( in any order)?**
|
229
190
|
|
191
|
+
Check the content of tables in your HTML.
|
230
192
|
|
193
|
+
See [this article](https://makandracards.com/makandra/763-cucumber-step-to-match-table-rows-with-capybara) for details.
|
231
194
|
|
232
195
|
|
233
196
|
|
@@ -237,6 +200,7 @@ Steps to travel through time using [Timecop](https://github.com/jtrupiano/timeco
|
|
237
200
|
|
238
201
|
See [this article](https://makandracards.com/makandra/1222-useful-cucumber-steps-to-travel-through-time-with-timecop) for details.
|
239
202
|
|
203
|
+
|
240
204
|
* **When the (date|time) is "?(\d{4}-\d{2}-\d{2}( \d{1,2}:\d{2})?)"?**
|
241
205
|
|
242
206
|
Example:
|
@@ -286,9 +250,11 @@ deprecation notice. Decide for yourself whether you want to use them:
|
|
286
250
|
> * http://elabs.se/blog/15-you-re-cuking-it-wrong
|
287
251
|
|
288
252
|
|
253
|
+
|
289
254
|
* **When ... within (.*[^:])**
|
290
255
|
|
291
|
-
You can append
|
256
|
+
You can append `within [selector]` to any other web step
|
257
|
+
|
292
258
|
Example:
|
293
259
|
|
294
260
|
Then I should see "some text" within ".page_body"
|
@@ -304,6 +270,11 @@ deprecation notice. Decide for yourself whether you want to use them:
|
|
304
270
|
|
305
271
|
|
306
272
|
|
273
|
+
* **Then I should be on ...**
|
274
|
+
|
275
|
+
|
276
|
+
|
277
|
+
|
307
278
|
* **When I press "..."**
|
308
279
|
|
309
280
|
|
@@ -346,7 +317,7 @@ deprecation notice. Decide for yourself whether you want to use them:
|
|
346
317
|
|
347
318
|
* **When I attach the file "..." to "..."**
|
348
319
|
|
349
|
-
|
320
|
+
Attach a file to a file upload form field
|
350
321
|
|
351
322
|
|
352
323
|
* **Then I should see "..."**
|
@@ -397,7 +368,7 @@ deprecation notice. Decide for yourself whether you want to use them:
|
|
397
368
|
|
398
369
|
* **Then the "..." field should have the error "..."**
|
399
370
|
|
400
|
-
|
371
|
+
Checks that an input field was wrapped with a validation error
|
401
372
|
|
402
373
|
|
403
374
|
* **Then the "..." field should( not)? have an error**
|
@@ -415,11 +386,6 @@ deprecation notice. Decide for yourself whether you want to use them:
|
|
415
386
|
|
416
387
|
|
417
388
|
|
418
|
-
* **Then I should be on ...**
|
419
|
-
|
420
|
-
|
421
|
-
|
422
|
-
|
423
389
|
* **Then I should have the following query string:**
|
424
390
|
|
425
391
|
Example:
|
@@ -428,36 +394,37 @@ deprecation notice. Decide for yourself whether you want to use them:
|
|
428
394
|
| locale | de |
|
429
395
|
| currency_code | EUR |
|
430
396
|
|
431
|
-
Succeeds when the URL contains the given
|
397
|
+
Succeeds when the URL contains the given `locale` and `currency_code` params
|
432
398
|
|
433
399
|
|
434
400
|
* **Then show me the page**
|
435
401
|
|
436
|
-
Open the current Capybara page using the
|
402
|
+
Open the current Capybara page using the `launchy` gem
|
437
403
|
|
438
404
|
|
439
405
|
* **Then I should( not)? see a field "..."**
|
440
406
|
|
441
|
-
|
407
|
+
Checks for the existance of an input field (given its id or label)
|
442
408
|
|
443
409
|
|
444
410
|
* **Then I should( not)? see the (number|amount) ([\-\d,\.]+)( (.*?))?**
|
445
411
|
|
446
|
-
|
412
|
+
Use this step to test for a number or money amount instead of a simple `Then I should see`
|
447
413
|
|
448
|
-
Checks
|
414
|
+
Checks for an unexpected minus sign, correct decimal places etc.
|
449
415
|
|
450
416
|
See [here](https://makandracards.com/makandra/1225-test-that-a-number-or-money-amount-is-shown-with-cucumber) for details
|
451
417
|
|
452
418
|
|
453
419
|
* **Then I should get a response with content-type "..."**
|
454
420
|
|
455
|
-
Checks
|
421
|
+
Checks `Content-Type` HTTP header
|
456
422
|
|
457
423
|
|
458
424
|
* **Then I should get a download with filename "..."**
|
459
425
|
|
460
|
-
Checks
|
426
|
+
Checks `Content-Disposition` HTTP header
|
427
|
+
|
461
428
|
Attention: Doesn't work with Selenium, see https://github.com/jnicklas/capybara#gotchas
|
462
429
|
|
463
430
|
|
@@ -478,7 +445,8 @@ deprecation notice. Decide for yourself whether you want to use them:
|
|
478
445
|
|
479
446
|
* **Then I should see '([^']*)'**
|
480
447
|
|
481
|
-
Like `Then I should see`, but with single instead of double quotes. In case
|
448
|
+
Like `Then I should see`, but with single instead of double quotes. In case
|
449
|
+
the expected string contains quotes as well.
|
482
450
|
|
483
451
|
|
484
452
|
* **Then I should see "..." in the HTML**
|
@@ -505,7 +473,7 @@ deprecation notice. Decide for yourself whether you want to use them:
|
|
505
473
|
|
506
474
|
Checks that an element is actually visible, also considering styles
|
507
475
|
Within a selenium test, the browser is asked whether the element is really visible
|
508
|
-
In a non-selenium test, we only check for
|
476
|
+
In a non-selenium test, we only check for `.hidden`, `.invisible` or `style: display:none`
|
509
477
|
|
510
478
|
More details [here](https://makandracards.com/makandra/1049-capybara-check-that-a-page-element-is-hidden-via-css)
|
511
479
|
|
@@ -535,7 +503,7 @@ deprecation notice. Decide for yourself whether you want to use them:
|
|
535
503
|
|
536
504
|
* **Then I should get a text response**
|
537
505
|
|
538
|
-
Checks that the result has content type text/plain
|
506
|
+
Checks that the result has content type `text/plain`
|
539
507
|
|
540
508
|
|
541
509
|
* **When I follow "..." inside any "..."**
|
@@ -616,3 +584,8 @@ deprecation notice. Decide for yourself whether you want to use them:
|
|
616
584
|
|
617
585
|
More details [here](https://makandracards.com/makandra/971-perform-http-basic-authentication-in-cucumber).
|
618
586
|
|
587
|
+
|
588
|
+
* **When I go back**
|
589
|
+
|
590
|
+
Go to the previously viewed page.
|
591
|
+
|
data/Rakefile
CHANGED
@@ -19,20 +19,9 @@ task :update_readme do
|
|
19
19
|
File.open('README.md', 'w') { |f| f.write(readme) }
|
20
20
|
end
|
21
21
|
|
22
|
-
namespace :travis do
|
23
|
-
|
24
|
-
desc 'Run tests in Travis CI'
|
25
|
-
task :run => [:slimgems, 'all:bundle', 'all:features']
|
26
|
-
|
27
|
-
desc 'Install slimgems'
|
28
|
-
task :slimgems do
|
29
|
-
sh 'gem install slimgems' unless modern_ruby?
|
30
|
-
end
|
31
|
-
end
|
32
|
-
|
33
22
|
namespace :all do
|
34
23
|
|
35
|
-
desc
|
24
|
+
desc 'Run tests on all test apps'
|
36
25
|
task :features do
|
37
26
|
success = true
|
38
27
|
for_each_directory_of('tests/**/Rakefile') do |directory|
|
@@ -43,8 +32,25 @@ namespace :all do
|
|
43
32
|
end
|
44
33
|
fail "Tests failed" unless success
|
45
34
|
end
|
35
|
+
|
36
|
+
desc 'Run tests on several Ruby versions'
|
37
|
+
task :rubies do
|
38
|
+
rubies = %w[1.8.7 1.9.3 2.0.0]
|
39
|
+
success = true
|
40
|
+
|
41
|
+
if system('rvm -v 2>&1 > /dev/null') # rvm installed
|
42
|
+
rubies.each do |ruby|
|
43
|
+
announce 'Running features for Ruby ' + ruby, 2
|
44
|
+
success &= system "rvm #{ruby} do rake all:bundle all:features"
|
45
|
+
end
|
46
|
+
else
|
47
|
+
fail 'Currently only rvm is supported. Open Rakefile and add your Ruby version manager!'
|
48
|
+
end
|
49
|
+
|
50
|
+
fail "Tests failed" unless success
|
51
|
+
end
|
46
52
|
|
47
|
-
desc
|
53
|
+
desc 'Bundle all test apps'
|
48
54
|
task :bundle do
|
49
55
|
for_each_directory_of('tests/**/Gemfile') do |directory|
|
50
56
|
Bundler.with_clean_env do
|
@@ -52,21 +58,26 @@ namespace :all do
|
|
52
58
|
end
|
53
59
|
end
|
54
60
|
end
|
55
|
-
end
|
56
61
|
|
57
|
-
def modern_ruby?
|
58
|
-
Gem::Version.new(RUBY_VERSION) > Gem::Version.new('1.8.7')
|
59
62
|
end
|
60
63
|
|
61
64
|
def for_each_directory_of(path, &block)
|
62
65
|
Dir[path].sort.each do |rakefile|
|
63
66
|
directory = File.dirname(rakefile)
|
64
|
-
|
65
|
-
|
66
|
-
if
|
67
|
-
puts
|
67
|
+
announce directory
|
68
|
+
|
69
|
+
if directory.include?('rails-2.3') and RUBY_VERSION != '1.8.7'
|
70
|
+
puts 'Rails 2.3 tests are only run for Ruby 1.8.7'
|
71
|
+
elsif directory.include?('capybara-2') and RUBY_VERSION == '1.8.7'
|
72
|
+
puts 'Capybara requires Ruby 1.9 or greater'
|
68
73
|
else
|
69
74
|
block.call(directory)
|
70
75
|
end
|
71
76
|
end
|
72
77
|
end
|
78
|
+
|
79
|
+
def announce(text, level = 1)
|
80
|
+
space = "\n" * level
|
81
|
+
message = "# #{text}"
|
82
|
+
puts "\e[4;34m#{space + message}\e[0m" # blue underline
|
83
|
+
end
|
@@ -1,38 +1,31 @@
|
|
1
|
-
# Attach a file
|
1
|
+
# Attach a file to the given model's last record.
|
2
2
|
#
|
3
|
-
# Example:
|
3
|
+
# Example (Company has a `file` attribute):
|
4
4
|
#
|
5
|
-
#
|
5
|
+
# Given the file "image.png" was attached to the company above
|
6
6
|
#
|
7
|
-
#
|
7
|
+
# You may specify the attribute under which the file is stored …
|
8
8
|
#
|
9
|
+
# Example (Company has a `logo` attribute):
|
9
10
|
#
|
10
|
-
#
|
11
|
+
# Given the file "image.png" was attached as logo to the company above
|
11
12
|
#
|
12
|
-
#
|
13
|
-
# has_many :images, :as => :owner
|
14
|
-
# end
|
13
|
+
# … or both a container class and its attribute name
|
15
14
|
#
|
16
|
-
#
|
17
|
-
# belongs_to :owner, polymorphic: true
|
18
|
-
# end
|
15
|
+
# Example (Company has many `Image`s, `Image` has a `file` attribute)
|
19
16
|
#
|
20
|
-
#
|
17
|
+
# Given the file "image.png" was attached as Image/file to the company above
|
21
18
|
#
|
22
|
-
#
|
19
|
+
# To simultaneously set the `updated_at` timestamp:
|
23
20
|
#
|
24
|
-
#
|
25
|
-
# Example:
|
26
|
-
#
|
27
|
-
# Set updated_at with
|
28
|
-
#
|
29
|
-
# Given … above at "2011-11-11 11:11"
|
21
|
+
# Given the file "some_file" was attached to the profile above at "2011-11-11 11:11"
|
30
22
|
#
|
31
23
|
Given /^the file "([^"]*)" was attached(?: as (?:([^"]*)\/)?([^"]*))? to the ([^"]*) above(?: at "([^"]*)")?$/ do
|
32
24
|
|path_to_file, container_name, relation_name, model_name, time_string|
|
33
25
|
|
34
26
|
object = model_name.camelize.constantize.last
|
35
27
|
time = Time.parse(time_string) if time_string.present?
|
28
|
+
relation_name ||= 'file'
|
36
29
|
|
37
30
|
if container_name.present?
|
38
31
|
container = container_name.camelize.constantize.new # Image.file = File... owner: gallery
|
@@ -1,9 +1,4 @@
|
|
1
1
|
# coding: UTF-8
|
2
|
-
|
3
|
-
# Check the content of tables in your HTML.
|
4
|
-
#
|
5
|
-
# See [this article](https://makandracards.com/makandra/763-cucumber-step-to-match-table-rows-with-capybara) for details.
|
6
|
-
|
7
2
|
|
8
3
|
require 'spreewald_support/tolerance_for_selenium_sync_issues'
|
9
4
|
|
@@ -110,6 +105,9 @@ end
|
|
110
105
|
World(TableStepsHelper)
|
111
106
|
|
112
107
|
|
108
|
+
# Check the content of tables in your HTML.
|
109
|
+
#
|
110
|
+
# See [this article](https://makandracards.com/makandra/763-cucumber-step-to-match-table-rows-with-capybara) for details.
|
113
111
|
Then /^I should( not)? see a table with (exactly )?the following rows( in any order)?:?$/ do |negate, exactly, unordered, expected_table|
|
114
112
|
patiently do
|
115
113
|
document = Nokogiri::HTML(page.body)
|
@@ -2,8 +2,9 @@
|
|
2
2
|
|
3
3
|
|
4
4
|
# Steps to travel through time using [Timecop](https://github.com/jtrupiano/timecop).
|
5
|
-
#
|
5
|
+
#
|
6
6
|
# See [this article](https://makandracards.com/makandra/1222-useful-cucumber-steps-to-travel-through-time-with-timecop) for details.
|
7
|
+
# FILE_COMMENT_END
|
7
8
|
|
8
9
|
|
9
10
|
if defined?(Timecop)
|
data/lib/spreewald/web_steps.rb
CHANGED
@@ -22,6 +22,7 @@
|
|
22
22
|
# > * http://dannorth.net/2011/01/31/whose-domain-is-it-anyway/
|
23
23
|
# > * http://elabs.se/blog/15-you-re-cuking-it-wrong
|
24
24
|
#
|
25
|
+
# FILE_COMMENT_END
|
25
26
|
|
26
27
|
require 'spreewald_support/tolerance_for_selenium_sync_issues'
|
27
28
|
require 'spreewald_support/path_selector_fallbacks'
|
@@ -31,7 +32,8 @@ require 'uri'
|
|
31
32
|
require 'cgi'
|
32
33
|
|
33
34
|
|
34
|
-
# You can append
|
35
|
+
# You can append `within [selector]` to any other web step
|
36
|
+
#
|
35
37
|
# Example:
|
36
38
|
#
|
37
39
|
# Then I should see "some text" within ".page_body"
|
@@ -52,6 +54,22 @@ When /^(?:|I )go to (.+)$/ do |page_name|
|
|
52
54
|
visit _path_to(page_name)
|
53
55
|
end
|
54
56
|
|
57
|
+
Then /^(?:|I )should be on (.+)$/ do |page_name|
|
58
|
+
patiently do
|
59
|
+
fragment = URI.parse(current_url).fragment
|
60
|
+
fragment.sub!(/[#?].*/, '') if fragment # most js frameworks will usually use ? and # for params, we dont care about those
|
61
|
+
current_path = URI.parse(current_url).path
|
62
|
+
current_path << "##{fragment}" if fragment.present?
|
63
|
+
expected_path = _path_to(page_name)
|
64
|
+
|
65
|
+
# Consider two pages equal if they only differ by a trailing slash.
|
66
|
+
current_path = expected_path if current_path.chomp("/") == expected_path.chomp("/")
|
67
|
+
current_path = expected_path if current_path.gsub("/#", "#") == expected_path.gsub("/#", "#")
|
68
|
+
|
69
|
+
current_path.should == expected_path
|
70
|
+
end
|
71
|
+
end
|
72
|
+
|
55
73
|
When /^(?:|I )press "([^"]*)"$/ do |button|
|
56
74
|
patiently do
|
57
75
|
click_button(button)
|
@@ -106,6 +124,7 @@ When /^(?:|I )choose "([^"]*)"$/ do |field|
|
|
106
124
|
end
|
107
125
|
end
|
108
126
|
|
127
|
+
# Attach a file to a file upload form field
|
109
128
|
When /^(?:|I )attach the file "([^"]*)" to "([^"]*)"$/ do |path, field|
|
110
129
|
patiently do
|
111
130
|
attach_file(field, File.expand_path(path))
|
@@ -173,8 +192,6 @@ Then(/^the "(.*?)" field should (not )?contain:$/) do |label, negate, expected_s
|
|
173
192
|
end
|
174
193
|
end
|
175
194
|
|
176
|
-
|
177
|
-
|
178
195
|
# Checks that a list of label/value pairs are visible as control inputs.
|
179
196
|
#
|
180
197
|
# Example:
|
@@ -190,10 +207,7 @@ Then /^I should see a form with the following values:$/ do |table|
|
|
190
207
|
end
|
191
208
|
end
|
192
209
|
|
193
|
-
|
194
|
-
|
195
|
-
|
196
|
-
# checks that an input field was wrapped with a validation error
|
210
|
+
# Checks that an input field was wrapped with a validation error
|
197
211
|
Then /^the "([^"]*)" field should have the error "([^"]*)"$/ do |field, error_message|
|
198
212
|
patiently do
|
199
213
|
element = find_field(field)
|
@@ -257,29 +271,13 @@ Then /^the radio button "([^"]*)" should( not)? be (?:checked|selected)$/ do |fi
|
|
257
271
|
end
|
258
272
|
end
|
259
273
|
|
260
|
-
Then /^(?:|I )should be on (.+)$/ do |page_name|
|
261
|
-
patiently do
|
262
|
-
fragment = URI.parse(current_url).fragment
|
263
|
-
fragment.sub!(/[#?].*/, '') if fragment # most js frameworks will usually use ? and # for params, we dont care about those
|
264
|
-
current_path = URI.parse(current_url).path
|
265
|
-
current_path << "##{fragment}" if fragment.present?
|
266
|
-
expected_path = _path_to(page_name)
|
267
|
-
|
268
|
-
# Consider two pages equal if they only differ by a trailing slash.
|
269
|
-
current_path = expected_path if current_path.chomp("/") == expected_path.chomp("/")
|
270
|
-
current_path = expected_path if current_path.gsub("/#", "#") == expected_path.gsub("/#", "#")
|
271
|
-
|
272
|
-
current_path.should == expected_path
|
273
|
-
end
|
274
|
-
end
|
275
|
-
|
276
274
|
# Example:
|
277
275
|
#
|
278
276
|
# I should have the following query string:
|
279
277
|
# | locale | de |
|
280
278
|
# | currency_code | EUR |
|
281
279
|
#
|
282
|
-
# Succeeds when the URL contains the given
|
280
|
+
# Succeeds when the URL contains the given `locale` and `currency_code` params
|
283
281
|
Then /^(?:|I )should have the following query string:$/ do |expected_pairs|
|
284
282
|
patiently do
|
285
283
|
query = URI.parse(current_url).query
|
@@ -291,13 +289,13 @@ Then /^(?:|I )should have the following query string:$/ do |expected_pairs|
|
|
291
289
|
end
|
292
290
|
end
|
293
291
|
|
294
|
-
# Open the current Capybara page using the
|
292
|
+
# Open the current Capybara page using the `launchy` gem
|
295
293
|
Then /^show me the page$/ do
|
296
294
|
save_and_open_page
|
297
295
|
end
|
298
296
|
|
299
297
|
|
300
|
-
#
|
298
|
+
# Checks for the existance of an input field (given its id or label)
|
301
299
|
Then /^I should( not)? see a field "([^"]*)"$/ do |negate, name|
|
302
300
|
expectation = negate ? :should_not : :should
|
303
301
|
patiently do
|
@@ -310,9 +308,9 @@ Then /^I should( not)? see a field "([^"]*)"$/ do |negate, name|
|
|
310
308
|
end
|
311
309
|
end
|
312
310
|
|
313
|
-
#
|
311
|
+
# Use this step to test for a number or money amount instead of a simple `Then I should see`
|
314
312
|
#
|
315
|
-
# Checks
|
313
|
+
# Checks for an unexpected minus sign, correct decimal places etc.
|
316
314
|
#
|
317
315
|
# See [here](https://makandracards.com/makandra/1225-test-that-a-number-or-money-amount-is-shown-with-cucumber) for details
|
318
316
|
Then /^I should( not)? see the (?:number|amount) ([\-\d,\.]+)(?: (.*?))?$/ do |negate, amount, unit|
|
@@ -325,12 +323,13 @@ Then /^I should( not)? see the (?:number|amount) ([\-\d,\.]+)(?: (.*?))?$/ do |n
|
|
325
323
|
end
|
326
324
|
end
|
327
325
|
|
328
|
-
# Checks
|
326
|
+
# Checks `Content-Type` HTTP header
|
329
327
|
Then /^I should get a response with content-type "([^\"]*)"$/ do |expected_content_type|
|
330
328
|
page.response_headers['Content-Type'].should =~ /\A#{Regexp.quote(expected_content_type)}($|;)/
|
331
329
|
end
|
332
330
|
|
333
|
-
# Checks
|
331
|
+
# Checks `Content-Disposition` HTTP header
|
332
|
+
#
|
334
333
|
# Attention: Doesn't work with Selenium, see https://github.com/jnicklas/capybara#gotchas
|
335
334
|
Then /^I should get a download with filename "([^\"]*)"$/ do |filename|
|
336
335
|
page.response_headers['Content-Disposition'].should =~ /filename="#{filename}"$/
|
@@ -366,7 +365,8 @@ Then /^"([^"]*)" should( not)? be an option for "([^"]*)"$/ do |value, negate, f
|
|
366
365
|
end
|
367
366
|
end
|
368
367
|
|
369
|
-
# Like `Then I should see`, but with single instead of double quotes. In case
|
368
|
+
# Like `Then I should see`, but with single instead of double quotes. In case
|
369
|
+
# the expected string contains quotes as well.
|
370
370
|
Then /^(?:|I )should see '([^']*)'$/ do |text|
|
371
371
|
patiently do
|
372
372
|
page.should have_content(text)
|
@@ -411,7 +411,7 @@ end
|
|
411
411
|
|
412
412
|
# Checks that an element is actually visible, also considering styles
|
413
413
|
# Within a selenium test, the browser is asked whether the element is really visible
|
414
|
-
# In a non-selenium test, we only check for
|
414
|
+
# In a non-selenium test, we only check for `.hidden`, `.invisible` or `style: display:none`
|
415
415
|
#
|
416
416
|
# More details [here](https://makandracards.com/makandra/1049-capybara-check-that-a-page-element-is-hidden-via-css)
|
417
417
|
Then /^(the tag )?"([^\"]+)" should( not)? be visible$/ do |tag, selector_or_text, negate|
|
@@ -477,7 +477,7 @@ end
|
|
477
477
|
# Click on some text that might not be a link
|
478
478
|
When /^I click on "([^\"]+)"$/ do |text|
|
479
479
|
patiently do
|
480
|
-
element = page.find(:xpath, "
|
480
|
+
element = page.find(:xpath, ".//*[contains(text(), \"#{text}\")]")
|
481
481
|
element.click
|
482
482
|
end
|
483
483
|
end
|
@@ -506,7 +506,7 @@ Then /^I should (not )?see an element "([^"]*)"$/ do |negate, selector|
|
|
506
506
|
end
|
507
507
|
end
|
508
508
|
|
509
|
-
# Checks that the result has content type text/plain
|
509
|
+
# Checks that the result has content type `text/plain`
|
510
510
|
Then /^I should get a text response$/ do
|
511
511
|
step 'I should get a response with content-type "text/plain"'
|
512
512
|
end
|
@@ -643,3 +643,16 @@ When /^I perform basic authentication as "([^\"]*)\/([^\"]*)" and go to (.*)$/ d
|
|
643
643
|
end
|
644
644
|
end
|
645
645
|
|
646
|
+
# Go to the previously viewed page.
|
647
|
+
When /^I go back$/ do
|
648
|
+
case Capybara::current_driver
|
649
|
+
when :selenium, :webkit
|
650
|
+
page.evaluate_script('window.history.back()')
|
651
|
+
else
|
652
|
+
if page.driver.respond_to?(:browser)
|
653
|
+
visit page.driver.browser.last_request.env['HTTP_REFERER']
|
654
|
+
else
|
655
|
+
visit page.driver.last_request.env['HTTP_REFERER']
|
656
|
+
end
|
657
|
+
end
|
658
|
+
end
|
@@ -1,7 +1,14 @@
|
|
1
1
|
# coding: UTF-8
|
2
2
|
|
3
3
|
module ToleranceForSeleniumSyncIssues
|
4
|
-
RETRY_ERRORS = %w[
|
4
|
+
RETRY_ERRORS = %w[
|
5
|
+
Capybara::ElementNotFound
|
6
|
+
Spec::Expectations::ExpectationNotMetError
|
7
|
+
RSpec::Expectations::ExpectationNotMetError
|
8
|
+
Capybara::Poltergeist::ClickFailed
|
9
|
+
Selenium::WebDriver::Error::StaleElementReferenceError
|
10
|
+
Selenium::WebDriver::Error::NoAlertPresentError
|
11
|
+
]
|
5
12
|
|
6
13
|
# This is similiar but not entirely the same as Capybara::Node::Base#wait_until or Capybara::Session#wait_until
|
7
14
|
def patiently(seconds=Capybara.default_wait_time, &block)
|
@@ -52,6 +52,8 @@ module DocumentationGenerator
|
|
52
52
|
end
|
53
53
|
|
54
54
|
class StepDefinitionFile
|
55
|
+
|
56
|
+
FILE_COMMENT_END = 'FILE_COMMENT_END'
|
55
57
|
|
56
58
|
include CommentExtractor
|
57
59
|
|
@@ -64,7 +66,10 @@ module DocumentationGenerator
|
|
64
66
|
end
|
65
67
|
|
66
68
|
def extract_comment
|
67
|
-
|
69
|
+
if @code.include?(FILE_COMMENT_END)
|
70
|
+
file_comment = @code.split(FILE_COMMENT_END).first
|
71
|
+
@comment = parse_and_format_comment(file_comment)
|
72
|
+
end
|
68
73
|
end
|
69
74
|
|
70
75
|
def add_steps
|
@@ -4,10 +4,10 @@ gem 'rails', '~>3.2'
|
|
4
4
|
gem "sqlite3", :platform=>:ruby
|
5
5
|
gem 'ruby-debug', :platforms => :ruby_18
|
6
6
|
gem 'database_cleaner'
|
7
|
-
gem 'capybara', "~>1" # for ruby 1.8.7
|
7
|
+
gem 'capybara', "~>1" # for ruby 1.8.7 compatibility
|
8
8
|
gem 'cucumber', '1.3.2' # 1.3.3 uses an API that slimgems does not provide
|
9
9
|
|
10
10
|
gem 'rspec-rails'
|
11
|
-
gem 'spreewald', :path => '
|
11
|
+
gem 'spreewald', :path => '../../..'
|
12
12
|
|
13
13
|
gem 'haml-rails'
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
@@ -13,7 +13,7 @@ require 'cucumber/rails'
|
|
13
13
|
# require File.expand_path(File.join(File.dirname(__FILE__), "..", "support", "selectors"))
|
14
14
|
|
15
15
|
# load Spreewald steps
|
16
|
-
require File.expand_path('
|
16
|
+
require File.expand_path('../../../lib/spreewald/all_steps')
|
17
17
|
|
18
18
|
# Capybara defaults to XPath selectors rather than Webrat's default of CSS3. In
|
19
19
|
# order to ease the transition to Capybara we set the default here. If you'd
|
@@ -53,13 +53,13 @@ DatabaseCleaner.strategy = :transaction
|
|
53
53
|
# end
|
54
54
|
#
|
55
55
|
# Before('~@no-txn', '~@selenium', '~@culerity', '~@celerity', '~@javascript') do
|
56
|
-
# DatabaseCleaner.strategy = :
|
56
|
+
# DatabaseCleaner.strategy = :truncation
|
57
57
|
# end
|
58
58
|
#
|
59
59
|
|
60
60
|
# Possible values are :truncation and :transaction
|
61
61
|
# The :transaction strategy is faster, but might give you threading problems.
|
62
62
|
# See https://github.com/cucumber/cucumber-rails/blob/master/features/choose_javascript_database_strategy.feature
|
63
|
-
Cucumber::Rails::Database.javascript_strategy = :deletion
|
63
|
+
# Cucumber::Rails::Database.javascript_strategy = :deletion
|
64
64
|
|
65
65
|
Capybara.default_wait_time = 5
|
File without changes
|
@@ -0,0 +1,14 @@
|
|
1
|
+
source 'https://rubygems.org'
|
2
|
+
|
3
|
+
gem 'rails', '~>3.2'
|
4
|
+
gem 'sqlite3', :platform => :ruby
|
5
|
+
gem 'ruby-debug', :platforms => :ruby_18
|
6
|
+
gem 'database_cleaner'
|
7
|
+
gem 'capybara'#, "~>2"
|
8
|
+
gem 'cucumber'#, '1.3.2' # 1.3.3 uses an API that slimgems does not provide
|
9
|
+
gem 'selenium-webdriver'
|
10
|
+
|
11
|
+
gem 'rspec-rails'
|
12
|
+
gem 'spreewald', :path => '../../..'
|
13
|
+
|
14
|
+
gem 'haml-rails'
|
@@ -0,0 +1,167 @@
|
|
1
|
+
PATH
|
2
|
+
remote: ../../..
|
3
|
+
specs:
|
4
|
+
spreewald (0.9.0)
|
5
|
+
capybara
|
6
|
+
cucumber
|
7
|
+
cucumber-rails
|
8
|
+
|
9
|
+
GEM
|
10
|
+
remote: https://rubygems.org/
|
11
|
+
specs:
|
12
|
+
actionmailer (3.2.13)
|
13
|
+
actionpack (= 3.2.13)
|
14
|
+
mail (~> 2.5.3)
|
15
|
+
actionpack (3.2.13)
|
16
|
+
activemodel (= 3.2.13)
|
17
|
+
activesupport (= 3.2.13)
|
18
|
+
builder (~> 3.0.0)
|
19
|
+
erubis (~> 2.7.0)
|
20
|
+
journey (~> 1.0.4)
|
21
|
+
rack (~> 1.4.5)
|
22
|
+
rack-cache (~> 1.2)
|
23
|
+
rack-test (~> 0.6.1)
|
24
|
+
sprockets (~> 2.2.1)
|
25
|
+
activemodel (3.2.13)
|
26
|
+
activesupport (= 3.2.13)
|
27
|
+
builder (~> 3.0.0)
|
28
|
+
activerecord (3.2.13)
|
29
|
+
activemodel (= 3.2.13)
|
30
|
+
activesupport (= 3.2.13)
|
31
|
+
arel (~> 3.0.2)
|
32
|
+
tzinfo (~> 0.3.29)
|
33
|
+
activeresource (3.2.13)
|
34
|
+
activemodel (= 3.2.13)
|
35
|
+
activesupport (= 3.2.13)
|
36
|
+
activesupport (3.2.13)
|
37
|
+
i18n (= 0.6.1)
|
38
|
+
multi_json (~> 1.0)
|
39
|
+
arel (3.0.2)
|
40
|
+
builder (3.0.4)
|
41
|
+
capybara (2.2.1)
|
42
|
+
mime-types (>= 1.16)
|
43
|
+
nokogiri (>= 1.3.3)
|
44
|
+
rack (>= 1.0.0)
|
45
|
+
rack-test (>= 0.5.4)
|
46
|
+
xpath (~> 2.0)
|
47
|
+
childprocess (0.3.9)
|
48
|
+
ffi (~> 1.0, >= 1.0.11)
|
49
|
+
columnize (0.3.6)
|
50
|
+
cucumber (1.3.2)
|
51
|
+
builder (>= 2.1.2)
|
52
|
+
diff-lcs (>= 1.1.3)
|
53
|
+
gherkin (~> 2.12)
|
54
|
+
multi_json (>= 1.7.5, < 2.0)
|
55
|
+
multi_test (>= 0.0.2)
|
56
|
+
cucumber-rails (1.4.0)
|
57
|
+
capybara (>= 1.1.2)
|
58
|
+
cucumber (>= 1.2.0)
|
59
|
+
nokogiri (>= 1.5.0)
|
60
|
+
rails (>= 3.0.0)
|
61
|
+
database_cleaner (1.0.1)
|
62
|
+
diff-lcs (1.2.4)
|
63
|
+
erubis (2.7.0)
|
64
|
+
ffi (1.9.3)
|
65
|
+
gherkin (2.12.2)
|
66
|
+
multi_json (~> 1.3)
|
67
|
+
haml (4.0.3)
|
68
|
+
tilt
|
69
|
+
haml-rails (0.4)
|
70
|
+
actionpack (>= 3.1, < 4.1)
|
71
|
+
activesupport (>= 3.1, < 4.1)
|
72
|
+
haml (>= 3.1, < 4.1)
|
73
|
+
railties (>= 3.1, < 4.1)
|
74
|
+
hike (1.2.2)
|
75
|
+
i18n (0.6.1)
|
76
|
+
journey (1.0.4)
|
77
|
+
json (1.8.0)
|
78
|
+
linecache (0.46)
|
79
|
+
rbx-require-relative (> 0.0.4)
|
80
|
+
mail (2.5.4)
|
81
|
+
mime-types (~> 1.16)
|
82
|
+
treetop (~> 1.4.8)
|
83
|
+
mime-types (1.25.1)
|
84
|
+
mini_portile (0.5.2)
|
85
|
+
multi_json (1.8.4)
|
86
|
+
multi_test (0.0.2)
|
87
|
+
nokogiri (1.6.1)
|
88
|
+
mini_portile (~> 0.5.0)
|
89
|
+
polyglot (0.3.3)
|
90
|
+
rack (1.4.5)
|
91
|
+
rack-cache (1.2)
|
92
|
+
rack (>= 0.4)
|
93
|
+
rack-ssl (1.3.3)
|
94
|
+
rack
|
95
|
+
rack-test (0.6.2)
|
96
|
+
rack (>= 1.0)
|
97
|
+
rails (3.2.13)
|
98
|
+
actionmailer (= 3.2.13)
|
99
|
+
actionpack (= 3.2.13)
|
100
|
+
activerecord (= 3.2.13)
|
101
|
+
activeresource (= 3.2.13)
|
102
|
+
activesupport (= 3.2.13)
|
103
|
+
bundler (~> 1.0)
|
104
|
+
railties (= 3.2.13)
|
105
|
+
railties (3.2.13)
|
106
|
+
actionpack (= 3.2.13)
|
107
|
+
activesupport (= 3.2.13)
|
108
|
+
rack-ssl (~> 1.3.2)
|
109
|
+
rake (>= 0.8.7)
|
110
|
+
rdoc (~> 3.4)
|
111
|
+
thor (>= 0.14.6, < 2.0)
|
112
|
+
rake (10.0.4)
|
113
|
+
rbx-require-relative (0.0.9)
|
114
|
+
rdoc (3.12.2)
|
115
|
+
json (~> 1.4)
|
116
|
+
rspec-core (2.13.1)
|
117
|
+
rspec-expectations (2.13.0)
|
118
|
+
diff-lcs (>= 1.1.3, < 2.0)
|
119
|
+
rspec-mocks (2.13.1)
|
120
|
+
rspec-rails (2.13.2)
|
121
|
+
actionpack (>= 3.0)
|
122
|
+
activesupport (>= 3.0)
|
123
|
+
railties (>= 3.0)
|
124
|
+
rspec-core (~> 2.13.0)
|
125
|
+
rspec-expectations (~> 2.13.0)
|
126
|
+
rspec-mocks (~> 2.13.0)
|
127
|
+
ruby-debug (0.10.4)
|
128
|
+
columnize (>= 0.1)
|
129
|
+
ruby-debug-base (~> 0.10.4.0)
|
130
|
+
ruby-debug-base (0.10.4)
|
131
|
+
linecache (>= 0.3)
|
132
|
+
rubyzip (1.1.0)
|
133
|
+
selenium-webdriver (2.39.0)
|
134
|
+
childprocess (>= 0.2.5)
|
135
|
+
multi_json (~> 1.0)
|
136
|
+
rubyzip (~> 1.0)
|
137
|
+
websocket (~> 1.0.4)
|
138
|
+
sprockets (2.2.2)
|
139
|
+
hike (~> 1.2)
|
140
|
+
multi_json (~> 1.0)
|
141
|
+
rack (~> 1.0)
|
142
|
+
tilt (~> 1.1, != 1.3.0)
|
143
|
+
sqlite3 (1.3.8)
|
144
|
+
thor (0.18.1)
|
145
|
+
tilt (1.4.1)
|
146
|
+
treetop (1.4.12)
|
147
|
+
polyglot
|
148
|
+
polyglot (>= 0.3.1)
|
149
|
+
tzinfo (0.3.37)
|
150
|
+
websocket (1.0.7)
|
151
|
+
xpath (2.0.0)
|
152
|
+
nokogiri (~> 1.3)
|
153
|
+
|
154
|
+
PLATFORMS
|
155
|
+
ruby
|
156
|
+
|
157
|
+
DEPENDENCIES
|
158
|
+
capybara
|
159
|
+
cucumber
|
160
|
+
database_cleaner
|
161
|
+
haml-rails
|
162
|
+
rails (~> 3.2)
|
163
|
+
rspec-rails
|
164
|
+
ruby-debug
|
165
|
+
selenium-webdriver
|
166
|
+
spreewald!
|
167
|
+
sqlite3
|
@@ -0,0 +1,13 @@
|
|
1
|
+
#!/usr/bin/env rake
|
2
|
+
require 'cucumber/rake/task'
|
3
|
+
|
4
|
+
desc 'Default: Run all specs for a specific rails version.'
|
5
|
+
task :default => :features
|
6
|
+
|
7
|
+
desc 'Run all specs for rails 3.2'
|
8
|
+
Cucumber::Rake::Task.new(:features) do |t|
|
9
|
+
# tell cucumber where it finds it files (subdirectories and symlinks are confusing it)
|
10
|
+
feature = ENV['FEATURE'] || "features/shared"
|
11
|
+
t.cucumber_opts = "--require features --require features/shared #{feature}"
|
12
|
+
end
|
13
|
+
|
@@ -0,0 +1 @@
|
|
1
|
+
This is a dummy file.
|
File without changes
|
@@ -0,0 +1 @@
|
|
1
|
+
= link_to 'Home', '/static_pages/home'
|
@@ -32,8 +32,25 @@ Feature: Web steps
|
|
32
32
|
| Textarea control | Textarea control value |
|
33
33
|
| Empty control | |
|
34
34
|
|
35
|
+
|
35
36
|
Scenario: /^"([^"]*)" should be selected for "([^"]*)"$/
|
36
37
|
When I go to "/forms/form1"
|
37
38
|
Then "Label 2" should be selected for "Select control"
|
38
39
|
Then "Label 1" should be selected for "Select control without selection"
|
39
40
|
|
41
|
+
|
42
|
+
Scenario: /^I go back$/
|
43
|
+
Given I go to "/static_pages/link_to_home"
|
44
|
+
And I follow "Home"
|
45
|
+
|
46
|
+
When I go back
|
47
|
+
Then I should be on "/static_pages/link_to_home"
|
48
|
+
|
49
|
+
|
50
|
+
@javascript
|
51
|
+
Scenario: /^I go back$/
|
52
|
+
Given I go to "/static_pages/link_to_home"
|
53
|
+
And I follow "Home"
|
54
|
+
|
55
|
+
When I go back
|
56
|
+
Then I should be on "/static_pages/link_to_home"
|
metadata
CHANGED
@@ -1,13 +1,13 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: spreewald
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
hash:
|
4
|
+
hash: 57
|
5
5
|
prerelease:
|
6
6
|
segments:
|
7
7
|
- 0
|
8
8
|
- 9
|
9
|
-
-
|
10
|
-
version: 0.9.
|
9
|
+
- 1
|
10
|
+
version: 0.9.1
|
11
11
|
platform: ruby
|
12
12
|
authors:
|
13
13
|
- Tobias Kraze
|
@@ -15,7 +15,7 @@ autorequire:
|
|
15
15
|
bindir: bin
|
16
16
|
cert_chain: []
|
17
17
|
|
18
|
-
date: 2014-
|
18
|
+
date: 2014-03-04 00:00:00 +01:00
|
19
19
|
default_executable:
|
20
20
|
dependencies:
|
21
21
|
- !ruby/object:Gem::Dependency
|
@@ -71,7 +71,6 @@ extra_rdoc_files: []
|
|
71
71
|
|
72
72
|
files:
|
73
73
|
- .gitignore
|
74
|
-
- .travis.yml
|
75
74
|
- LICENSE
|
76
75
|
- README.md
|
77
76
|
- Rakefile
|
@@ -113,29 +112,36 @@ files:
|
|
113
112
|
- tests/rails-2.3/features/support/paths.rb
|
114
113
|
- tests/rails-2.3/scripts/generate
|
115
114
|
- tests/rails-3.2/.DS_Store
|
116
|
-
- tests/rails-3.2/Gemfile
|
117
|
-
- tests/rails-3.2/Gemfile.lock
|
118
|
-
- tests/rails-3.2/Rakefile
|
119
|
-
- tests/rails-3.2/config/application.rb
|
120
|
-
- tests/rails-3.2/config/boot.rb
|
121
|
-
- tests/rails-3.2/config/database.yml
|
122
|
-
- tests/rails-3.2/config/environment.rb
|
123
|
-
- tests/rails-3.2/config/initializers/backtrace_silencers.rb
|
124
|
-
- tests/rails-3.2/config/initializers/inflections.rb
|
125
|
-
- tests/rails-3.2/config/initializers/mime_types.rb
|
126
|
-
- tests/rails-3.2/config/initializers/secret_token.rb
|
127
|
-
- tests/rails-3.2/config/initializers/session_store.rb
|
128
|
-
- tests/rails-3.2/config/routes.rb
|
129
|
-
- tests/rails-3.2/features/support/env.rb
|
130
|
-
- tests/rails-3.2/features/support/paths.rb
|
115
|
+
- tests/rails-3.2/capybara-1/Gemfile
|
116
|
+
- tests/rails-3.2/capybara-1/Gemfile.lock
|
117
|
+
- tests/rails-3.2/capybara-1/Rakefile
|
118
|
+
- tests/rails-3.2/capybara-1/config/application.rb
|
119
|
+
- tests/rails-3.2/capybara-1/config/boot.rb
|
120
|
+
- tests/rails-3.2/capybara-1/config/database.yml
|
121
|
+
- tests/rails-3.2/capybara-1/config/environment.rb
|
122
|
+
- tests/rails-3.2/capybara-1/config/initializers/backtrace_silencers.rb
|
123
|
+
- tests/rails-3.2/capybara-1/config/initializers/inflections.rb
|
124
|
+
- tests/rails-3.2/capybara-1/config/initializers/mime_types.rb
|
125
|
+
- tests/rails-3.2/capybara-1/config/initializers/secret_token.rb
|
126
|
+
- tests/rails-3.2/capybara-1/config/initializers/session_store.rb
|
127
|
+
- tests/rails-3.2/capybara-1/config/routes.rb
|
128
|
+
- tests/rails-3.2/capybara-1/features/support/env.rb
|
129
|
+
- tests/rails-3.2/capybara-1/features/support/paths.rb
|
130
|
+
- tests/rails-3.2/capybara-2/Gemfile
|
131
|
+
- tests/rails-3.2/capybara-2/Gemfile.lock
|
132
|
+
- tests/rails-3.2/capybara-2/Rakefile
|
133
|
+
- tests/rails-3.2/capybara-2/public/favicon.ico
|
131
134
|
- tests/shared/app/controllers/application_controller.rb
|
132
135
|
- tests/shared/app/controllers/emails_controller.rb
|
133
136
|
- tests/shared/app/controllers/forms_controller.rb
|
137
|
+
- tests/shared/app/controllers/static_pages_controller.rb
|
134
138
|
- tests/shared/app/controllers/tables_controller.rb
|
135
139
|
- tests/shared/app/models/mailer.rb
|
136
140
|
- tests/shared/app/views/forms/form1.html.haml
|
137
141
|
- tests/shared/app/views/forms/form2.html.haml
|
138
142
|
- tests/shared/app/views/layouts/application.html.haml
|
143
|
+
- tests/shared/app/views/static_pages/home.html.haml
|
144
|
+
- tests/shared/app/views/static_pages/link_to_home.html.haml
|
139
145
|
- tests/shared/app/views/tables/table1.html.haml
|
140
146
|
- tests/shared/config/database.yml
|
141
147
|
- tests/shared/db/migrate/.gitignore
|
@@ -198,29 +204,36 @@ test_files:
|
|
198
204
|
- tests/rails-2.3/features/support/paths.rb
|
199
205
|
- tests/rails-2.3/scripts/generate
|
200
206
|
- tests/rails-3.2/.DS_Store
|
201
|
-
- tests/rails-3.2/Gemfile
|
202
|
-
- tests/rails-3.2/Gemfile.lock
|
203
|
-
- tests/rails-3.2/Rakefile
|
204
|
-
- tests/rails-3.2/config/application.rb
|
205
|
-
- tests/rails-3.2/config/boot.rb
|
206
|
-
- tests/rails-3.2/config/database.yml
|
207
|
-
- tests/rails-3.2/config/environment.rb
|
208
|
-
- tests/rails-3.2/config/initializers/backtrace_silencers.rb
|
209
|
-
- tests/rails-3.2/config/initializers/inflections.rb
|
210
|
-
- tests/rails-3.2/config/initializers/mime_types.rb
|
211
|
-
- tests/rails-3.2/config/initializers/secret_token.rb
|
212
|
-
- tests/rails-3.2/config/initializers/session_store.rb
|
213
|
-
- tests/rails-3.2/config/routes.rb
|
214
|
-
- tests/rails-3.2/features/support/env.rb
|
215
|
-
- tests/rails-3.2/features/support/paths.rb
|
207
|
+
- tests/rails-3.2/capybara-1/Gemfile
|
208
|
+
- tests/rails-3.2/capybara-1/Gemfile.lock
|
209
|
+
- tests/rails-3.2/capybara-1/Rakefile
|
210
|
+
- tests/rails-3.2/capybara-1/config/application.rb
|
211
|
+
- tests/rails-3.2/capybara-1/config/boot.rb
|
212
|
+
- tests/rails-3.2/capybara-1/config/database.yml
|
213
|
+
- tests/rails-3.2/capybara-1/config/environment.rb
|
214
|
+
- tests/rails-3.2/capybara-1/config/initializers/backtrace_silencers.rb
|
215
|
+
- tests/rails-3.2/capybara-1/config/initializers/inflections.rb
|
216
|
+
- tests/rails-3.2/capybara-1/config/initializers/mime_types.rb
|
217
|
+
- tests/rails-3.2/capybara-1/config/initializers/secret_token.rb
|
218
|
+
- tests/rails-3.2/capybara-1/config/initializers/session_store.rb
|
219
|
+
- tests/rails-3.2/capybara-1/config/routes.rb
|
220
|
+
- tests/rails-3.2/capybara-1/features/support/env.rb
|
221
|
+
- tests/rails-3.2/capybara-1/features/support/paths.rb
|
222
|
+
- tests/rails-3.2/capybara-2/Gemfile
|
223
|
+
- tests/rails-3.2/capybara-2/Gemfile.lock
|
224
|
+
- tests/rails-3.2/capybara-2/Rakefile
|
225
|
+
- tests/rails-3.2/capybara-2/public/favicon.ico
|
216
226
|
- tests/shared/app/controllers/application_controller.rb
|
217
227
|
- tests/shared/app/controllers/emails_controller.rb
|
218
228
|
- tests/shared/app/controllers/forms_controller.rb
|
229
|
+
- tests/shared/app/controllers/static_pages_controller.rb
|
219
230
|
- tests/shared/app/controllers/tables_controller.rb
|
220
231
|
- tests/shared/app/models/mailer.rb
|
221
232
|
- tests/shared/app/views/forms/form1.html.haml
|
222
233
|
- tests/shared/app/views/forms/form2.html.haml
|
223
234
|
- tests/shared/app/views/layouts/application.html.haml
|
235
|
+
- tests/shared/app/views/static_pages/home.html.haml
|
236
|
+
- tests/shared/app/views/static_pages/link_to_home.html.haml
|
224
237
|
- tests/shared/app/views/tables/table1.html.haml
|
225
238
|
- tests/shared/config/database.yml
|
226
239
|
- tests/shared/db/migrate/.gitignore
|