spreewald 0.9.0 → 0.9.1
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.
- 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
|