cucumber-rails 1.0.2 → 1.0.3

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/.rvmrc CHANGED
@@ -1 +1 @@
1
- rvm @cucumber --create
1
+ rvm gemset use cucumber
data/Gemfile.lock CHANGED
@@ -1,93 +1,93 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- cucumber-rails (1.0.2)
5
- capybara (>= 1.0.0)
6
- cucumber (~> 1.0.0)
7
- nokogiri (>= 1.4.6)
4
+ cucumber-rails (1.0.3)
5
+ capybara (>= 1.1.1)
6
+ cucumber (~> 1.0.4)
7
+ nokogiri (>= 1.5.0)
8
8
 
9
9
  GEM
10
10
  remote: http://rubygems.org/
11
11
  specs:
12
- actionmailer (3.1.0.rc4)
13
- actionpack (= 3.1.0.rc4)
12
+ actionmailer (3.1.0)
13
+ actionpack (= 3.1.0)
14
14
  mail (~> 2.3.0)
15
- actionpack (3.1.0.rc4)
16
- activemodel (= 3.1.0.rc4)
17
- activesupport (= 3.1.0.rc4)
15
+ actionpack (3.1.0)
16
+ activemodel (= 3.1.0)
17
+ activesupport (= 3.1.0)
18
18
  builder (~> 3.0.0)
19
19
  erubis (~> 2.7.0)
20
20
  i18n (~> 0.6)
21
- rack (~> 1.3.0)
22
- rack-cache (~> 1.0.1)
23
- rack-mount (~> 0.8.1)
24
- rack-test (~> 0.6.0)
25
- sprockets (~> 2.0.0.beta.10)
26
- tzinfo (~> 0.3.27)
27
- activemodel (3.1.0.rc4)
28
- activesupport (= 3.1.0.rc4)
29
- bcrypt-ruby (~> 2.1.4)
21
+ rack (~> 1.3.2)
22
+ rack-cache (~> 1.0.3)
23
+ rack-mount (~> 0.8.2)
24
+ rack-test (~> 0.6.1)
25
+ sprockets (~> 2.0.0)
26
+ activemodel (3.1.0)
27
+ activesupport (= 3.1.0)
28
+ bcrypt-ruby (~> 3.0.0)
30
29
  builder (~> 3.0.0)
31
30
  i18n (~> 0.6)
32
- activerecord (3.1.0.rc4)
33
- activemodel (= 3.1.0.rc4)
34
- activesupport (= 3.1.0.rc4)
35
- arel (~> 2.1.1)
36
- tzinfo (~> 0.3.27)
37
- activeresource (3.1.0.rc4)
38
- activemodel (= 3.1.0.rc4)
39
- activesupport (= 3.1.0.rc4)
40
- activesupport (3.1.0.rc4)
31
+ activerecord (3.1.0)
32
+ activemodel (= 3.1.0)
33
+ activesupport (= 3.1.0)
34
+ arel (~> 2.2.1)
35
+ tzinfo (~> 0.3.29)
36
+ activeresource (3.1.0)
37
+ activemodel (= 3.1.0)
38
+ activesupport (= 3.1.0)
39
+ activesupport (3.1.0)
41
40
  multi_json (~> 1.0)
42
- ansi (1.2.5)
43
- arel (2.1.1)
44
- aruba (0.4.3)
41
+ ansi (1.3.0)
42
+ arel (2.2.1)
43
+ aruba (0.4.6)
45
44
  bcat (>= 0.6.1)
46
- childprocess (>= 0.1.9)
47
- cucumber (>= 0.10.7)
45
+ childprocess (>= 0.2.0)
46
+ cucumber (>= 1.0.2)
48
47
  rdiscount (>= 1.6.8)
49
48
  rspec (>= 2.6.0)
50
49
  bcat (0.6.1)
51
50
  rack (~> 1.0)
52
- bcrypt-ruby (2.1.4)
51
+ bcrypt-ruby (3.0.0)
53
52
  bson (1.3.1)
54
53
  bson_ext (1.3.1)
55
54
  builder (3.0.0)
56
- capybara (1.0.0)
55
+ capybara (1.1.1)
57
56
  mime-types (>= 1.16)
58
57
  nokogiri (>= 1.3.3)
59
58
  rack (>= 1.0.0)
60
59
  rack-test (>= 0.5.4)
61
- selenium-webdriver (~> 0.2.0)
60
+ selenium-webdriver (~> 2.0)
62
61
  xpath (~> 0.1.4)
63
- childprocess (0.1.9)
62
+ childprocess (0.2.2)
64
63
  ffi (~> 1.0.6)
65
64
  coffee-script (2.2.0)
66
65
  coffee-script-source
67
66
  execjs
68
- coffee-script-source (1.1.1)
69
- cucumber (1.0.0)
67
+ coffee-script-source (1.1.2)
68
+ cucumber (1.0.4)
70
69
  builder (>= 2.1.2)
71
70
  diff-lcs (>= 1.1.2)
72
- gherkin (~> 2.4.1)
71
+ gherkin (~> 2.4.18)
73
72
  json (>= 1.4.6)
74
- term-ansicolor (>= 1.0.5)
73
+ term-ansicolor (>= 1.0.6)
75
74
  database_cleaner (0.6.7)
76
- diff-lcs (1.1.2)
75
+ diff-lcs (1.1.3)
77
76
  erubis (2.7.0)
78
- execjs (1.2.0)
77
+ execjs (1.2.4)
79
78
  multi_json (~> 1.0)
80
- factory_girl (2.0.0.beta2)
79
+ factory_girl (2.1.0)
81
80
  ffi (1.0.9)
82
- gherkin (2.4.1)
81
+ gherkin (2.4.18)
83
82
  json (>= 1.4.6)
84
- hike (1.1.0)
83
+ hike (1.2.1)
85
84
  i18n (0.6.0)
86
- jquery-rails (1.0.12)
85
+ jquery-rails (1.0.14)
87
86
  railties (~> 3.0)
88
87
  thor (~> 0.14)
89
- json (1.5.3)
90
- json_pure (1.5.3)
88
+ json (1.5.4)
89
+ json_pure (1.5.4)
90
+ spruz (~> 0.2.8)
91
91
  mail (2.3.0)
92
92
  i18n (>= 0.4.0)
93
93
  mime-types (~> 1.16)
@@ -95,40 +95,40 @@ GEM
95
95
  mime-types (1.16)
96
96
  mongo (1.3.1)
