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.
Files changed (90) hide show
  1. checksums.yaml +7 -0
  2. data/.github/ISSUE_TEMPLATE.md +52 -0
  3. data/.github/PULL_REQUEST_TEMPLATE.md +42 -0
  4. data/.gitignore +3 -0
  5. data/.rspec +4 -1
  6. data/.rubocop.yml +68 -0
  7. data/.travis.yml +53 -26
  8. data/Appraisals +27 -63
  9. data/{History.md → CHANGELOG.md} +299 -19
  10. data/CONTRIBUTING.md +18 -27
  11. data/Gemfile +2 -4
  12. data/LICENSE +1 -1
  13. data/README.md +73 -29
  14. data/Rakefile +18 -14
  15. data/bin/install_geckodriver.sh +19 -0
  16. data/bin/install_webpacker.sh +9 -0
  17. data/config/cucumber.yml +5 -3
  18. data/cucumber-rails.gemspec +37 -25
  19. data/dev_tasks/cucumber.rake +3 -3
  20. data/dev_tasks/rspec.rake +3 -6
  21. data/dev_tasks/yard/default/layout/html/footer.erb +1 -1
  22. data/dev_tasks/yard/default/layout/html/layout.erb +5 -5
  23. data/dev_tasks/yard/default/layout/html/logo.erb +1 -1
  24. data/dev_tasks/yard/default/layout/html/setup.rb +6 -1
  25. data/dev_tasks/yard.rake +7 -14
  26. data/features/allow_rescue.feature +17 -12
  27. data/features/annotations.feature +20 -0
  28. data/features/capybara_javascript_drivers.feature +42 -32
  29. data/features/choose_javascript_database_strategy.feature +38 -57
  30. data/features/configuration.feature +48 -0
  31. data/features/database_cleaner.feature +20 -20
  32. data/features/disable_automatic_database_cleaning.feature +13 -19
  33. data/features/emulate_javascript.feature +65 -48
  34. data/features/install_cucumber_rails.feature +6 -5
  35. data/features/no_database.feature +8 -15
  36. data/features/raising_errors.feature +10 -4
  37. data/features/rerun_profile.feature +18 -8
  38. data/features/rest_api.feature +13 -13
  39. data/features/step_definitions/cucumber_rails_steps.rb +52 -66
  40. data/features/support/aruba.rb +5 -0
  41. data/features/support/cucumber_rails_helper.rb +85 -0
  42. data/features/support/env.rb +4 -35
  43. data/features/support/hooks.rb +8 -0
  44. data/gemfiles/rails_4_2.gemfile +10 -0
  45. data/gemfiles/rails_5_0.gemfile +10 -0
  46. data/gemfiles/rails_5_1.gemfile +10 -0
  47. data/gemfiles/rails_5_2.gemfile +10 -0
  48. data/gemfiles/rails_6_0.gemfile +9 -0
  49. data/lib/cucumber/rails/action_dispatch.rb +21 -0
  50. data/lib/cucumber/rails/application.rb +17 -8
  51. data/lib/cucumber/rails/capybara/javascript_emulation.rb +47 -39
  52. data/lib/cucumber/rails/capybara/select_dates_and_times.rb +8 -6
  53. data/lib/cucumber/rails/capybara.rb +2 -0
  54. data/lib/cucumber/rails/database.rb +36 -17
  55. data/lib/cucumber/rails/hooks/active_record.rb +14 -12
  56. data/lib/cucumber/rails/hooks/allow_rescue.rb +2 -0
  57. data/lib/cucumber/rails/hooks/database_cleaner.rb +6 -4
  58. data/lib/cucumber/rails/hooks/mail.rb +4 -4
  59. data/lib/cucumber/rails/hooks.rb +2 -0
  60. data/lib/cucumber/rails/rspec.rb +5 -3
  61. data/lib/cucumber/rails/world.rb +26 -9
  62. data/lib/cucumber/rails.rb +21 -18
  63. data/lib/generators/cucumber/{install/USAGE → USAGE} +2 -2
  64. data/lib/generators/cucumber/{install/install_generator.rb → install_generator.rb} +28 -15
  65. data/lib/generators/cucumber/{install/templates → templates}/config/cucumber.yml.erb +4 -3
  66. data/lib/generators/cucumber/{install/templates → templates}/script/cucumber +1 -0
  67. data/lib/generators/cucumber/{install/templates → templates}/support/_rails_each_run.rb.erb +4 -4
  68. data/lib/generators/cucumber/{install/templates → templates}/support/_rails_prefork.rb.erb +0 -0
  69. data/lib/generators/cucumber/{install/templates → templates}/support/capybara.rb +2 -0
  70. data/lib/generators/cucumber/{install/templates → templates}/support/edit_warning.txt +0 -0
  71. data/lib/generators/cucumber/{install/templates → templates}/support/rails.rb.erb +0 -0
  72. data/lib/generators/cucumber/{install/templates → templates}/support/rails_spork.rb.erb +2 -2
  73. data/lib/generators/cucumber/{install/templates → templates}/tasks/cucumber.rake.erb +19 -8
  74. data/spec/cucumber/rails/database_spec.rb +46 -33
  75. data/spec/generators/cucumber/install_generator_spec.rb +55 -0
  76. data/spec/spec_helper.rb +14 -2
  77. metadata +228 -142
  78. data/Gemfile.appraisal +0 -3
  79. data/features/step_definitions/mongo_steps.rb +0 -3
  80. data/features/support/bundler_pre_support.rb +0 -28
  81. data/features/support/fixtures/bundler-1.0.21.gem +0 -0
  82. data/features/support/fixtures/bundler-1.1.rc.gem +0 -0
  83. data/features/support/legacy_web_steps_support.rb +0 -290
  84. data/gemfiles/capybara_1_1.gemfile +0 -17
  85. data/gemfiles/rails_3_0.gemfile +0 -16
  86. data/gemfiles/rails_3_1.gemfile +0 -17
  87. data/gemfiles/rails_3_2.gemfile +0 -17
  88. data/gemfiles/rails_4_0.gemfile +0 -20
  89. data/lib/cucumber/rails/action_controller.rb +0 -12
  90. data/spec/generators/cucumber/install/install_generator_spec.rb +0 -47
checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA256:
3
+ metadata.gz: eba00efc3e821aa337c9e16993ba558c1a5f1c795c5db9fb00104f5de38839cd
4
+ data.tar.gz: af9a02416bdeda7f9d3c1c3600df92ff2248788909c1f18ff333223c025e64cc
5
+ SHA512:
6
+ metadata.gz: c711b5a237e9d4e9e53936e2d9836d74f58604a864769c91758a00a742649945e2a798ea4881b26466a21307bed029dac6f36f5dc54650e406133fd27d35c82e
7
+ data.tar.gz: 499ba57f75835fc6ca390e7c313e7dd442a1b92cddb30b516841892bd15223ecd41b595e885e7bb3dbe890847f7a1e03b0c9195656b0a6e7915d19af67d5d59d
@@ -0,0 +1,52 @@
1
+ <!-- NAMING YOUR ISSUE: Please prefix your issue with the name of the sub-project -->
2
+ <!-- e.g. `event-protocol: Schemas out of date` -->
3
+ <!-- This makes it easier to get some context when reading the names of issues -->
4
+
5
+ <!-- These sections are meant as guidance for you, to help you give the kind of information we'll need to help with your issue. If a section doesn't seem to fit, just skip it.
6
+
7
+ In general: Please provide as much information as you can to help us solving your problem -->
8
+
9
+ ## Summary
10
+
11
+ <!--- Provide a general summary description of the issue -->
12
+
13
+ ## Expected Behavior
14
+
15
+ <!--- If you're describing a bug, tell us what should happen -->
16
+ <!--- If you're suggesting a change/improvement, tell us how it should work -->
17
+ <!--- Feel free to use Given / Then / Then if that helps, but please add some plain-language context too -->
18
+
19
+ ## Current Behavior
20
+
21
+ <!--- If describing a bug, tell us what happens instead of the expected behavior -->
22
+ <!--- If suggesting a change/improvement, explain the difference from current behavior -->
23
+
24
+ <!--- If you have got some output place it in the code block below. Otherwise remove it. -->
25
+ ~~~
26
+ ~~~
27
+
28
+ ## Possible Solution
29
+
30
+ <!--- Not obligatory, but suggest a fix/reason for the bug, -->
31
+ <!--- or ideas how to implement the addition or change -->
32
+
33
+ ## Steps to Reproduce (for bugs)
34
+
35
+ <!--- Provide a link to a live example, or an unambiguous set of steps to -->
36
+ <!--- reproduce this bug. Include code to reproduce, if relevant -->
37
+ 1.
38
+ 2.
39
+ 3.
40
+ 4.
41
+
42
+ ## Context & Motivation
43
+
44
+ <!--- How has this issue affected you? What are you trying to accomplish? -->
45
+ <!--- Providing context helps us come up with a solution that is most useful in the real world -->
46
+
47
+ ## Your Environment
48
+
49
+ <!--- If you're reporting a bug, include as many relevant details about the environment you experienced the bug in -->
50
+ * Version used:
51
+ * Operating System and version:
52
+ * Link to your project:
@@ -0,0 +1,42 @@
1
+ <!-- NAMING YOUR PULL REQUEST: Please choose a concise, descriptive name for your pull request. -->
2
+ <!-- This makes it easier to get some context when reading the names of issues -->
3
+
4
+ <!-- These sections are meant as guidance for you. If something doesn't fit, you can just skip it. -->
5
+
6
+ ## Summary
7
+
8
+ <!--- Provide a general summary description of your changes -->
9
+
10
+ ## Details
11
+
12
+ <!--- Describe your changes in detail -->
13
+
14
+ ## Motivation and Context
15
+
16
+ <!--- Why is this change required? What problem does it solve? -->
17
+ <!--- If it fixes an open issue, please link to the issue here. -->
18
+
19
+ ## How Has This Been Tested?
20
+
21
+ <!--- Please add tests for changes to the code, otherwise we probably won't merge it -->
22
+
23
+ <!--- Please describe in detail how you tested your changes. -->
24
+ <!--- Include details of your testing environment, tests ran to see how -->
25
+ <!--- your change affects other areas of the code, etc. -->
26
+
27
+ ## Screenshots (if appropriate):
28
+
29
+ ## Types of changes
30
+
31
+ <!--- What types of changes does your code introduce? Put an `x` in all the boxes that apply: -->
32
+ - [ ] Bug fix (non-breaking change which fixes an issue).
33
+ - [ ] New feature (non-breaking change which adds functionality).
34
+ - [ ] Breaking change (fix or feature that would cause existing functionality to not work as expected).
35
+
36
+ ## Checklist:
37
+
38
+ <!--- Go over all the following points, and put an `x` in all the boxes that apply. -->
39
+ <!--- If you're unsure about any of these, don't hesitate to ask. We're here to help! -->
40
+ - [ ] I've added tests for my code.
41
+ - [ ] My change requires a change to the documentation.
42
+ - [ ] I have updated the documentation accordingly.
data/.gitignore CHANGED
@@ -9,3 +9,6 @@ coverage
9
9
  .cucumber.rerun
