cucumber-rails 1.0.2 → 1.0.3

Sign up to get free protection for your applications and to get access to all the features.
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