97
97
  bson (>= 1.3.1)
98
- mongoid (2.0.2)
98
+ mongoid (2.2.0)
99
99
  activemodel (~> 3.0)
100
100
  mongo (~> 1.3)
101
101
  tzinfo (~> 0.3.22)
102
102
  multi_json (1.0.3)
103
- nokogiri (1.4.6)
104
- polyglot (0.3.1)
105
- rack (1.3.0)
106
- rack-cache (1.0.2)
103
+ nokogiri (1.5.0)
104
+ polyglot (0.3.2)
105
+ rack (1.3.2)
106
+ rack-cache (1.0.3)
107
107
  rack (>= 0.4)
108
- rack-mount (0.8.1)
108
+ rack-mount (0.8.3)
109
109
  rack (>= 1.0.0)
110
110
  rack-ssl (1.3.2)
111
111
  rack
112
- rack-test (0.6.0)
112
+ rack-test (0.6.1)
113
113
  rack (>= 1.0)
114
- rails (3.1.0.rc4)
115
- actionmailer (= 3.1.0.rc4)
116
- actionpack (= 3.1.0.rc4)
117
- activerecord (= 3.1.0.rc4)
118
- activeresource (= 3.1.0.rc4)
119
- activesupport (= 3.1.0.rc4)
114
+ rails (3.1.0)
115
+ actionmailer (= 3.1.0)
116
+ actionpack (= 3.1.0)
117
+ activerecord (= 3.1.0)
118
+ activeresource (= 3.1.0)
119
+ activesupport (= 3.1.0)
120
120
  bundler (~> 1.0)
121
- railties (= 3.1.0.rc4)
122
- railties (3.1.0.rc4)
123
- actionpack (= 3.1.0.rc4)
124
- activesupport (= 3.1.0.rc4)
121
+ railties (= 3.1.0)
122
+ railties (3.1.0)
123
+ actionpack (= 3.1.0)
124
+ activesupport (= 3.1.0)
125
125
  rack-ssl (~> 1.3.2)
126
126
  rake (>= 0.8.7)
127
127
  rdoc (~> 3.4)
128
128
  thor (~> 0.14.6)
129
129
  rake (0.9.2)
130
130
  rdiscount (1.6.8)
131
- rdoc (3.6.1)
131
+ rdoc (3.9.4)
132
132
  rspec (2.6.0)
133
133
  rspec-core (~> 2.6.0)
134
134
  rspec-expectations (~> 2.6.0)
@@ -143,55 +143,55 @@ GEM
143
143
  railties (~> 3.0)
144
144
  rspec (~> 2.6.0)
145
145
  rubyzip (0.9.4)
146
- sass (3.1.3)
147
- selenium-webdriver (0.2.2)
148
- childprocess (>= 0.1.9)
146
+ sass (3.1.7)
147
+ selenium-webdriver (2.5.0)
148
+ childprocess (>= 0.2.1)
149
149
  ffi (>= 1.0.7)
150
150
  json_pure
151
151
  rubyzip
152
- sprockets (2.0.0.beta.10)
153
- hike (~> 1.0)
152
+ sprockets (2.0.0)
153
+ hike (~> 1.2)
154
154
  rack (~> 1.0)
155
155
  tilt (!= 1.3.0, ~> 1.1)
156
- sqlite3 (1.3.3)
157
- sqlite3-ruby (1.3.3)
158
- sqlite3 (>= 1.3.3)
159
- term-ansicolor (1.0.5)
156
+ spruz (0.2.13)
157
+ sqlite3 (1.3.4)
158
+ term-ansicolor (1.0.6)
160
159
  thor (0.14.6)
161
- tilt (1.3.2)
162
- treetop (1.4.9)
160
+ tilt (1.3.3)
161
+ treetop (1.4.10)
162
+ polyglot
163
163
  polyglot (>= 0.3.1)
164
164
  turn (0.8.2)
165
165
  ansi (>= 1.2.2)
166
- tzinfo (0.3.28)
167
- uglifier (1.0.0)
166
+ tzinfo (0.3.29)
167
+ uglifier (1.0.3)
168
168
  execjs (>= 0.3.0)
169
169
  multi_json (>= 1.0.2)
170
170
  xpath (0.1.4)
171
171
  nokogiri (~> 1.3)
172
- yard (0.7.1)
172
+ yard (0.7.2)
173
173
 
174
174
  PLATFORMS
175
175
  ruby
176
176
 
177
177
  DEPENDENCIES
178
- aruba (>= 0.4.3)
178
+ aruba (>= 0.4.6)
179
179
  bcat (= 0.6.1)
180
180
  bson_ext (>= 1.3.1)
181
- bundler (>= 1.0.15)
181
+ bundler (>= 1.0.18)
182
182
  coffee-script (>= 2.2.0)
183
183
  cucumber-rails!
184
184
  database_cleaner (>= 0.6.7)
185
- factory_girl (>= 2.0.0.beta2)
186
- jquery-rails (>= 1.0.12)
187
- mongoid (>= 2.0.2)
188
- rails (>= 3.1.0.rc4)
185
+ factory_girl (>= 2.1.0)
186
+ jquery-rails (>= 1.0.14)
187
+ mongoid (>= 2.2.0)
188
+ rails (>= 3.1.0)
189
189
  rake (>= 0.9.2)
190
190
  rdiscount (= 1.6.8)
191
191
  rspec (>= 2.6.0)
192
192
  rspec-rails (>= 2.6.1)
193
- sass (>= 3.1.3)
194
- sqlite3-ruby (>= 1.3.3)
193
+ sass (>= 3.1.7)
194
+ sqlite3 (>= 1.3.4)
195
195
  turn (>= 0.8.2)
