Upgrade gems
You need to update a lof gems. Make sure you don't have any version constraints in your Gemfile or your bundle update won't do anything!
Upgrade cucumber_priority:
bundle update cucumber_priority
Upgrade spreewald:
bundle update spreewald
Upgrade cucumber_factory:
bundle update cucumber_factory
Upgrade parallel_tests:
bundle update parallel_tests
Even on the latest version, parallel_tests will print some deprecation warnings due to using an older formatter API. Maybe there will be a fix for that eventually.
Update cucumber-rails to >= 1.6.0:
bundle update cucumber-rails
Upgrade cucumber:
bundle update cucumber
Make sure you have a recent version of geordi (it doesn't belong in your Gemfile!):
gem install geordi
Check if you're using Transforms
Transform is no longer supported in Cucumber 3.
There is something similiar called ParameterType. A ParameterType is no longer applied blindly to all strings that match. Step definitions need to explicitely define that they're using a ParameterType.
Use the new tag syntax
| Cucumber 1/2 | Cucumber 3 |
|---|---|
@tag |
@tag |
~@tag |
not @tag |
@foo, @bar |
(@foo or @bar) |
So you need to replace a hook like this:
AfterStep('~@javascript') do
...
end
With this:
AfterStep('not @javascript') do
...
end
Also grep your entire project for ~@ and change it to "not @". Note that you need to quote both words if it's a shell command arg.
You will probably find this line in your config/cucumber.yml:
std_opts = "-r features --format #{ENV['CUCUMBER_FORMAT'] || 'progress'} --strict --tags ~@wip"
Change it to:
std_opts = "-r features --format #{ENV['CUCUMBER_FORMAT'] || 'progress'} --strict --tags 'not @wip'"
Fix step definitions
I had some errors like IndexError: index 2 out of matches.
This can have 2 causes:
- You have a step definition that defines capture groups in its regular expression, but the block takes a different number of arguments.
- Allegedly the Cucumber 3 parser only counts top-level regexp groups, ignoring nested capture groups (I could not confirm that).
Read more
Upgrading to Cucumber 3.0.0 on cucumber.io Show archive.org snapshot