10
10
  gemfiles/*.lock
11
11
  Gemfile.lock
12
+ spec/examples.txt
13
+ .idea
14
+ .ruby-version
data/.rspec CHANGED
@@ -1 +1,4 @@
1
- --format progress --colour
1
+ --format progress
2
+ --color
3
+ --order random
4
+ --require spec_helper
data/.rubocop.yml ADDED
@@ -0,0 +1,68 @@
1
+ require:
2
+ - rubocop-rspec
3
+ - rubocop-performance
4
+
5
+ AllCops:
6
+ TargetRubyVersion: 2.4
7
+ Exclude:
8
+ # These are auto-generated from a load of features that use aruba
9
+ - 'tmp/**/*'
10
+ # Generated by appraisal
11
+ - 'gemfiles/*.gemfile'
12
+
13
+ # These two areas will frequently break this limit, so we ignore the limit
14
+ Metrics/BlockLength:
15
+ Exclude:
16
+ - './spec/**/*_spec.rb'
17
+ - 'cucumber-rails.gemspec'
18
+
19
+ # This allows us to read the chmod action in a more reproducible way
20
+ Style/NumericLiteralPrefix:
21
+ EnforcedOctalStyle: zero_only
22
+
23
+ # Enable new cops
24
+ Layout/EmptyLinesAroundAttributeAccessor:
25
+ Enabled: true
26
+ Layout/SpaceAroundMethodCallOperator:
27
+ Enabled: true
28
+ Lint/DeprecatedOpenSSLConstant:
29
+ Enabled: true
30
+ Lint/MixedRegexpCaptureTypes:
31
+ Enabled: true
32
+ Lint/RaiseException:
33
+ Enabled: true
34
+ Lint/StructNewOverride:
35
+ Enabled: true
36
+ Style/ExponentialNotation:
37
+ Enabled: true
38
+ Style/HashEachMethods:
39
+ Enabled: true
40
+ Style/HashTransformKeys:
41
+ Enabled: true
42
+ Style/HashTransformValues:
43
+ Enabled: true
44
+ Style/RedundantRegexpCharacterClass:
45
+ Enabled: true
46
+ Style/RedundantRegexpEscape:
47
+ Enabled: true
48
+ Style/SlicingWithRange:
49
+ Enabled: true
50
+
51
+ ## Cucumber Repo styles (Across implementations) ##
52
+
53
+ Layout/LineLength:
54
+ Max: 200
55
+ IgnoredPatterns:
56
+ - '^Given'
57
+ - '^When'
58
+ - '^Then'
59
+
60
+ Style/Documentation:
61
+ Enabled: false
62
+
63
+ Style/RegexpLiteral:
64
+ EnforcedStyle: slashes
65
+ AllowInnerSlashes: true
66
+
67
+ RSpec/MessageSpies:
68
+ EnforcedStyle: receive
data/.travis.yml CHANGED
@@ -1,35 +1,62 @@
1
- rvm:
2
- - 1.9.3
3
- - 2.0.0
1
+ language: ruby
2
+
3
+ dist: bionic
4
+
5
+ rvm:
6
+ - 2.4
7
+ - 2.5
8
+ - 2.6
9
+ - 2.7
10
+ - ruby-head
11
+
12
+ addons:
13
+ firefox: latest
4
14
 
