cucumber-rails 1.4.0 → 2.1.0
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.
- checksums.yaml +7 -0
- data/.github/ISSUE_TEMPLATE.md +52 -0
- data/.github/PULL_REQUEST_TEMPLATE.md +42 -0
- data/.gitignore +3 -0
- data/.rspec +4 -1
- data/.rubocop.yml +68 -0
- data/.travis.yml +53 -26
- data/Appraisals +27 -63
- data/{History.md → CHANGELOG.md} +299 -19
- data/CONTRIBUTING.md +18 -27
- data/Gemfile +2 -4
- data/LICENSE +1 -1
- data/README.md +73 -29
- data/Rakefile +18 -14
- data/bin/install_geckodriver.sh +19 -0
- data/bin/install_webpacker.sh +9 -0
- data/config/cucumber.yml +5 -3
- data/cucumber-rails.gemspec +37 -25
- data/dev_tasks/cucumber.rake +3 -3
- data/dev_tasks/rspec.rake +3 -6
- data/dev_tasks/yard/default/layout/html/footer.erb +1 -1
- data/dev_tasks/yard/default/layout/html/layout.erb +5 -5
- data/dev_tasks/yard/default/layout/html/logo.erb +1 -1
- data/dev_tasks/yard/default/layout/html/setup.rb +6 -1
- data/dev_tasks/yard.rake +7 -14
- data/features/allow_rescue.feature +17 -12
- data/features/annotations.feature +20 -0
- data/features/capybara_javascript_drivers.feature +42 -32
- data/features/choose_javascript_database_strategy.feature +38 -57
- data/features/configuration.feature +48 -0
- data/features/database_cleaner.feature +20 -20
- data/features/disable_automatic_database_cleaning.feature +13 -19
- data/features/emulate_javascript.feature +65 -48
- data/features/install_cucumber_rails.feature +6 -5
- data/features/no_database.feature +8 -15
- data/features/raising_errors.feature +10 -4
- data/features/rerun_profile.feature +18 -8
- data/features/rest_api.feature +13 -13
- data/features/step_definitions/cucumber_rails_steps.rb +52 -66
- data/features/support/aruba.rb +5 -0
- data/features/support/cucumber_rails_helper.rb +85 -0
- data/features/support/env.rb +4 -35
- data/features/support/hooks.rb +8 -0
- data/gemfiles/rails_4_2.gemfile +10 -0
- data/gemfiles/rails_5_0.gemfile +10 -0
- data/gemfiles/rails_5_1.gemfile +10 -0
- data/gemfiles/rails_5_2.gemfile +10 -0
- data/gemfiles/rails_6_0.gemfile +9 -0
- data/lib/cucumber/rails/action_dispatch.rb +21 -0
- data/lib/cucumber/rails/application.rb +17 -8
- data/lib/cucumber/rails/capybara/javascript_emulation.rb +47 -39
- data/lib/cucumber/rails/capybara/select_dates_and_times.rb +8 -6
- data/lib/cucumber/rails/capybara.rb +2 -0
- data/lib/cucumber/rails/database.rb +36 -17
- data/lib/cucumber/rails/hooks/active_record.rb +14 -12
- data/lib/cucumber/rails/hooks/allow_rescue.rb +2 -0
- data/lib/cucumber/rails/hooks/database_cleaner.rb +6 -4
- data/lib/cucumber/rails/hooks/mail.rb +4 -4
- data/lib/cucumber/rails/hooks.rb +2 -0
- data/lib/cucumber/rails/rspec.rb +5 -3
- data/lib/cucumber/rails/world.rb +26 -9
- data/lib/cucumber/rails.rb +21 -18
- data/lib/generators/cucumber/{install/USAGE → USAGE} +2 -2
- data/lib/generators/cucumber/{install/install_generator.rb → install_generator.rb} +28 -15
- data/lib/generators/cucumber/{install/templates → templates}/config/cucumber.yml.erb +4 -3
- data/lib/generators/cucumber/{install/templates → templates}/script/cucumber +1 -0
- data/lib/generators/cucumber/{install/templates → templates}/support/_rails_each_run.rb.erb +4 -4
- data/lib/generators/cucumber/{install/templates → templates}/support/_rails_prefork.rb.erb +0 -0
- data/lib/generators/cucumber/{install/templates → templates}/support/capybara.rb +2 -0
- data/lib/generators/cucumber/{install/templates → templates}/support/edit_warning.txt +0 -0
- data/lib/generators/cucumber/{install/templates → templates}/support/rails.rb.erb +0 -0
- data/lib/generators/cucumber/{install/templates → templates}/support/rails_spork.rb.erb +2 -2
- data/lib/generators/cucumber/{install/templates → templates}/tasks/cucumber.rake.erb +19 -8
- data/spec/cucumber/rails/database_spec.rb +46 -33
- data/spec/generators/cucumber/install_generator_spec.rb +55 -0
- data/spec/spec_helper.rb +14 -2
- metadata +228 -142
- data/Gemfile.appraisal +0 -3
- data/features/step_definitions/mongo_steps.rb +0 -3
- data/features/support/bundler_pre_support.rb +0 -28
- data/features/support/fixtures/bundler-1.0.21.gem +0 -0
- data/features/support/fixtures/bundler-1.1.rc.gem +0 -0
- data/features/support/legacy_web_steps_support.rb +0 -290
- data/gemfiles/capybara_1_1.gemfile +0 -17
- data/gemfiles/rails_3_0.gemfile +0 -16
- data/gemfiles/rails_3_1.gemfile +0 -17
- data/gemfiles/rails_3_2.gemfile +0 -17
- data/gemfiles/rails_4_0.gemfile +0 -20
- data/lib/cucumber/rails/action_controller.rb +0 -12
- data/spec/generators/cucumber/install/install_generator_spec.rb +0 -47
data/README.md
CHANGED
@@ -1,18 +1,23 @@
|
|
1
1
|
# Cucumber-Rails
|
2
2
|
|
3
|
-
[](http://badge.fury.io/rb/cucumber-rails)
|
4
|
+
[](http://travis-ci.org/cucumber/cucumber-rails)
|
5
|
+
[](https://codeclimate.com/github/cucumber/cucumber-rails)
|
6
|
+
[](https://www.codetriage.com/cucumber/cucumber-rails)
|
4
7
|
|
5
|
-
Cucumber-Rails brings Cucumber to Rails
|
8
|
+
Cucumber-Rails brings Cucumber to Rails 4.2, 5.x and 6.x.
|
6
9
|
|
7
10
|
## Installation
|
8
11
|
|
9
12
|
Before you can use the generator, add the gem to your project's Gemfile as follows:
|
10
13
|
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
14
|
+
```ruby
|
15
|
+
group :test do
|
16
|
+
gem 'cucumber-rails', require: false
|
17
|
+
# database_cleaner is not required, but highly recommended
|
18
|
+
gem 'database_cleaner'
|
19
|
+
end
|
20
|
+
```
|
16
21
|
|
17
22
|
Then install it by running:
|
18
23
|
|
@@ -35,15 +40,24 @@ With Rake:
|
|
35
40
|
Without Rake:
|
36
41
|
|
37
42
|
[bundle exec] cucumber
|
38
|
-
|
43
|
+
|
39
44
|
## Configuration options
|
40
45
|
|
41
|
-
By default, cucumber-rails runs `DatabaseCleaner.start` and `DatabaseCleaner.clean`
|
46
|
+
By default, cucumber-rails runs `DatabaseCleaner.start` and `DatabaseCleaner.clean`
|
47
|
+
before and after your scenarios. You can disable this behaviour like so:
|
48
|
+
|
49
|
+
```ruby
|
50
|
+
# features/support/env.rb
|
51
|
+
# ...
|
52
|
+
Cucumber::Rails::Database.autorun_database_cleaner = false
|
53
|
+
```
|
54
|
+
|
55
|
+
By default, cucumber-rails will auto mix-in the helpers from `Rack::Test` into your default Cucumber World instance. You can prevent this behaviour like so:
|
56
|
+
```ruby
|
57
|
+
# features/support/env.rb
|
58
|
+
ENV['CR_REMOVE_RACK_TEST_HELPERS'] = 'true'
|
59
|
+
```
|
42
60
|
|
43
|
-
# features/support/env.rb
|
44
|
-
# ...
|
45
|
-
Cucumber::Rails::Database.autorun_database_cleaner = false
|
46
|
-
|
47
61
|
## Upgrading from a previous version
|
48
62
|
|
49
63
|
When upgrading from a previous version it is recommended that you rerun:
|
@@ -52,44 +66,59 @@ When upgrading from a previous version it is recommended that you rerun:
|
|
52
66
|
|
53
67
|
## Bugs and feature requests
|
54
68
|
|
55
|
-
The *only* way to have a bug fixed or a new feature accepted is to describe it with a
|
69
|
+
The *only* way to have a bug fixed or a new feature accepted is to describe it with a
|
70
|
+
Cucumber feature. Let's say you think you have found a bug in the cucumber:install generator.
|
71
|
+
Fork this project, clone it to your workstation and check out a branch with a descriptive name:
|
56
72
|
|
57
73
|
git clone git@github.com:you/cucumber-rails.git
|
58
|
-
git checkout -b
|
74
|
+
git checkout -b bugfix/generator-fails-on-ruby-25
|
59
75
|
|
60
|
-
Start by making sure you can run the existing features. Now, create a feature that demonstrates
|
76
|
+
Start by making sure you can run the existing features. Now, create a feature that demonstrates
|
77
|
+
what's wrong. See the existing features for examples. When you have a failing feature that
|
78
|
+
reproduces the bug, commit, push and send a pull request. Someone from the Cucumber-Rails team
|
79
|
+
will review it and hopefully create a fix.
|
61
80
|
|
62
|
-
If you know how to fix the bug yourself, make a second commit (after committing the failing
|
81
|
+
If you know how to fix the bug yourself, make a second commit (after committing the failing
|
82
|
+
feature) before you send the pull request.
|
63
83
|
|
64
84
|
### Setting up your environment
|
65
85
|
|
66
|
-
|
86
|
+
Make sure you have a supported ruby installed, cd into your cucumber-rails repository and:
|
67
87
|
|
68
88
|
gem install bundler
|
69
89
|
bundle install
|
90
|
+
bin/install_geckodriver.sh
|
91
|
+
bin/install_webpacker.sh
|
70
92
|
|
71
93
|
### Running all tests
|
72
94
|
|
73
95
|
With all dependencies installed, all specs and features should pass:
|
74
96
|
|
75
|
-
rake
|
76
|
-
|
77
|
-
One of the features uses MongoDB, which needs to be running in order to make features/mongoid.feature to pass.
|
97
|
+
[bundle exec] rake
|
78
98
|
|
79
99
|
### Running Appraisal suite
|
80
100
|
|
81
|
-
In order to test against multiple versions of key dependencies, the [Appraisal](https://github.com/thoughtbot/appraisal)
|
101
|
+
In order to test against multiple versions of key dependencies, the [Appraisal](https://github.com/thoughtbot/appraisal)
|
102
|
+
gem is used to generate multiple gemfiles, stored in the `gemfiles/` directory.
|
103
|
+
Normally these will only run on Travis; however, if you want to run the full test suite against
|
104
|
+
all gemfiles, run the following commands:
|
82
105
|
|
83
|
-
|
84
|
-
rake test
|
106
|
+
[bundle exec] appraisal install
|
107
|
+
[bundle exec] appraisal rake test
|
85
108
|
|
86
109
|
To run the suite against a named gemfile, use the following:
|
87
110
|
|
88
|
-
rake test
|
111
|
+
[bundle exec] appraisal rails_4_2 rake test
|
112
|
+
|
113
|
+
To remove and rebuild the different gemfiles (for example, to update a rails version or its
|
114
|
+
dependencies), use the following:
|
115
|
+
|
116
|
+
[bundle exec] appraisal update
|
89
117
|
|
90
|
-
|
118
|
+
If you've changed versions of the dependencies, you may find it helpful to forcefully clean
|
119
|
+
each appraisal's gem lock file in `gemfiles/`. You can do this using:
|
91
120
|
|
92
|
-
rake
|
121
|
+
[bundle exec] rake clean
|
93
122
|
|
94
123
|
### Adding dependencies
|
95
124
|
|
@@ -97,6 +126,21 @@ To support the multiple-gemfile testing, when adding a new dependency the follow
|
|
97
126
|
|
98
127
|
1. If it's a runtime dependency of the gem, add it to the gemspec
|
99
128
|
2. If it's a primary development dependency, add it to the gemspec
|
100
|
-
3. If it's a dependency of a generated rails app in a test, add it to the
|
129
|
+
3. If it's a dependency of a generated rails app in a test, add it to [the helper] that
|
130
|
+
modifies the `Gemfile`.
|
131
|
+
|
132
|
+
For example, rspec is a primary development dependency, so it lives in the gemspec.
|
133
|
+
|
134
|
+
[the helper]: https://github.com/cucumber/cucumber-rails/blob/5e37c530560ae1c1a79521c38a54bae0be94242b/features/step_definitions/cucumber_rails_steps.rb#L15
|
135
|
+
|
136
|
+
### NOTE
|
137
|
+
|
138
|
+
If you get an error while trying to run the tests locally, similar to the one below:
|
139
|
+
|
140
|
+
Could not find a JavaScript runtime. See https://github.com/sstephenson/execjs for a list of available runtimes. (ExecJS::RuntimeUnavailable)
|
141
|
+
|
142
|
+
You need to install a javascript runtime.
|
143
|
+
|
144
|
+
You can do that in ubuntu by using:
|
101
145
|
|
102
|
-
|
146
|
+
sudo apt-get install nodejs
|
data/Rakefile
CHANGED
@@ -1,5 +1,7 @@
|
|
1
|
-
#
|
2
|
-
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
CUCUMBER_RAILS_VERSION =
|
4
|
+
Gem::Specification.load(File.dirname(__FILE__) + '/cucumber-rails.gemspec').version.version
|
3
5
|
require 'rubygems'
|
4
6
|
require 'bundler'
|
5
7
|
require 'bundler/setup'
|
@@ -9,41 +11,43 @@ require 'rake/clean'
|
|
9
11
|
require 'pathname'
|
10
12
|
Bundler::GemHelper.install_tasks
|
11
13
|
|
12
|
-
|
14
|
+
$LOAD_PATH.unshift(File.dirname(__FILE__) + '/lib')
|
13
15
|
Dir["#{File.dirname(__FILE__)}/dev_tasks/*.rake"].sort.each { |ext| load ext }
|
14
16
|
|
15
17
|
CLEAN.include('doc', 'tmp')
|
16
18
|
|
17
|
-
task :
|
19
|
+
task default: :test
|
18
20
|
|
19
|
-
task :
|
21
|
+
task test: %i[spec cucumber]
|
20
22
|
|
21
23
|
namespace :test do
|
22
|
-
desc
|
24
|
+
desc 'Run tests against all gemfiles'
|
23
25
|
task :all do
|
24
26
|
Rake::Task['appraisal'].invoke('test')
|
25
27
|
end
|
26
28
|
|
27
|
-
desc
|
28
|
-
task :gemfile, :name do |
|
29
|
+
desc 'Run tests against specified gemfile, e.g. rake test:gemfile[rails_3_0]'
|
30
|
+
task :gemfile, :name do |_task, args|
|
29
31
|
unless args.name && Pathname.new("gemfiles/#{args.name}.gemfile").exist?
|
30
|
-
raise ArgumentError "You must provide the name of an existing Appraisal gemfile,
|
32
|
+
raise ArgumentError, "You must provide the name of an existing Appraisal gemfile,
|
33
|
+
e.g. 'rake test:gemfile[rails_4_2]'"
|
31
34
|
end
|
35
|
+
|
32
36
|
Rake::Task["appraisal:#{args.name}"].invoke('test')
|
33
37
|
end
|
34
38
|
end
|
35
39
|
|
36
40
|
namespace :gemfiles do
|
37
|
-
desc
|
41
|
+
desc 'Install dependencies for all gemfiles'
|
38
42
|
task :install do
|
39
|
-
ENV['BUNDLE_GEMFILE'] =
|
43
|
+
ENV['BUNDLE_GEMFILE'] = 'Gemfile.appraisal'
|
40
44
|
Rake::Task['appraisal:install'].invoke
|
41
45
|
end
|
42
46
|
|
43
47
|
task :clean do
|
44
|
-
FileUtils.rm_rf(
|
48
|
+
FileUtils.rm_rf('gemfiles/*')
|
45
49
|
end
|
46
50
|
|
47
|
-
desc
|
48
|
-
task :
|
51
|
+
desc 'Rebuild generated gemfiles and install dependencies'
|
52
|
+
task rebuild: %i[clean install]
|
49
53
|
end
|
@@ -0,0 +1,19 @@
|
|
1
|
+
#!/bin/bash
|
2
|
+
|
3
|
+
set -xeuo pipefail
|
4
|
+
|
5
|
+
curl --silent \
|
6
|
+
--show-error \
|
7
|
+
--location \
|
8
|
+
--fail \
|
9
|
+
--retry 3 \
|
10
|
+
--output /tmp/geckodriver_linux64.tar.gz \
|
11
|
+
https://github.com/mozilla/geckodriver/releases/download/v0.24.0/geckodriver-v0.24.0-linux64.tar.gz
|
12
|
+
|
13
|
+
sudo tar -C /usr/local/bin -xvzf /tmp/geckodriver_linux64.tar.gz geckodriver
|
14
|
+
|
15
|
+
rm /tmp/geckodriver_linux64.tar.gz
|
16
|
+
|
17
|
+
geckodriver --version
|
18
|
+
|
19
|
+
set +x
|
@@ -0,0 +1,9 @@
|
|
1
|
+
#!/bin/bash
|
2
|
+
|
3
|
+
set -xeuo pipefail
|
4
|
+
|
5
|
+
curl -sS https://dl.yarnpkg.com/debian/pubkey.gpg | sudo apt-key add -
|
6
|
+
echo 'deb https://dl.yarnpkg.com/debian/ stable main' | sudo tee /etc/apt/sources.list.d/yarn.list
|
7
|
+
sudo apt update && sudo apt install --yes yarn
|
8
|
+
|
9
|
+
set +x
|
data/config/cucumber.yml
CHANGED
@@ -5,11 +5,13 @@ path = if failing_scenarios.empty?
|
|
5
5
|
'features'
|
6
6
|
else
|
7
7
|
puts "Running failed scenarios"
|
8
|
-
failing_scenarios
|
8
|
+
failing_scenarios.gsub /\s/, ' '
|
9
9
|
end
|
10
10
|
opts = [
|
11
11
|
"--format #{path == 'features' ? 'progress' : 'pretty'}",
|
12
12
|
"--format rerun -o #{rerun_file}"
|
13
|
-
]
|
13
|
+
]
|
14
|
+
rails_version = `bundle exec rails --version`.match(/[\d.]+$/).to_s
|
15
|
+
optlist = opts.join(' ')
|
14
16
|
%>
|
15
|
-
default: <%= path %> <%=
|
17
|
+
default: <%= path %> <%= optlist %> --tags 'not @broken'
|
data/cucumber-rails.gemspec
CHANGED
@@ -1,39 +1,51 @@
|
|
1
|
-
#
|
2
|
-
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
$LOAD_PATH.unshift File.expand_path('lib', __dir__)
|
3
4
|
|
4
5
|
Gem::Specification.new do |s|
|
5
6
|
s.name = 'cucumber-rails'
|
6
|
-
s.version = '1.
|
7
|
-
s.authors = [
|
8
|
-
s.description =
|
7
|
+
s.version = '2.1.0'
|
8
|
+
s.authors = ['Aslak Hellesøy', 'Dennis Blöte', 'Rob Holland']
|
9
|
+
s.description = 'Cucumber Generator and Runtime for Rails'
|
9
10
|
s.summary = "#{s.name}-#{s.version}"
|
10
11
|
s.email = 'cukes@googlegroups.com'
|
11
|
-
s.homepage =
|
12
|
+
s.homepage = 'https://cucumber.io'
|
13
|
+
|
14
|
+
s.license = 'MIT'
|
15
|
+
|
16
|
+
s.metadata = {
|
17
|
+
'bug_tracker_uri' => 'https://github.com/cucumber/cucumber-rails/issues',
|
18
|
+
'changelog_uri' => "https://github.com/cucumber/cucumber-rails/blob/v#{s.version}/CHANGELOG.md",
|
19
|
+
'documentation_uri' => 'https://cucumber.io/docs',
|
20
|
+
'mailing_list_uri' => 'https://groups.google.com/forum/#!forum/cukes',
|
21
|
+
'source_code_uri' => "https://github.com/cucumber/cucumber-rails/tree/v#{s.version}"
|
22
|
+
}
|
12
23
|
|
13
|
-
s.add_runtime_dependency('
|
14
|
-
s.add_runtime_dependency('
|
15
|
-
s.add_runtime_dependency('
|
16
|
-
s.add_runtime_dependency('
|
24
|
+
s.add_runtime_dependency('capybara', ['>= 2.12', '< 4'])
|
25
|
+
s.add_runtime_dependency('cucumber', ['>= 3.0.2', '< 5'])
|
26
|
+
s.add_runtime_dependency('mime-types', ['>= 2.0', '< 4'])
|
27
|
+
s.add_runtime_dependency('nokogiri', '~> 1.8')
|
28
|
+
s.add_runtime_dependency('rails', ['>= 4.2', '< 7'])
|
17
29
|
|
18
30
|
# Main development dependencies
|
19
|
-
s.add_development_dependency('
|
20
|
-
s.add_development_dependency('
|
21
|
-
s.add_development_dependency('aruba', '
|
22
|
-
s.add_development_dependency('
|
23
|
-
s.add_development_dependency('
|
24
|
-
s.add_development_dependency('
|
25
|
-
s.add_development_dependency('
|
26
|
-
s.add_development_dependency('
|
31
|
+
s.add_development_dependency('ammeter', '>= 1.1.4')
|
32
|
+
s.add_development_dependency('appraisal', '~> 2.2')
|
33
|
+
s.add_development_dependency('aruba', '~> 1.0')
|
34
|
+
s.add_development_dependency('bundler', '>= 1.17')
|
35
|
+
s.add_development_dependency('rake', '>= 12.0')
|
36
|
+
s.add_development_dependency('rspec', '~> 3.6')
|
37
|
+
s.add_development_dependency('rubocop', '~> 0.85.0')
|
38
|
+
s.add_development_dependency('rubocop-performance', '~> 1.6.1')
|
39
|
+
s.add_development_dependency('rubocop-rspec', '~> 1.39.0')
|
40
|
+
s.add_development_dependency('sqlite3', '~> 1.3')
|
27
41
|
|
28
42
|
# For Documentation:
|
29
|
-
s.add_development_dependency('
|
30
|
-
s.add_development_dependency('
|
31
|
-
s.add_development_dependency('rdiscount', '~> 2.0.7')
|
32
|
-
s.add_development_dependency('bcat', '~> 0.6.2')
|
43
|
+
s.add_development_dependency('rdoc', '>= 6.0')
|
44
|
+
s.add_development_dependency('yard', '~> 0.9.10')
|
33
45
|
|
34
|
-
s.
|
46
|
+
s.required_ruby_version = '>= 2.4.0'
|
47
|
+
s.rubygems_version = '>= 1.6.1'
|
35
48
|
s.files = `git ls-files`.split("\n")
|
36
49
|
s.test_files = `git ls-files -- {spec,features}/*`.split("\n")
|
37
|
-
s.
|
38
|
-
s.require_path = "lib"
|
50
|
+
s.require_path = 'lib'
|
39
51
|
end
|
data/dev_tasks/cucumber.rake
CHANGED
data/dev_tasks/rspec.rake
CHANGED
@@ -1,5 +1,5 @@
|
|
1
1
|
<div id="footer">
|
2
|
-
Generated on <%= Time.now.strftime("%c") %> by
|
2
|
+
Generated on <%= Time.now.strftime("%c") %> by
|
3
3
|
<a href="http://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
|
4
4
|
<%= YARD::VERSION %> (ruby-<%= RUBY_VERSION %>).
|
5
5
|
</div>
|
@@ -8,18 +8,18 @@
|
|
8
8
|
<script type="text/javascript" charset="utf-8">
|
9
9
|
if (window.top.frames.main) document.body.className = 'frames';
|
10
10
|
</script>
|
11
|
-
|
11
|
+
|
12
12
|
<div id="header">
|
13
13
|
<%= erb(:logo) %>
|
14
14
|
<%= erb(:breadcrumb) %>
|
15
15
|
<%= erb(:search) %>
|
16
16
|
<div class="clear"></div>
|
17
17
|
</div>
|
18
|
-
|
18
|
+
|
19
19
|
<iframe id="search_frame"></iframe>
|
20
|
-
|
20
|
+
|
21
21
|
<div id="content"><%= yieldall %></div>
|
22
|
-
|
22
|
+
|
23
23
|
<%= erb(:footer) %>
|
24
24
|
</body>
|
25
|
-
</html>
|
25
|
+
</html>
|
@@ -1 +1 @@
|
|
1
|
-
<h3><img src="<%= url_for('images/bubble_32x32.png') %>"></img> Cucumber-Rails <%= CUCUMBER_RAILS_VERSION %></h3>
|
1
|
+
<h3><img src="<%= url_for('images/bubble_32x32.png') %>"></img> Cucumber-Rails <%= CUCUMBER_RAILS_VERSION %></h3>
|
@@ -1,4 +1,9 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
def init
|
2
4
|
super
|
3
|
-
options[:serializer].serialize(
|
5
|
+
options[:serializer].serialize(
|
6
|
+
'/images/bubble_32x32.png',
|
7
|
+
IO.read(File.dirname(__FILE__) + '/bubble_32x32.png')
|
8
|
+
)
|
4
9
|
end
|
data/dev_tasks/yard.rake
CHANGED
@@ -1,3 +1,5 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
require 'yard'
|
2
4
|
require 'yard/rake/yardoc_task'
|
3
5
|
|
@@ -6,9 +8,8 @@ API_DIR = File.join(SITE_DIR, 'api', 'cucumber-rails', 'ruby', 'yardoc')
|
|
6
8
|
|
7
9
|
namespace :api do
|
8
10
|
file :dir do
|
9
|
-
unless File.directory?(SITE_DIR)
|
10
|
-
|
11
|
-
end
|
11
|
+
raise "You need to git clone git@github.com:cucumber/cucumber.github.com.git #{SITE_DIR}" unless File.directory?(SITE_DIR)
|
12
|
+
|
12
13
|
sh('git pull origin master')
|
13
14
|
mkdir_p API_DIR
|
14
15
|
end
|
@@ -18,18 +19,10 @@ namespace :api do
|
|
18
19
|
YARD::Rake::YardocTask.new(:yard) do |yard|
|
19
20
|
dir = API_DIR
|
20
21
|
mkdir_p dir
|
21
|
-
yard.options = [
|
22
|
-
end
|
23
|
-
task :yard => :dir
|
24
|
-
|
25
|
-
task :release do
|
26
|
-
Dir.chdir(SITE_DIR) do
|
27
|
-
sh('git add .')
|
28
|
-
sh("git commit -m 'Update API docs for cucumber-rails v#{cucumber-rails::VERSION}'")
|
29
|
-
sh('git push origin master')
|
30
|
-
end
|
22
|
+
yard.options = ['--out', dir]
|
31
23
|
end
|
24
|
+
task yard: :dir
|
32
25
|
|
33
26
|
desc "Generate YARD docs for Cucumber-Rails' API"
|
34
|
-
task :
|
27
|
+
task doc: :yard
|
35
28
|
end
|
@@ -1,54 +1,59 @@
|
|
1
1
|
Feature: Allow Cucumber to rescue exceptions
|
2
2
|
|
3
3
|
Background: A controller that raises an exception
|
4
|
-
Given I have created a new Rails app
|
5
|
-
|
4
|
+
Given I have created a new Rails app and installed cucumber-rails
|
5
|
+
When I write to "app/controllers/posts_controller.rb" with:
|
6
6
|
"""
|
7
7
|
class PostsController < ApplicationController
|
8
8
|
def index
|
9
|
-
raise
|
9
|
+
raise 'There is an error in index'
|
10
10
|
end
|
11
11
|
end
|
12
12
|
"""
|
13
13
|
And I write to "config/routes.rb" with:
|
14
14
|
"""
|
15
|
-
|
15
|
+
TestApp::Application.routes.draw do
|
16
16
|
resources :posts
|
17
17
|
end
|
18
18
|
"""
|
19
19
|
|
20
20
|
Scenario: Allow rescue
|
21
|
-
|
21
|
+
When I write to "features/posts.feature" with:
|
22
22
|
"""
|
23
|
-
Feature:
|
23
|
+
Feature: Posts
|
24
24
|
@allow-rescue
|
25
25
|
Scenario: See posts
|
26
26
|
When I look at the posts
|
27
|
+
Then I should see the public error page
|
27
28
|
"""
|
28
29
|
And I write to "features/step_definitions/posts_steps.rb" with:
|
29
30
|
"""
|
30
|
-
When
|
31
|
+
When('I look at the posts') do
|
31
32
|
visit '/posts'
|
32
33
|
end
|
34
|
+
|
35
|
+
Then('I should see the public error page') do
|
36
|
+
expect(page).to have_content "We're sorry, but something went wrong."
|
37
|
+
end
|
33
38
|
"""
|
34
39
|
And I run `bundle exec rake db:migrate`
|
35
40
|
And I run `bundle exec cucumber`
|
36
|
-
Then
|
41
|
+
Then the feature run should pass with:
|
37
42
|
"""
|
38
43
|
1 scenario (1 passed)
|
39
|
-
|
44
|
+
2 steps (2 passed)
|
40
45
|
"""
|
41
46
|
|
42
47
|
Scenario: Don't allow rescue
|
43
|
-
|
48
|
+
When I write to "features/posts.feature" with:
|
44
49
|
"""
|
45
|
-
Feature:
|
50
|
+
Feature: Posts
|
46
51
|
Scenario: See them
|
47
52
|
When I look at the posts
|
48
53
|
"""
|
49
54
|
And I write to "features/step_definitions/posts_steps.rb" with:
|
50
55
|
"""
|
51
|
-
When
|
56
|
+
When('I look at the posts') do
|
52
57
|
visit '/posts'
|
53
58
|
end
|
54
59
|
"""
|
@@ -0,0 +1,20 @@
|
|
1
|
+
Feature: Annotations
|
2
|
+
|
3
|
+
In order to track my development progress
|
4
|
+
As a developer
|
5
|
+
I should be able to list annotations in my features
|
6
|
+
|
7
|
+
Scenario: See annotations in feature file
|
8
|
+
Given I have created a new Rails app with no database and installed cucumber-rails
|
9
|
+
When I write to "features/products.feature" with:
|
10
|
+
"""
|
11
|
+
Feature: Products
|
12
|
+
Scenario: Test a Product
|
13
|
+
# TODO: When I go to the products page
|
14
|
+
"""
|
15
|
+
When I run `bundle exec rake notes`
|
16
|
+
Then it should pass with:
|
17
|
+
"""
|
18
|
+
features/products.feature:
|
19
|
+
* [3] [TODO] When I go to the products page
|
20
|
+
"""
|