196
- uglifier (>= 1.0.0)
197
- yard (= 0.7.1)
196
+ uglifier (>= 1.0.3)
197
+ yard (= 0.7.2)
data/History.md CHANGED
@@ -1,3 +1,13 @@
1
+ ## [v1.0.3](https://github.com/cucumber/cucumber-rails/compare/v1.0.2...v1.0.3)
2
+
3
+ ### Bugfixes
4
+ * sqlite3-ruby is now sqlite3 ([#158](https://github.com/cucumber/cucumber-rails/pull/158) Trung Le)
5
+ * Broken link in the USAGE file of the features generator ((#156)[https://github.com/cucumber/cucumber-rails/pull/156] Pablo Alonso García)
6
+ * Rails destroy cucumber:feature deletes the steps folder, even though it's not empty. ((#154)[https://github.com/cucumber/cucumber-rails/pull/154], (#111)[https://github.com/cucumber/cucumber-rails/issues/111] mblake)
7
+ * Adjust select_date, select_time xpaths so they work when scoped in the document ((#151)[https://github.com/cucumber/cucumber-rails/pull/151] Thomas Walpole)
8
+ * Extend javascript emulation to handle rails CSRF protection ((#164)[https://github.com/cucumber/cucumber-rails/pull/164] Jonathon M. Abbott)
9
+ * Add steps for finding fields with errors ((#162)[https://github.com/cucumber/cucumber-rails/pull/162] Mike Burns)
10
+
1
11
  ## [v1.0.2](https://github.com/cucumber/cucumber-rails/compare/v1.0.1...v1.0.2)
2
12
 
3
13
  ### Bugfixes
data/LICENSE CHANGED
@@ -1,6 +1,6 @@
1
1
  The MIT License
2
2
 
3
- Copyright (c) 2008,2009,2010 Aslak Hellesøy and the Cucumber Team.
3
+ Copyright (c) 2008,2009,2010,2011 Aslak Hellesøy and the Cucumber Team.
4
4
 
5
5
  Permission is hereby granted, free of charge, to any person obtaining
6
6
  a copy of this software and associated documentation files (the
data/README.md CHANGED
@@ -1,6 +1,8 @@
1
1
  # Cucumber-Rails
2
2
 
3
- Cucumber-Rails brings Cucumber to Rails3. It contains 2 generators - one
3
+ Cucumber-Rails brings Cucumber to Rails 3.x. For Rails 2x support, see the [Cucumber Wiki](https://github.com/cucumber/cucumber/wiki/Ruby-on-Rails).
4
+
5
+ Cucumber-Rails contains 2 generators - one
4
6
  for bootstrapping your Rails app for Cucumber, and a second one for generating features.
5
7
 
6
8
  Cucumber-Rails also contains Cucumber Step Definitions that wrap Capybara,
@@ -3,38 +3,37 @@ $LOAD_PATH.unshift File.expand_path("../lib", __FILE__)
3
3
 
4
4
  Gem::Specification.new do |s|
5
5
  s.name = 'cucumber-rails'
6
- s.version = '1.0.2'
6
+ s.version = '1.0.3'
7
7
  s.authors = ["Aslak Hellesøy", "Dennis Blöte", "Rob Holland"]
8
8
  s.description = "Cucumber Generators and Runtime for Rails"
9
9
  s.summary = "#{s.name}-#{s.version}"
10
10
  s.email = 'cukes@googlegroups.com'
11
11
  s.homepage = "http://cukes.info"
12
12
 
13
- s.add_dependency('cucumber', '~> 1.0.0')
14
- s.add_dependency('nokogiri', '>= 1.4.6')
15
- s.add_dependency('capybara', '>= 1.0.0')
16
- s.add_development_dependency('rails', '>= 3.1.0.rc4')
13
+ s.add_runtime_dependency('cucumber', '~> 1.0.4')
14
+ s.add_runtime_dependency('nokogiri', '>= 1.5.0')
15
+ s.add_runtime_dependency('capybara', '>= 1.1.1')
16
+ s.add_development_dependency('rails', '>= 3.1.0')
17
17
  s.add_development_dependency('rake', '>= 0.9.2')
18
- s.add_development_dependency('bundler', '>= 1.0.15')
19
- s.add_development_dependency('aruba', '>= 0.4.3')
20
- s.add_development_dependency('sqlite3-ruby', '>= 1.3.3')
18
+ s.add_development_dependency('bundler', '>= 1.0.18')
19
+ s.add_development_dependency('aruba', '>= 0.4.6')
20
+ s.add_development_dependency('sqlite3', '>= 1.3.4')
21
21
  s.add_development_dependency('rspec', '>= 2.6.0')
22
22
  s.add_development_dependency('rspec-rails', '>= 2.6.1')
23
- s.add_development_dependency('factory_girl', '>= 2.0.0.beta2')
23
+ s.add_development_dependency('factory_girl', '>= 2.1.0')
24
24
  s.add_development_dependency('database_cleaner', '>= 0.6.7')
25
- s.add_development_dependency('mongoid', '>= 2.0.2')
25
+ s.add_development_dependency('mongoid', '>= 2.2.0')
26
26
  s.add_development_dependency('bson_ext', '>= 1.3.1')
27
- # s.add_development_dependency('akephalos', '>= 0.2.5')
28
27
 
29
28
  # Various Stuff that Rails 3.1 puts inside apps.
30
29
  s.add_development_dependency('turn', '>= 0.8.2')
31
- s.add_development_dependency('sass', '>= 3.1.3')
30
+ s.add_development_dependency('sass', '>= 3.1.7')
32
31
  s.add_development_dependency('coffee-script', '>= 2.2.0')
33
- s.add_development_dependency('uglifier', '>= 1.0.0')
34
- s.add_development_dependency('jquery-rails', '>= 1.0.12')
32
+ s.add_development_dependency('uglifier', '>= 1.0.3')
33
+ s.add_development_dependency('jquery-rails', '>= 1.0.14')
35
34
 
36
35
  # For Documentation:
37
- s.add_development_dependency('yard', '= 0.7.1')
36
+ s.add_development_dependency('yard', '= 0.7.2')
38
37
  s.add_development_dependency('rdiscount', '= 1.6.8')
39
38
  s.add_development_dependency('bcat', '= 0.6.1')
40
39
 
@@ -32,3 +32,57 @@ Feature: Emulate Javascript
32
32
  3 steps (3 passed)
33
33
  """
34
34
 
35
+ Scenario: Pass on the CSRF token
36
+ Given I have created a new Rails 3 app "widgets" with cucumber-rails support
37
+ And I successfully run `rails generate scaffold widget name:string`
38
+ And I successfully run `sed -i -e 's/forgery_protection *= false/forgery_protection = true/' config/environments/test.rb`
39
+ And I successfully run `rails generate controller session establish`
40
+ And I write to "app/controllers/session_controller.rb" with:
41
+ """
42
+ class SessionController < ApplicationController
43
+ def establish
44
+ session[:verified] = true
45
+ end
46
+ end
47
+ """
48
+ And I write to "app/controllers/application_controller.rb" with:
49
+ """
50
+ class ApplicationController < ActionController::Base
51
+ protect_from_forgery
52
+ before_filter :except => :establish do
53
+ render :text => "denied", :status => :forbidden and return false unless session[:verified]
54
+ end
55
+ end
56
+ """
57
+ And I write to "features/f.feature" with:
58
+ """
59
+ Feature: Widget inventory
60
+ Scenario: Delete a widget
61
+ Given there is a widget named "wrench"
62
+ When I go to the session establish page
63
+ And I go to the widgets page
64
+ Then I should see "wrench"
65
+ When I follow "Destroy"
66
+ Then I should not see "denied"
67
+ And I should be on the widgets page
68
+ And I should not see "wrench"
69
+ """
70
+ And I write to "features/step_definitions/s.rb" with:
71
+ """
72
+ Given /^there is a widget named "([^"]*)"$/ do |name|
73
+ Factory(:widget, :name => name)
74
+ end
75
+ """
76
+ And I write to "features/support/factories.rb" with:
77
+ """
78
+ Factory.define :widget do |f|
79
+ f.name 'testwidget'
80
+ end
81
+ """
82
+ When I run `bundle exec rake db:migrate`
83
+ And I run `bundle exec rake cucumber`
84
+ Then it should pass with:
85
+ """
86
+ 1 scenario (1 passed)
87
+ 8 steps (8 passed)
88
+ """
@@ -0,0 +1,70 @@
1
+ Feature: Detecting a field has errors on it
2
+
3
+ Scenario: A form with some fields with errors
4
+ Given I have created a new Rails 3 app "enemies" with cucumber-rails support
5
+ And I successfully run `rails generate scaffold enemy name:string nickname:string`
6
+ And I write to "app/models/enemy.rb" with:
7
+ """
8
+ class Enemy < ActiveRecord::Base
9
+ validates_presence_of :name
10
+ end
11
+ """
12
+ And I write to "features/f.feature" with:
13
+ """
14
+ Feature: Enemy form
15
+ Scenario: Making an enemy
16
+ Given I am on the new enemy page
17
+ And I press "Create Enemy"
18
+ Then the "Name" field should have the error "can't be blank"
19
+ And the "Nickname" field should have no error
20
+ """
21
+ When I run `bundle exec rake db:migrate`
22
+ And I run `bundle exec rake cucumber`
23
+ Then it should pass with:
24
+ """
25
+ 1 scenario (1 passed)
26
+ 4 steps (4 passed)
27
+ """
28
+
29
+ Scenario: A formtastic form with some fields with errors
30
+ Given I have created a new Rails 3 app "enemies" with cucumber-rails support
31
+ And I append to "Gemfile" with:
32
+ """
33
+ gem "formtastic"
34
+ """
35
+ And I successfully run `bundle`
36
+ And I successfully run `rails generate scaffold enemy name:string nickname:string`
37
+ And I write to "app/models/enemy.rb" with:
38
+ """
39
+ class Enemy < ActiveRecord::Base
40
+ validates_presence_of :name
41
+ end
42
+ """
43
+ And I write to "features/f.feature" with:
44
+ """
45
+ Feature: Enemy form
46
+ Scenario: Making an enemy
47
+ Given I am on the new enemy page
48
+ And I press "Create Enemy"
49
+ Then the "Name" field should have the error "can't be blank"
50
+ And the "Nickname" field should have no error
51
+ """
52
+ And I write to "app/views/enemies/new.html.erb" with:
53
+ """
54
+ <%= semantic_form_for(@enemy) do |form| %>
55
+ <%= form.inputs do %>
56
+ <%= form.input :name %>
57
+ <%= form.input :nickname %>
58
+ <% end %>
59
+ <%= form.buttons do %>
60
+ <%= form.commit_button %>
61
+ <% end %>
62
+ <% end %>
63
+ """
64
+ When I run `bundle exec rake db:migrate`
65
+ And I run `bundle exec rake cucumber`
66
+ Then it should pass with:
67
+ """
68
+ 1 scenario (1 passed)
69
+ 4 steps (4 passed)
70
+ """
@@ -96,4 +96,46 @@ Feature: Select dates
96
96
  """
97
97
  1 scenario (1 passed)
98
98
  6 steps (6 passed)
99
- """
99
+ """
100
+
101
+ Scenario: Select correct date when scoped
102
+ Given I successfully run `bundle exec rails g scaffold appointment name:string when:date`
103
+ And I write to "features/create_appointment.feature" with:
104
+ """
105
+ Feature: Create appointments
106
+ Scenario: Constitution on May 17
107
+ Given I am on the new appointment page
108
+ And I fill in "Norway's constitution" for "Name"
109
+ And I select "2009-02-20" as the "When" date
110
+ And I select "2009-03-20" as the "When" date within "#extra"
111
+ And I press "Create Appointment"
112
+ Then I should see "Norway's constitution"
113
+ And I should see "2009-02-20"
114
+ """
115
+ And I write to "app/views/appointments/_form.html.erb" with:
116
+ """
117
+ <%= form_for(@appointment) do |f| %>
118
+ <div class="field">
119
+ <%= f.label :name %><br />
120
+ <%= f.text_field :name %>
121
+ </div>
122
+ <div class="field">
123
+ <%= f.label :when, :for => "appointment_when_1i" %><br />
124
+ <%= f.date_select :when %>
125
+ </div>
126
+ <div class="actions">
127
+ <%= f.submit %>
128
+ </div>
129
+ <% end %>
130
+ <div id="extra">
131
+ <%= label_tag 'extra_when_1i', 'When' %>
132
+ <%= date_select "extra", "when" %>
133
+ </div>
134
+ """
135
+ When I run `bundle exec rake db:migrate`
136
+ And I run `bundle exec rake cucumber`
137
+ Then it should pass with:
138
+ """
139
+ 1 scenario (1 passed)
140
+ 7 steps (7 passed)
141
+ """
@@ -19,6 +19,26 @@ module Cucumber
19
19
 
20
20
  private
21
21
 
22
+ def csrf?
23
+ csrf_param_node && csrf_token_node
24
+ end
25
+
26
+ def csrf_param_node
27
+ element_node.document.at_xpath("//meta[@name='csrf-param']")
28
+ end
29
+
30
+ def csrf_param
31
+ csrf_param_node['content']
32
+ end
33
+
34
+ def csrf_token_node
35
+ element_node.document.at_xpath("//meta[@name='csrf-token']")
36
+ end
37
+
38
+ def csrf_token
39
+ csrf_token_node['content']
40
+ end
41
+
22
42
  def js_form(document, action, emulated_method, method = 'POST')
23
43
  js_form = document.create_element('form')
24
44
  js_form['action'] = action
@@ -31,6 +51,16 @@ module Cucumber
31
51
  input['value'] = emulated_method
32
52
  js_form.add_child(input)
33
53
  end
54
+
55
+ # rails will wipe the session if the CSRF token is not sent
56
+ # with non-GET requests
57
+ if csrf? && emulated_method.downcase != "get"
58
+ input = document.create_element('input')
59
+ input['type'] = 'hidden'
60
+ input['name'] = csrf_param
61
+ input['value'] = csrf_token
62
+ js_form.add_child(input)
63
+ end
34
64
 
35
65
  js_form
36
66
  end
@@ -6,17 +6,17 @@ module Cucumber
6
6
  date = Date.parse(options[:with])
7
7
  base_dom_id = get_base_dom_id_from_label_tag(field)
8
8
 
9
- find(:xpath, "//select[@id='#{base_dom_id}_1i']").select(date.year.to_s)
10
- find(:xpath, "//select[@id='#{base_dom_id}_2i']").select(I18n.l date, :format => '%B')
11
- find(:xpath, "//select[@id='#{base_dom_id}_3i']").select(date.day.to_s)
9
+ find(:xpath, ".//select[@id='#{base_dom_id}_1i']").select(date.year.to_s)
10
+ find(:xpath, ".//select[@id='#{base_dom_id}_2i']").select(I18n.l date, :format => '%B')
11
+ find(:xpath, ".//select[@id='#{base_dom_id}_3i']").select(date.day.to_s)
12
12
  end
13
13
 
14
14
  def select_time(field, options = {})
15
15
  time = Time.zone.parse(options[:with])
16
16
  base_dom_id = get_base_dom_id_from_label_tag(field)
17
17
 
18
- find(:xpath, "//select[@id='#{base_dom_id}_4i']").select(time.hour.to_s.rjust(2, '0'))
19
- find(:xpath, "//select[@id='#{base_dom_id}_5i']").select(time.min.to_s.rjust(2, '0'))
18
+ find(:xpath, ".//select[@id='#{base_dom_id}_4i']").select(time.hour.to_s.rjust(2, '0'))
19
+ find(:xpath, ".//select[@id='#{base_dom_id}_5i']").select(time.min.to_s.rjust(2, '0'))
20
20
  end
21
21
 
22
22
  def select_datetime(field, options = {})
@@ -28,7 +28,7 @@ module Cucumber
28
28
 
29
29
  # @example "event_starts_at_"
30
30
  def get_base_dom_id_from_label_tag(field)
31
- find(:xpath, "//label[contains(., '#{field}')]")['for'].gsub(/(_[1-5]i)$/, '')
31
+ find(:xpath, ".//label[contains(., '#{field}')]")['for'].gsub(/(_[1-5]i)$/, '')
32
32
  end
33
33
  end
34
34
  end
@@ -1,7 +1,7 @@
1
1
  Description:
2
2
  Generates a skeleton for a new feature. Both a simple .feature file and
3
3
  a steps.rb file is generated. This generator should be used with moderation.
4
- See http://github.com/aslakhellesoy/cucumber/wikis/feature-coupled-steps-antipattern
4
+ See https://github.com/cucumber/cucumber/wiki/Feature-Coupled-Steps-(Antipattern)
5
5
  for details about the dangers involved.
6
6
 
7
7
  This generator can take an optional list of attribute pairs similar to Rails'
@@ -13,7 +13,6 @@ module Cucumber
13
13
  end
14
14
 
15
15
  def generate
16
- empty_directory 'features/step_definitions'
17
16
  template 'feature.erb', "features/manage_#{plural_name}.feature"
18
17
  template 'steps.erb', "features/step_definitions/#{singular_name}_steps.rb"
19
18
  gsub_file 'features/support/paths.rb', /'\/'/mi do |match|
@@ -25,4 +24,4 @@ module Cucumber
25
24
  "#{$0} cucumber:feature ModelName [field:type, field:type]"
26
25
  end
27
26
  end
28
- end
27
+ end
@@ -54,7 +54,7 @@ end
54
54
  # | Note | Nice guy |
55
55
  # | Wants Email? | |
56
56
  #
57
- # TODO: Add support for checkbox, select og option
57
+ # TODO: Add support for checkbox, select or option
58
58
  # based on naming conventions.
59
59
  #
60
60
  When /^(?:|I )fill in the following:$/ do |fields|
@@ -143,6 +143,49 @@ Then /^the "([^"]*)" field(?: within (.*))? should not contain "([^"]*)"$/ do |f
143
143
  end
144
144
  end
145
145
 
146
+ Then /^the "([^"]*)" field should have the error "([^"]*)"$/ do |field, error_message|
147
+ element = find_field(field)
148
+ classes = element.find(:xpath, '..')[:class].split(' ')
149
+
150
+ form_for_input = element.find(:xpath, 'ancestor::form[1]')
151
+ using_formtastic = form_for_input[:class].include?('formtastic')
152
+ error_class = using_formtastic ? 'error' : 'field_with_errors'
153
+
154
+ if classes.respond_to? :should
155
+ classes.should include(error_class)
156
+ else
157
+ assert classes.include?(error_class)
158
+ end
159
+
160
+ if page.respond_to?(:should)
161
+ if using_formtastic
162
+ error_paragraph = element.find(:xpath, '../*[@class="inline-errors"][1]')
163
+ error_paragraph.should have_content(error_message)
164
+ else
165
+ page.should have_content("#{field.titlecase} #{error_message}")
166
+ end
167
+ else
168
+ if using_formtastic
169
+ error_paragraph = element.find(:xpath, '../*[@class="inline-errors"][1]')
170
+ assert error_paragraph.has_content?(error_message)
171
+ else
172
+ assert page.has_content?("#{field.titlecase} #{error_message}")
173
+ end
174
+ end
175
+ end
176
+
177
+ Then /^the "([^"]*)" field should have no error$/ do |field|
178
+ element = find_field(field)
179
+ classes = element.find(:xpath, '..')[:class].split(' ')
180
+ if classes.respond_to? :should
181
+ classes.should_not include('field_with_errors')
182
+ classes.should_not include('error')
183
+ else
184
+ assert !classes.include?('field_with_errors')
185
+ assert !classes.include?('error')
186
+ end
187
+ end
188
+
146
189
  Then /^the "([^"]*)" checkbox(?: within (.*))? should be checked$/ do |label, parent|
147
190
  with_scope(parent) do
148
191
  field_checked = find_field(label)['checked']
metadata CHANGED
@@ -1,270 +1,266 @@
1
- --- !ruby/object:Gem::Specification
1
+ --- !ruby/object:Gem::Specification
2
2
  name: cucumber-rails
3
- version: !ruby/object:Gem::Version
3
+ version: !ruby/object:Gem::Version
4
+ version: 1.0.3
4
5
  prerelease:
5
- version: 1.0.2
6
6
  platform: ruby
7
- authors:
8
- - "Aslak Helles\xC3\xB8y"
9
- - "Dennis Bl\xC3\xB6te"
7
+ authors:
8
+ - Aslak Hellesøy
9
+ - Dennis Blöte
10
10
  - Rob Holland
11
11
  autorequire:
12
12
  bindir: bin
13
13
  cert_chain: []
14
-
15
- date: 2011-06-26 00:00:00 Z
16
- dependencies:
17
- - !ruby/object:Gem::Dependency
14
+ date: 2011-09-11 00:00:00.000000000Z
15
+ dependencies:
16
+ - !ruby/object:Gem::Dependency
18
17
  name: cucumber
19
- requirement: &id001 !ruby/object:Gem::Requirement
18
+ requirement: &2151850700 !ruby/object:Gem::Requirement
20
19
  none: false
21
- requirements:
20
+ requirements:
22
21
  - - ~>
23
- - !ruby/object:Gem::Version
24
- version: 1.0.0
22
+ - !ruby/object:Gem::Version
23
+ version: 1.0.4
25
24
  type: :runtime
26
25
  prerelease: false
27
- version_requirements: *id001
28
- - !ruby/object:Gem::Dependency
26
+ version_requirements: *2151850700
27
+ - !ruby/object:Gem::Dependency
29
28
  name: nokogiri
30
- requirement: &id002 !ruby/object:Gem::Requirement
29
+ requirement: &2151848220 !ruby/object:Gem::Requirement
31
30
  none: false
32
- requirements:
33
- - - ">="
34
- - !ruby/object:Gem::Version
35
- version: 1.4.6
31
+ requirements:
32
+ - - ! '>='
33
+ - !ruby/object:Gem::Version
34
+ version: 1.5.0
36
35
  type: :runtime
37
36
  prerelease: false
38
- version_requirements: *id002
39
- - !ruby/object:Gem::Dependency
37
+ version_requirements: *2151848220
38
+ - !ruby/object:Gem::Dependency
40
39
  name: capybara
41
- requirement: &id003 !ruby/object:Gem::Requirement
40
+ requirement: &2151846400 !ruby/object:Gem::Requirement
42
41
  none: false
43
- requirements:
44
- - - ">="
45
- - !ruby/object:Gem::Version
46
- version: 1.0.0
42
+ requirements:
43
+ - - ! '>='
44
+ - !ruby/object:Gem::Version
45
+ version: 1.1.1
47
46
  type: :runtime
48
47
  prerelease: false
49
- version_requirements: *id003
50
- - !ruby/object:Gem::Dependency
48
+ version_requirements: *2151846400
49
+ - !ruby/object:Gem::Dependency
51
50
  name: rails
52
- requirement: &id004 !ruby/object:Gem::Requirement
51
+ requirement: &2151844080 !ruby/object:Gem::Requirement
53
52
  none: false
54
- requirements:
55
- - - ">="
56
- - !ruby/object:Gem::Version
57
- version: 3.1.0.rc4
53
+ requirements:
54
+ - - ! '>='
55
+ - !ruby/object:Gem::Version
56
+ version: 3.1.0
58
57
  type: :development
59
58
  prerelease: false
60
- version_requirements: *id004
61
- - !ruby/object:Gem::Dependency
59
+ version_requirements: *2151844080
60
+ - !ruby/object:Gem::Dependency
62
61
  name: rake
63
- requirement: &id005 !ruby/object:Gem::Requirement
62
+ requirement: &2151842620 !ruby/object:Gem::Requirement
64
63
  none: false
65
- requirements:
66
- - - ">="
67
- - !ruby/object:Gem::Version
64
+ requirements:
65
+ - - ! '>='
66
+ - !ruby/object:Gem::Version
68
67
  version: 0.9.2
69
68
  type: :development
70
69
  prerelease: false
71
- version_requirements: *id005
72
- - !ruby/object:Gem::Dependency
70
+ version_requirements: *2151842620
71
+ - !ruby/object:Gem::Dependency
73
72
  name: bundler
74
- requirement: &id006 !ruby/object:Gem::Requirement
73
+ requirement: &2151841480 !ruby/object:Gem::Requirement
75
74
  none: false
76
- requirements:
77
- - - ">="
78
- - !ruby/object:Gem::Version
79
- version: 1.0.15
75
+ requirements:
76
+ - - ! '>='
77
+ - !ruby/object:Gem::Version
78
+ version: 1.0.18
80
79
  type: :development
81
80
  prerelease: false
82
- version_requirements: *id006
83
- - !ruby/object:Gem::Dependency
81
+ version_requirements: *2151841480
82
+ - !ruby/object:Gem::Dependency
84
83
  name: aruba
85
- requirement: &id007 !ruby/object:Gem::Requirement
84
+ requirement: &2151840620 !ruby/object:Gem::Requirement
86
85
  none: false
87
- requirements:
88
- - - ">="
89
- - !ruby/object:Gem::Version
90
- version: 0.4.3
86
+ requirements:
87
+ - - ! '>='
88
+ - !ruby/object:Gem::Version
89
+ version: 0.4.6
91
90
  type: :development
92
91
  prerelease: false
93
- version_requirements: *id007
94
- - !ruby/object:Gem::Dependency
95
- name: sqlite3-ruby
96
- requirement: &id008 !ruby/object:Gem::Requirement
92
+ version_requirements: *2151840620
93
+ - !ruby/object:Gem::Dependency
94
+ name: sqlite3
95
+ requirement: &2151839400 !ruby/object:Gem::Requirement
97
96
  none: false
98
- requirements:
99
- - - ">="
100
- - !ruby/object:Gem::Version
101
- version: 1.3.3
97
+ requirements:
98
+ - - ! '>='
99
+ - !ruby/object:Gem::Version
100
+ version: 1.3.4
102
101
  type: :development
103
102
  prerelease: false
104
- version_requirements: *id008
105
- - !ruby/object:Gem::Dependency
103
+ version_requirements: *2151839400
104
+ - !ruby/object:Gem::Dependency
106
105
  name: rspec
107
- requirement: &id009 !ruby/object:Gem::Requirement
106
+ requirement: &2151838600 !ruby/object:Gem::Requirement
108
107
  none: false
109
- requirements:
110
- - - ">="
111
- - !ruby/object:Gem::Version
108
+ requirements:
109
+ - - ! '>='
110
+ - !ruby/object:Gem::Version
112
111
  version: 2.6.0
113
112
  type: :development
114
113
  prerelease: false
115
- version_requirements: *id009
116
- - !ruby/object:Gem::Dependency
114
+ version_requirements: *2151838600
115
+ - !ruby/object:Gem::Dependency
117
116
  name: rspec-rails
118
- requirement: &id010 !ruby/object:Gem::Requirement
117
+ requirement: &2151837880 !ruby/object:Gem::Requirement
119
118
  none: false
120
- requirements:
121
- - - ">="
122
- - !ruby/object:Gem::Version
119
+ requirements:
120
+ - - ! '>='
121
+ - !ruby/object:Gem::Version
123
122
  version: 2.6.1
124
123
  type: :development
125
124
  prerelease: false
126
- version_requirements: *id010
127
- - !ruby/object:Gem::Dependency
125
+ version_requirements: *2151837880
126
+ - !ruby/object:Gem::Dependency
128
127
  name: factory_girl
129
- requirement: &id011 !ruby/object:Gem::Requirement
128
+ requirement: &2151836780 !ruby/object:Gem::Requirement
130
129
  none: false
131
- requirements:
132
- - - ">="
133
- - !ruby/object:Gem::Version
134
- version: 2.0.0.beta2
130
+ requirements:
131
+ - - ! '>='
132
+ - !ruby/object:Gem::Version
133
+ version: 2.1.0
135
134
  type: :development
136
135
  prerelease: false
137
- version_requirements: *id011
138
- - !ruby/object:Gem::Dependency
136
+ version_requirements: *2151836780
137
+ - !ruby/object:Gem::Dependency
139
138
  name: database_cleaner
140
- requirement: &id012 !ruby/object:Gem::Requirement
139
+ requirement: &2151835760 !ruby/object:Gem::Requirement
141
140
  none: false
142
- requirements:
143
- - - ">="
144
- - !ruby/object:Gem::Version
141
+ requirements:
142
+ - - ! '>='
143
+ - !ruby/object:Gem::Version
145
144
  version: 0.6.7
146
145
  type: :development
147
146
  prerelease: false
148
- version_requirements: *id012
149
- - !ruby/object:Gem::Dependency
147
+ version_requirements: *2151835760
148
+ - !ruby/object:Gem::Dependency
150
149
  name: mongoid
151
- requirement: &id013 !ruby/object:Gem::Requirement
150
+ requirement: &2151834580 !ruby/object:Gem::Requirement
152
151
  none: false
153
- requirements:
154
- - - ">="
155
- - !ruby/object:Gem::Version
156
- version: 2.0.2
152
+ requirements:
153
+ - - ! '>='
154
+ - !ruby/object:Gem::Version
155
+ version: 2.2.0
157
156
  type: :development
158
157
  prerelease: false
159
- version_requirements: *id013
160
- - !ruby/object:Gem::Dependency
158
+ version_requirements: *2151834580
159
+ - !ruby/object:Gem::Dependency
161
160
  name: bson_ext
162
- requirement: &id014 !ruby/object:Gem::Requirement
161
+ requirement: &2151833620 !ruby/object:Gem::Requirement
163
162
  none: false
164
- requirements:
165
- - - ">="
166
- - !ruby/object:Gem::Version
163
+ requirements:
164
+ - - ! '>='
165
+ - !ruby/object:Gem::Version
167
166
  version: 1.3.1
168
167
  type: :development
169
168
  prerelease: false
170
- version_requirements: *id014
171
- - !ruby/object:Gem::Dependency
169
+ version_requirements: *2151833620
170
+ - !ruby/object:Gem::Dependency
172
171
  name: turn
173
- requirement: &id015 !ruby/object:Gem::Requirement
172
+ requirement: &2151832380 !ruby/object:Gem::Requirement
174
173
  none: false
175
- requirements:
176
- - - ">="
177
- - !ruby/object:Gem::Version
174
+ requirements:
175
+ - - ! '>='
176
+ - !ruby/object:Gem::Version
178
177
  version: 0.8.2
179
178
  type: :development
180
179
  prerelease: false
181
- version_requirements: *id015
182
- - !ruby/object:Gem::Dependency
180
+ version_requirements: *2151832380
181
+ - !ruby/object:Gem::Dependency
183
182
  name: sass
184
- requirement: &id016 !ruby/object:Gem::Requirement
183
+ requirement: &2151831520 !ruby/object:Gem::Requirement
185
184
  none: false
186
- requirements:
187
- - - ">="
188
- - !ruby/object:Gem::Version
189
- version: 3.1.3
185
+ requirements:
186
+ - - ! '>='
187
+ - !ruby/object:Gem::Version
188
+ version: 3.1.7
190
189
  type: :development
191
190
  prerelease: false
192
- version_requirements: *id016
193
- - !ruby/object:Gem::Dependency
191
+ version_requirements: *2151831520
192
+ - !ruby/object:Gem::Dependency
194
193
  name: coffee-script
195
- requirement: &id017 !ruby/object:Gem::Requirement
194
+ requirement: &2151830520 !ruby/object:Gem::Requirement
196
195
  none: false
197
- requirements:
198
- - - ">="
199
- - !ruby/object:Gem::Version
196
+ requirements:
197
+ - - ! '>='
198
+ - !ruby/object:Gem::Version
200
199
  version: 2.2.0
201
200
  type: :development
202
201
  prerelease: false
203
- version_requirements: *id017
204
- - !ruby/object:Gem::Dependency
202
+ version_requirements: *2151830520
203
+ - !ruby/object:Gem::Dependency
205
204
  name: uglifier
206
- requirement: &id018 !ruby/object:Gem::Requirement
205
+ requirement: &2151829260 !ruby/object:Gem::Requirement
207
206
  none: false
208
- requirements:
209
- - - ">="
210
- - !ruby/object:Gem::Version
211
- version: 1.0.0
207
+ requirements:
208
+ - - ! '>='
209
+ - !ruby/object:Gem::Version
210
+ version: 1.0.3
212
211
  type: :development
213
212
  prerelease: false
214
- version_requirements: *id018
215
- - !ruby/object:Gem::Dependency
213
+ version_requirements: *2151829260
214
+ - !ruby/object:Gem::Dependency
216
215
  name: jquery-rails
217
- requirement: &id019 !ruby/object:Gem::Requirement
216
+ requirement: &2151827860 !ruby/object:Gem::Requirement
218
217
  none: false
219
- requirements:
220
- - - ">="
221
- - !ruby/object:Gem::Version
222
- version: 1.0.12
218
+ requirements:
219
+ - - ! '>='
220
+ - !ruby/object:Gem::Version
221
+ version: 1.0.14
223
222
  type: :development
224
223
  prerelease: false
225
- version_requirements: *id019
226
- - !ruby/object:Gem::Dependency
224
+ version_requirements: *2151827860
225
+ - !ruby/object:Gem::Dependency
227
226
  name: yard
228
- requirement: &id020 !ruby/object:Gem::Requirement
227
+ requirement: &2151827160 !ruby/object:Gem::Requirement
229
228
  none: false
230
- requirements:
231
- - - "="
232
- - !ruby/object:Gem::Version
233
- version: 0.7.1
229
+ requirements:
230
+ - - =
231
+ - !ruby/object:Gem::Version
232
+ version: 0.7.2
234
233
  type: :development
235
234
  prerelease: false
236
- version_requirements: *id020
237
- - !ruby/object:Gem::Dependency
235
+ version_requirements: *2151827160
236
+ - !ruby/object:Gem::Dependency
238
237
  name: rdiscount
239
- requirement: &id021 !ruby/object:Gem::Requirement
238
+ requirement: &2151825760 !ruby/object:Gem::Requirement
240
239
  none: false
241
- requirements:
242
- - - "="
243
- - !ruby/object:Gem::Version
240
+ requirements:
241
+ - - =
242
+ - !ruby/object:Gem::Version
244
243
  version: 1.6.8
245
244
  type: :development
246
245
  prerelease: false
247
- version_requirements: *id021
248
- - !ruby/object:Gem::Dependency
246
+ version_requirements: *2151825760
247
+ - !ruby/object:Gem::Dependency
249
248
  name: bcat
250
- requirement: &id022 !ruby/object:Gem::Requirement
249
+ requirement: &2151825080 !ruby/object:Gem::Requirement
251
250
  none: false
252
- requirements:
253
- - - "="
254
- - !ruby/object:Gem::Version
251
+ requirements:
252
+ - - =
253
+ - !ruby/object:Gem::Version
255
254
  version: 0.6.1
256
255
  type: :development
257
256
  prerelease: false
258
- version_requirements: *id022
257
+ version_requirements: *2151825080
259
258
  description: Cucumber Generators and Runtime for Rails
260
259
  email: cukes@googlegroups.com
261
260
  executables: []
262
-
263
261
  extensions: []
264
-
265
262
  extra_rdoc_files: []
266
-
267
- files:
263
+ files:
268
264
  - .gitignore
269
265
  - .rspec
270
266
  - .rvmrc
@@ -290,13 +286,14 @@ files:
290
286
  - features/capybara_javascript_drivers.feature
291
287
  - features/database_cleaner.feature
292
288
  - features/emulate_javascript.feature
289
+ - features/field_with_errors.feature
293
290
  - features/inspect_query_string.feature
294
291
  - features/install_cucumber_rails.feature
295
292
  - features/mongoid.feature
296
293
  - features/multiple_databases.feature
297
294
  - features/named_selectors.feature
298
295
  - features/no_database.feature
299
- - features/pseduo_class_selectors.feature
296
+ - features/pseudo_class_selectors.feature
300
297
  - features/rerun_profile.feature
301
298
  - features/rest_api.feature
302
299
  - features/routing.feature
@@ -350,49 +347,47 @@ files:
350
347
  - spec/spec_helper.rb
351
348
  homepage: http://cukes.info
352
349
  licenses: []
353
-
354
350
  post_install_message:
355
351
  rdoc_options: []
356
-
357
- require_paths:
352
+ require_paths:
358
353
  - lib
359
- required_ruby_version: !ruby/object:Gem::Requirement
354
+ required_ruby_version: !ruby/object:Gem::Requirement
360
355
  none: false
361
- requirements:
362
- - - ">="
363
- - !ruby/object:Gem::Version
364
- hash: -3555468014728615608
365
- segments:
356
+ requirements:
357
+ - - ! '>='
358
+ - !ruby/object:Gem::Version
359
+ version: '0'
360
+ segments:
366
361
  - 0
367
- version: "0"
368
- required_rubygems_version: !ruby/object:Gem::Requirement
362
+ hash: -2324867846435926085
363
+ required_rubygems_version: !ruby/object:Gem::Requirement
369
364
  none: false
370
- requirements:
371
- - - ">="
372
- - !ruby/object:Gem::Version
373
- hash: -3555468014728615608
374
- segments:
365
+ requirements:
366
+ - - ! '>='
367
+ - !ruby/object:Gem::Version
368
+ version: '0'
369
+ segments:
375
370
  - 0
376
- version: "0"
371
+ hash: -2324867846435926085
377
372
  requirements: []
378
-
379
373
  rubyforge_project:
380
- rubygems_version: 1.8.5
374
+ rubygems_version: 1.8.6
381
375
  signing_key:
382
376
  specification_version: 3
383
- summary: cucumber-rails-1.0.2
384
- test_files:
377
+ summary: cucumber-rails-1.0.3
378
+ test_files:
385
379
  - features/allow_rescue.feature
386
380
  - features/capybara_javascript_drivers.feature
387
381
  - features/database_cleaner.feature
388
382
  - features/emulate_javascript.feature
383
+ - features/field_with_errors.feature
389
384
  - features/inspect_query_string.feature
390
385
  - features/install_cucumber_rails.feature
391
386
  - features/mongoid.feature
392
387
  - features/multiple_databases.feature
393
388
  - features/named_selectors.feature
394
389
  - features/no_database.feature
395
- - features/pseduo_class_selectors.feature
390
+ - features/pseudo_class_selectors.feature
396
391
  - features/rerun_profile.feature
397
392
  - features/rest_api.feature
398
393
  - features/routing.feature