5
- # whitelist
6
15
  branches:
7
16
  only:
8
17
  - master
9
18
 
19
+ services:
20
+ - xvfb
21
+
10
22
  gemfile:
11
- - gemfiles/rails_3_0.gemfile
12
- - gemfiles/rails_3_1.gemfile
13
- - gemfiles/rails_3_2.gemfile
14
- - gemfiles/capybara_1_1.gemfile
15
- - gemfiles/rails_4_0.gemfile
23
+ - gemfiles/rails_6_0.gemfile
24
+ - gemfiles/rails_5_2.gemfile
25
+ - gemfiles/rails_5_1.gemfile
26
+ - gemfiles/rails_5_0.gemfile
27
+ - gemfiles/rails_4_2.gemfile
16
28
 
17
29
  matrix:
30
+ fast_finish: true
31
+ allow_failures:
32
+ - rvm: ruby-head
18
33
  exclude:
19
- - rvm: 2.0.0
20
- gemfile: gemfiles/rails_3_0.gemfile
21
- - rvm: 2.0.0
22
- gemfile: gemfiles/rails_3_1.gemfile
23
- - rvm: 2.0.0
24
- gemfile: gemfiles/capybara_1_1.gemfile
25
-
26
- # Needed for selenium browser
27
- before_script:
28
- - "export DISPLAY=:99.0"
29
- - "sh -e /etc/init.d/xvfb start"
30
-
31
- notifications:
32
- email:
33
- - cukes-devs@googlegroups.com
34
- irc:
35
- - "irc.freenode.org#cucumber"
34
+ # Only test Rails6 on supported rubies
35
+ # Don't test lowest rails support on maintained rubies
36
+ - rvm: 2.4
37
+ gemfile: gemfiles/rails_6_0.gemfile
38
+ - rvm: 2.5
39
+ gemfile: gemfiles/rails_4_2.gemfile
40
+ - rvm: 2.6
41
+ gemfile: gemfiles/rails_4_2.gemfile
42
+ - rvm: 2.6
43
+ gemfile: gemfiles/rails_5_0.gemfile
44
+ - rvm: 2.6
45
+ gemfile: gemfiles/rails_5_1.gemfile
46
+ - rvm: 2.7
47
+ gemfile: gemfiles/rails_4_2.gemfile
48
+ - rvm: 2.7
49
+ gemfile: gemfiles/rails_5_0.gemfile
50
+ - rvm: 2.7
51
+ gemfile: gemfiles/rails_5_1.gemfile
52
+ - rvm: ruby-head
53
+ gemfile: gemfiles/rails_4_2.gemfile
54
+ - rvm: ruby-head
55
+ gemfile: gemfiles/rails_5_0.gemfile
56
+ - rvm: ruby-head
57
+ gemfile: gemfiles/rails_5_1.gemfile
58
+
59
+ before_install:
60
+ - gem install --remote bundler -v '~> 1.17'
61
+ - bin/install_geckodriver.sh
62
+ - bin/install_webpacker.sh
data/Appraisals CHANGED
@@ -1,71 +1,35 @@
1
- appraise "rails_3_0" do
2
- gem "rails", "~> 3.0.20"
3
- gem "capybara", "~> 2.0.2"
4
- gem "turn", "~> 0.9.6"
5
- gem "rspec-rails", "~> 2.12.2"
6
- gem 'jquery-rails', "~> 2.2.1"
7
- gem "uglifier", "~> 2.1.0"
8
- gem 'sqlite3', "~> 1.3.7"
9
- gem "bson_ext", "~> 1.8.5"
10
- gem "mongoid", "~> 2.2.6"
11
- gem 'database_cleaner', "~> 1.0.1"
1
+ # frozen_string_literal: true
2
+
3
+ appraise 'rails_4_2' do
4
+ gem 'capybara', '< 3.16.0', platform: :mri_23
5
+ gem 'nokogiri', '< 1.9.1', platform: :mri_23
6
+ gem 'railties', '~> 4.2.11'
7
+ gem 'sqlite3', '~> 1.3.13'
12
8
  end
13
9
 
14
- appraise "rails_3_1" do
15
- gem "rails", "~> 3.1.11"
16
- gem "capybara", "~> 2.0.2"
17
- gem 'turn', "~> 0.9.6"
18
- gem "rspec-rails", "~> 2.12.2"
19
- gem 'sass-rails', "~> 3.1.7"
20
- gem 'coffee-rails', "~> 3.1.1"
21
- gem 'jquery-rails', "~> 2.2.1"
22
- gem "uglifier", "~> 2.1.0"
23
- gem 'sqlite3', "~> 1.3.7"
24
- gem "bson_ext", "~> 1.8.5"
25
- gem 'database_cleaner', "~> 1.0.1"
10
+ appraise 'rails_5_0' do
11
+ gem 'capybara', '< 3.16.0', platform: :mri_23
12
+ gem 'nokogiri', '< 1.9.1', platform: :mri_23
13
+ gem 'railties', '~> 5.0.7'
14
+ gem 'sqlite3', '~> 1.3.13'
26
15
  end
27
16
 
28
- appraise "rails_3_2" do
29
- gem "rails", "~> 3.2.12"
30
- gem "capybara", "~> 2.0.2"
31
- gem 'turn', "~> 0.9.6"
32
- gem "rspec-rails", "~> 2.12.2"
33
- gem 'sass-rails', "~> 3.2.6"
34
- gem 'coffee-rails', "~> 3.2.2"
35
- gem 'jquery-rails', "~> 2.2.1"
36
- gem "uglifier", "~> 2.1.0"
37
- gem 'sqlite3', "~> 1.3.7"
38
- gem "bson_ext", "~> 1.8.5"
39
- gem 'database_cleaner', "~> 1.0.1"
17
+ appraise 'rails_5_1' do
18
+ gem 'capybara', '< 3.16.0', platform: :mri_23
19
+ gem 'nokogiri', '< 1.9.1', platform: :mri_23
20
+ gem 'railties', '~> 5.1.7'
21
+ gem 'sqlite3', '~> 1.3.13'
40
22
  end
41
23
 
42
- appraise "capybara_1_1" do
43
- gem "capybara", "~> 1.1.2"
44
- gem "rails", "~> 3.2.12"
45
- gem 'turn', "~> 0.9.6"
46
- gem "rspec-rails", "~> 2.12.2"
47
- gem 'sass-rails', "~> 3.2.6"
48
- gem 'coffee-rails', "~> 3.2.2"
49
- gem 'jquery-rails', "~> 2.2.1"
50
- gem "uglifier", "~> 2.1.0"
51
- gem 'sqlite3', "~> 1.3.7"
52
- gem "bson_ext", "~> 1.8.5"
53
- gem 'database_cleaner', "~> 1.0.1"
24
+ appraise 'rails_5_2' do
25
+ gem 'capybara', '< 3.16.0', platform: :mri_23
26
+ gem 'nokogiri', '< 1.9.1', platform: :mri_23
27
+ gem 'railties', '~> 5.2.0'
28
+ gem 'sqlite3', '~> 1.3.13'
54
29
  end
55
30
 
56
- appraise "rails_4_0" do
57
- gem "protected_attributes", "~> 1.0.3"
58
- gem "rails", "~> 4.0.0"
59
- gem "railties", "~> 4.0.0"
60
- gem "capybara", "~> 2.0.2"
61
- gem 'turn', "~> 0.9.6"
62
- gem "rspec-rails", "~> 2.12.2"
63
- gem 'sass-rails', "~> 4.0.0"
64
- gem 'coffee-rails', "~> 4.0.0"
65
- gem 'jquery-rails', "~> 2.2.1"
66
- gem "uglifier", "~> 2.1.0"
67
- gem 'sqlite3', "~> 1.3.7"
68
- gem "bson_ext", "~> 1.8.5"
69
- gem 'mongoid', git: 'https://github.com/mongoid/mongoid.git'
70
- gem 'database_cleaner', "~> 1.0.1"
71
- end
31
+ appraise 'rails_6_0' do
32
+ gem 'railties', '~> 6.0.0'
33
+ gem 'rails', '~> 6.0.0'
34
+ gem 'sqlite3', '~> 1.4'
35
+ end