cucumber-rails 2.2.0 → 2.3.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (198) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +60 -19
  3. data/lib/cucumber/rails/database/deletion_strategy.rb +2 -0
  4. data/lib/cucumber/rails/database/shared_connection_strategy.rb +2 -0
  5. data/lib/cucumber/rails/database/strategy.rb +2 -0
  6. data/lib/cucumber/rails/database/truncation_strategy.rb +2 -0
  7. metadata +13 -226
  8. data/Appraisals +0 -26
  9. data/Gemfile +0 -5
  10. data/Rakefile +0 -53
  11. data/bin/install_geckodriver.sh +0 -19
  12. data/bin/install_webpacker.sh +0 -9
  13. data/config/cucumber.yml +0 -17
  14. data/cucumber-rails.gemspec +0 -53
  15. data/dev_tasks/cucumber.rake +0 -5
  16. data/dev_tasks/rspec.rake +0 -5
  17. data/dev_tasks/yard.rake +0 -28
  18. data/dev_tasks/yard/default/layout/html/bubble_32x32.png +0 -0
  19. data/dev_tasks/yard/default/layout/html/footer.erb +0 -5
  20. data/dev_tasks/yard/default/layout/html/index.erb +0 -1
  21. data/dev_tasks/yard/default/layout/html/layout.erb +0 -25
  22. data/dev_tasks/yard/default/layout/html/logo.erb +0 -1
  23. data/dev_tasks/yard/default/layout/html/setup.rb +0 -9
  24. data/features/allow_rescue.feature +0 -66
  25. data/features/annotations.feature +0 -20
  26. data/features/capybara_javascript_drivers.feature +0 -132
  27. data/features/choose_javascript_database_strategy.feature +0 -125
  28. data/features/configuration.feature +0 -48
  29. data/features/database_cleaner.feature +0 -131
  30. data/features/disable_automatic_database_cleaning.feature +0 -49
  31. data/features/emulate_javascript.feature +0 -109
  32. data/features/install_cucumber_rails.feature +0 -14
  33. data/features/no_database.feature +0 -61
  34. data/features/raising_errors.feature +0 -22
  35. data/features/rerun_profile.feature +0 -47
  36. data/features/rest_api.feature +0 -47
  37. data/features/step_definitions/cucumber_rails_steps.rb +0 -80
  38. data/features/support/aruba.rb +0 -5
  39. data/features/support/cucumber_rails_helper.rb +0 -86
  40. data/features/support/env.rb +0 -6
  41. data/features/support/hooks.rb +0 -8
  42. data/gemfiles/rails_5_0.gemfile +0 -10
  43. data/gemfiles/rails_5_1.gemfile +0 -10
  44. data/gemfiles/rails_5_2.gemfile +0 -9
  45. data/gemfiles/rails_6_0.gemfile +0 -8
  46. data/spec/cucumber/rails/database_spec.rb +0 -74
  47. data/spec/examples.txt +0 -19
  48. data/spec/generators/cucumber/install_generator_spec.rb +0 -55
  49. data/spec/spec_helper.rb +0 -16
  50. data/tmp/aruba/test_app/Gemfile +0 -62
  51. data/tmp/aruba/test_app/Gemfile.lock +0 -249
  52. data/tmp/aruba/test_app/README.md +0 -24
  53. data/tmp/aruba/test_app/Rakefile +0 -6
  54. data/tmp/aruba/test_app/app/assets/config/manifest.js +0 -3
  55. data/tmp/aruba/test_app/app/assets/javascripts/application.js +0 -16
  56. data/tmp/aruba/test_app/app/assets/javascripts/appointments.coffee +0 -3
  57. data/tmp/aruba/test_app/app/assets/javascripts/cable.js +0 -13
  58. data/tmp/aruba/test_app/app/assets/stylesheets/application.css +0 -15
  59. data/tmp/aruba/test_app/app/assets/stylesheets/appointments.scss +0 -3
  60. data/tmp/aruba/test_app/app/assets/stylesheets/scaffolds.scss +0 -84
  61. data/tmp/aruba/test_app/app/channels/application_cable/channel.rb +0 -4
  62. data/tmp/aruba/test_app/app/channels/application_cable/connection.rb +0 -4
  63. data/tmp/aruba/test_app/app/controllers/application_controller.rb +0 -2
  64. data/tmp/aruba/test_app/app/controllers/appointments_controller.rb +0 -74
  65. data/tmp/aruba/test_app/app/helpers/application_helper.rb +0 -2
  66. data/tmp/aruba/test_app/app/helpers/appointments_helper.rb +0 -2
  67. data/tmp/aruba/test_app/app/jobs/application_job.rb +0 -2
  68. data/tmp/aruba/test_app/app/mailers/application_mailer.rb +0 -4
  69. data/tmp/aruba/test_app/app/models/application_record.rb +0 -3
  70. data/tmp/aruba/test_app/app/models/appointment.rb +0 -2
  71. data/tmp/aruba/test_app/app/views/appointments/_appointment.json.jbuilder +0 -2
  72. data/tmp/aruba/test_app/app/views/appointments/_form.html.erb +0 -27
  73. data/tmp/aruba/test_app/app/views/appointments/edit.html.erb +0 -6
  74. data/tmp/aruba/test_app/app/views/appointments/index.html.erb +0 -29
  75. data/tmp/aruba/test_app/app/views/appointments/index.json.jbuilder +0 -1
  76. data/tmp/aruba/test_app/app/views/appointments/new.html.erb +0 -5
  77. data/tmp/aruba/test_app/app/views/appointments/show.html.erb +0 -14
  78. data/tmp/aruba/test_app/app/views/appointments/show.json.jbuilder +0 -1
  79. data/tmp/aruba/test_app/app/views/layouts/application.html.erb +0 -15
  80. data/tmp/aruba/test_app/app/views/layouts/mailer.html.erb +0 -13
  81. data/tmp/aruba/test_app/app/views/layouts/mailer.text.erb +0 -1
  82. data/tmp/aruba/test_app/bin/bundle +0 -3
  83. data/tmp/aruba/test_app/bin/rails +0 -4
  84. data/tmp/aruba/test_app/bin/rake +0 -4
  85. data/tmp/aruba/test_app/bin/setup +0 -36
  86. data/tmp/aruba/test_app/bin/update +0 -31
  87. data/tmp/aruba/test_app/bin/yarn +0 -11
  88. data/tmp/aruba/test_app/config.ru +0 -5
  89. data/tmp/aruba/test_app/config/application.rb +0 -19
  90. data/tmp/aruba/test_app/config/boot.rb +0 -3
  91. data/tmp/aruba/test_app/config/cable.yml +0 -10
  92. data/tmp/aruba/test_app/config/credentials.yml.enc +0 -1
  93. data/tmp/aruba/test_app/config/cucumber.yml +0 -9
  94. data/tmp/aruba/test_app/config/database.yml +0 -25
  95. data/tmp/aruba/test_app/config/environment.rb +0 -5
  96. data/tmp/aruba/test_app/config/environments/development.rb +0 -61
  97. data/tmp/aruba/test_app/config/environments/production.rb +0 -94
  98. data/tmp/aruba/test_app/config/environments/test.rb +0 -46
  99. data/tmp/aruba/test_app/config/initializers/application_controller_renderer.rb +0 -8
  100. data/tmp/aruba/test_app/config/initializers/assets.rb +0 -14
  101. data/tmp/aruba/test_app/config/initializers/backtrace_silencers.rb +0 -7
  102. data/tmp/aruba/test_app/config/initializers/content_security_policy.rb +0 -25
  103. data/tmp/aruba/test_app/config/initializers/cookies_serializer.rb +0 -5
  104. data/tmp/aruba/test_app/config/initializers/filter_parameter_logging.rb +0 -4
  105. data/tmp/aruba/test_app/config/initializers/inflections.rb +0 -16
  106. data/tmp/aruba/test_app/config/initializers/mime_types.rb +0 -4
  107. data/tmp/aruba/test_app/config/initializers/wrap_parameters.rb +0 -14
  108. data/tmp/aruba/test_app/config/locales/en.yml +0 -33
  109. data/tmp/aruba/test_app/config/master.key +0 -1
  110. data/tmp/aruba/test_app/config/puma.rb +0 -37
  111. data/tmp/aruba/test_app/config/routes.rb +0 -4
  112. data/tmp/aruba/test_app/config/storage.yml +0 -34
  113. data/tmp/aruba/test_app/db/development.sqlite3 +0 -0
  114. data/tmp/aruba/test_app/db/migrate/20200821080656_create_appointments.rb +0 -10
  115. data/tmp/aruba/test_app/db/schema.rb +0 -22
  116. data/tmp/aruba/test_app/db/seeds.rb +0 -7
  117. data/tmp/aruba/test_app/db/test.sqlite3 +0 -0
  118. data/tmp/aruba/test_app/features/create_appointment.feature +0 -9
  119. data/tmp/aruba/test_app/features/create_appointment_steps.rb +0 -19
  120. data/tmp/aruba/test_app/features/support/env.rb +0 -18
  121. data/tmp/aruba/test_app/lib/tasks/cucumber.rake +0 -76
  122. data/tmp/aruba/test_app/log/development.log +0 -27
  123. data/tmp/aruba/test_app/log/test.log +0 -38
  124. data/tmp/aruba/test_app/package.json +0 -5
  125. data/tmp/aruba/test_app/public/404.html +0 -67
  126. data/tmp/aruba/test_app/public/422.html +0 -67
  127. data/tmp/aruba/test_app/public/500.html +0 -66
  128. data/tmp/aruba/test_app/public/apple-touch-icon-precomposed.png +0 -0
  129. data/tmp/aruba/test_app/public/apple-touch-icon.png +0 -0
  130. data/tmp/aruba/test_app/public/favicon.ico +0 -0
  131. data/tmp/aruba/test_app/public/robots.txt +0 -1
  132. data/tmp/aruba/test_app/script/cucumber +0 -11
  133. data/tmp/aruba/test_app/test/application_system_test_case.rb +0 -5
  134. data/tmp/aruba/test_app/test/controllers/appointments_controller_test.rb +0 -48
  135. data/tmp/aruba/test_app/test/fixtures/appointments.yml +0 -9
  136. data/tmp/aruba/test_app/test/models/appointment_test.rb +0 -7
  137. data/tmp/aruba/test_app/test/system/appointments_test.rb +0 -45
  138. data/tmp/aruba/test_app/test/test_helper.rb +0 -10
  139. data/tmp/aruba/test_app/tmp/cache/assets/sprockets/v3.0/0I/0I0oT83oN3NKiEi9XIhexiT3XgkA8mKyCbs25v3l20g.cache +0 -1
  140. data/tmp/aruba/test_app/tmp/cache/assets/sprockets/v3.0/0W/0WnFNEwHN4bhDiFTvyMWURx02L4yP3gkP7vtjzKQFVo.cache +0 -1
  141. data/tmp/aruba/test_app/tmp/cache/assets/sprockets/v3.0/2B/2Bg65dpvTdePrXa_wG6RsHpQzbqVSiHK0FVa0WdOJ4k.cache +0 -0
  142. data/tmp/aruba/test_app/tmp/cache/assets/sprockets/v3.0/2r/2r_85kVmIcWzvJH72GapWtLDhaMP2HEziNxykyYpAUg.cache +0 -1
  143. data/tmp/aruba/test_app/tmp/cache/assets/sprockets/v3.0/72/72jdZDzrM3-D_zYkIiPdAWQNeaFsqah154_QvcqWqTQ.cache +0 -3
  144. data/tmp/aruba/test_app/tmp/cache/assets/sprockets/v3.0/99/99m8UCKl4j8IpsVOK8ltLHyNh8Ae0nHw3GBkC34V_co.cache +0 -2
  145. data/tmp/aruba/test_app/tmp/cache/assets/sprockets/v3.0/9O/9OOXnKHBQnaCeE5HDe5csQsItouzWM6rTl8sESvkGTE.cache +0 -1
  146. data/tmp/aruba/test_app/tmp/cache/assets/sprockets/v3.0/AF/AFloQwm_M7GZudPY87xx4TA0xEeuX9Psl0SJ94i5EyU.cache +0 -3
  147. data/tmp/aruba/test_app/tmp/cache/assets/sprockets/v3.0/AP/APDAc8aUg_16wNWrVhCJcKeqbxyOScYGVhiDVgbrV7U.cache +0 -0
  148. data/tmp/aruba/test_app/tmp/cache/assets/sprockets/v3.0/B4/B43LeT9Wba4fLvXw-C_kKq-x9HwYZxnBBiltbIufzzQ.cache +0 -2
  149. data/tmp/aruba/test_app/tmp/cache/assets/sprockets/v3.0/EO/EOut5kyDPr7aKrHdvDsNJuYarA8XGnpAlDvBimlaC08.cache +0 -0
  150. data/tmp/aruba/test_app/tmp/cache/assets/sprockets/v3.0/GJ/GJzxuc2i_d4Uhxs4IMnbQXhxBc9CTLrnQyzxwTqKOBw.cache +0 -0
  151. data/tmp/aruba/test_app/tmp/cache/assets/sprockets/v3.0/Ge/Ge2oyaUStbQszLfXjgTi6LkncyS5SKfV8RJwbRA3HbI.cache +0 -1
  152. data/tmp/aruba/test_app/tmp/cache/assets/sprockets/v3.0/HC/HCDOUd7-S45aJ_PjVAC_Vmjyud3i1aQv4cE3t9_Z3Dw.cache +0 -2
  153. data/tmp/aruba/test_app/tmp/cache/assets/sprockets/v3.0/Hv/HvPd_vK17QbhWq8QnCuyhqm0cPaGnHyO9lSzN-icQdg.cache +0 -2
  154. data/tmp/aruba/test_app/tmp/cache/assets/sprockets/v3.0/II/IIhUO-5-DcfCyD_rVJeHjRMNVJxLmAmXP8i2XEjFpns.cache +0 -1
  155. data/tmp/aruba/test_app/tmp/cache/assets/sprockets/v3.0/Ka/KaLHRsUYc4EUxUr4q_UhArFJUTF_EaBklpeU4TsE9SY.cache +0 -1
  156. data/tmp/aruba/test_app/tmp/cache/assets/sprockets/v3.0/MZ/MZcwDENEs93Wd9q7A_7UWdfJrWsBXa0pGp03P9mqG2I.cache +0 -3
  157. data/tmp/aruba/test_app/tmp/cache/assets/sprockets/v3.0/Nw/NwHea3ImBECnlmojPb9X9ZDfvRRuX_dX9sxISdtp9-A.cache +0 -0
  158. data/tmp/aruba/test_app/tmp/cache/assets/sprockets/v3.0/PP/PPKuKT7m2PMDHVzBcYjePvXU6CbCW63Iqe3Q2a-Jdh8.cache +0 -1
  159. data/tmp/aruba/test_app/tmp/cache/assets/sprockets/v3.0/RE/REtgGrS74n4Y7OKRcGvZsA2EUClg_RM66mVgGpySI20.cache +0 -1
  160. data/tmp/aruba/test_app/tmp/cache/assets/sprockets/v3.0/Rk/RkQLRXSz5LhJQnH7BT-ZDkVK0Rx8N9KhcVwR2A1HY4M.cache +0 -2
  161. data/tmp/aruba/test_app/tmp/cache/assets/sprockets/v3.0/Sx/SxtNEQ-KKVBCTtsDD-xf4oJEIdBPIHkGktnLXvG-GRk.cache +0 -1
  162. data/tmp/aruba/test_app/tmp/cache/assets/sprockets/v3.0/TL/TLxLzqEAxKzTHH9EwSg5Lvcp3zgGuhjTjed121DSu9U.cache +0 -0
  163. data/tmp/aruba/test_app/tmp/cache/assets/sprockets/v3.0/U1/U1D7nCXYBD3VlPnXGs_6mRtlhs-Gvv_vvCUYlTf4Grw.cache +0 -3
  164. data/tmp/aruba/test_app/tmp/cache/assets/sprockets/v3.0/U6/U6pXyI-5haNcHRdsB-SoztzlXb98-256hFReXsL31J4.cache +0 -2
  165. data/tmp/aruba/test_app/tmp/cache/assets/sprockets/v3.0/UE/UEKUaC9O_XBO5acP8HnxcJ1dtNM_1C7MTofkTQvPgRA.cache +0 -1
  166. data/tmp/aruba/test_app/tmp/cache/assets/sprockets/v3.0/UV/UVcnI5bo-eQvULfmzeQUFVTDYEMF2cbAXpsOsh01XNY.cache +0 -1
  167. data/tmp/aruba/test_app/tmp/cache/assets/sprockets/v3.0/WK/WK8RpMP5qb9GRQTsTHAzlfo8t2nsTLU6B8CQAc4UfOU.cache +0 -1
  168. data/tmp/aruba/test_app/tmp/cache/assets/sprockets/v3.0/Xk/Xk8p9O39-syzKbpnoMRChld0TpoZFWlNIzeT5XKw2fQ.cache +0 -0
  169. data/tmp/aruba/test_app/tmp/cache/assets/sprockets/v3.0/Zv/ZvCEW2ZyS-k4cHH7Gd8P2nKFE9Uh1VOrfR-1PYY2yz8.cache +0 -5
  170. data/tmp/aruba/test_app/tmp/cache/assets/sprockets/v3.0/ac/acWu1-1ZAW1jRVKlHYlzlEg28lk-SdHfTq-P-viJMS0.cache +0 -1
  171. data/tmp/aruba/test_app/tmp/cache/assets/sprockets/v3.0/b3/b3NiYrQOlN2zxiJYqbl4gmvK6it3Md9gSzAYgsIMhnY.cache +0 -1
  172. data/tmp/aruba/test_app/tmp/cache/assets/sprockets/v3.0/c1/c1Pm-rFPEB3LXIjOtswD6x8SEAgI9y2BR16jc8ifcsc.cache +0 -1
  173. data/tmp/aruba/test_app/tmp/cache/assets/sprockets/v3.0/em/emTQG2a9zF8NuvElLOnEpNJp0wq3_gVSDAM60vyXAzE.cache +0 -0
  174. data/tmp/aruba/test_app/tmp/cache/assets/sprockets/v3.0/fX/fXH3Db_88TmJFhRydoFTx8tZbHAkLzK2ZZ0lsBEg8xA.cache +0 -0
  175. data/tmp/aruba/test_app/tmp/cache/assets/sprockets/v3.0/gI/gIHntmCf7DbObPL_KZJYSgduAmqX18ZZPOtq85pn8vo.cache +0 -0
  176. data/tmp/aruba/test_app/tmp/cache/assets/sprockets/v3.0/kP/kPwbLAUCLjv0x6fe5lvZpmUkgmvQSDHSdEOSdbMyDgY.cache +0 -0
  177. data/tmp/aruba/test_app/tmp/cache/assets/sprockets/v3.0/kT/kT98Z_slHI6SgdEmoAtKAHyJQjTHdbe6GAbB27RP2uI.cache +0 -1
  178. data/tmp/aruba/test_app/tmp/cache/assets/sprockets/v3.0/mt/mtT4Rwi7H_vHQXdxxPvvzhL4ziA7X9WK-JXzacxWlEA.cache +0 -0
  179. data/tmp/aruba/test_app/tmp/cache/assets/sprockets/v3.0/mz/mzgD6X_N-fO95dP8Q1Q1sApCrbSmgPgsuEKv65KYcdo.cache +0 -3
  180. data/tmp/aruba/test_app/tmp/cache/assets/sprockets/v3.0/oi/oiPhXw8pYdWv5T4qRFzePHaXZLI50xMvvTyfry-ILSo.cache +0 -1
  181. data/tmp/aruba/test_app/tmp/cache/assets/sprockets/v3.0/r-/r--YB1ugrZ4F-ogbLLYNwIH3j9pQ2u_ZBjTJxoS7TrM.cache +0 -1
  182. data/tmp/aruba/test_app/tmp/cache/assets/sprockets/v3.0/s6/s68UIyg0lNko7IA42JXv_wwy9Ea3WH-zc9h0GYPg88Y.cache +0 -1
  183. data/tmp/aruba/test_app/tmp/cache/assets/sprockets/v3.0/si/siT97rfEKbIWcCj6KUBChX7kpRBKI2fAeGGwpsz0tTU.cache +0 -0
  184. data/tmp/aruba/test_app/tmp/cache/assets/sprockets/v3.0/st/stqDgDfAemfEq7ZxlEj6YThpn8_1Nfw2bRVA0N03YTw.cache +0 -1
  185. data/tmp/aruba/test_app/tmp/cache/assets/sprockets/v3.0/t9/t93lpjyly3MvgKs51_OlLXneJXGyYFGmshXsk4Wr69M.cache +0 -1
  186. data/tmp/aruba/test_app/tmp/cache/assets/sprockets/v3.0/tE/tEy2QePsDnmFyyAQEric23sSBnfHBst3SEM7p-J7el8.cache +0 -2
  187. data/tmp/aruba/test_app/tmp/cache/assets/sprockets/v3.0/tR/tRV7SyAY9c71G0o-8bElvNI76KcWhc5NVm48xflMPpM.cache +0 -0
  188. data/tmp/aruba/test_app/tmp/cache/assets/sprockets/v3.0/tg/tggwa2O6A41xeZTK4SR0qcX0X55aOGg6q8ZWfqma1vM.cache +0 -0
  189. data/tmp/aruba/test_app/tmp/cache/assets/sprockets/v3.0/uB/uBKOYcdzL_6Amevsu-uKAMTg7QGW5kgC0t5sAZINrcI.cache +0 -0
  190. data/tmp/aruba/test_app/tmp/cache/assets/sprockets/v3.0/uE/uEyPXY2m04nerJV0pn3p-B-BlkJ08oufpQH1G2QXPw4.cache +0 -1
  191. data/tmp/aruba/test_app/tmp/cache/assets/sprockets/v3.0/up/upyndqsU9bU6WV8qyMy7MLpcQoybRqgj-qA3C3pjzXY.cache +0 -0
  192. data/tmp/aruba/test_app/tmp/cache/assets/sprockets/v3.0/ux/uxx-W2TOCdnAEGX0ZLThb_QIEbLYutX8qCwD0glYCKE.cache +0 -3
  193. data/tmp/aruba/test_app/tmp/cache/assets/sprockets/v3.0/vC/vCsc-q2WmT8vWM2d2pb6_5hFav8mGlylwEKVWQvsumo.cache +0 -1
  194. data/tmp/aruba/test_app/tmp/cache/assets/sprockets/v3.0/vc/vcgiILg1wO98x-a4kX678ASAFWA1cL0iVx07VkHLPqA.cache +0 -0
  195. data/tmp/aruba/test_app/tmp/cache/assets/sprockets/v3.0/vu/vu6xNIGT6zorPmcKfd7edgxBltTmIRXU281uyK51kkU.cache +0 -1
  196. data/tmp/aruba/test_app/tmp/cache/assets/sprockets/v3.0/w4/w4y_Lms54hD2Nivh5PHeccAmh2DX53sc_HDTQYNyNXw.cache +0 -3
  197. data/tmp/aruba/test_app/tmp/cache/assets/sprockets/v3.0/yZ/yZpoD5Zf4RAQoOwi5kMVksuta_0KhYSK_Yy_6Ykyt7E.cache +0 -1
  198. data/tmp/aruba/test_app/tmp/development_secret.txt +0 -1
@@ -1,125 +0,0 @@
1
- Feature: Choose javascript database strategy
2
-
3
- Whilst running a scenario with the @javascript tag, Capybara will fire up a web server
4
- in the same process in a separate thread to your cukes. By default, this means ActiveRecord will give it a
5
- separate database connection, which in turn means data you put into your database from
6
- Cucumber step definitions (e.g. using FactoryBot) won't be visible to the web server
7
- until the database transaction is committed.
8
-
9
- So if you use a transaction strategy for cleaning up your database at the end of a scenario,
10
- it won't work for javascript scenarios by default.
11
-
12
- There are two ways around this. One is to switch to a truncation strategy for javascript
13
- scenarios. This is slower, but more reliable.
14
-
15
- The alternative is to patch ActiveRecord to share a single database connection between
16
- threads. This means you still get the speed benefits of using a transaction to roll back
17
- your database, but you run the risk of the two threads stomping on one another as they
18
- talk to the database.
19
-
20
- Right now, the default behavior is to use truncation, but you can override this by telling
21
- cucumber-rails which strategy to use for javascript scenarios.
22
-
23
- The deletion strategy can be quicker for situations where truncation causes locks which
24
- has been reported by some Oracle users.
25
-
26
- Background:
27
- Given I have created a new Rails app and installed cucumber-rails
28
- And I have a "Widget" ActiveRecord model object
29
- When I write to "features/step_definitions/widget_steps.rb" with:
30
- """
31
- When('I create {int} widgets') do |number|
32
- number.times { Widget.create! }
33
- end
34
-
35
- Then('I should have {int} widgets') do |number|
36
- expect(Widget.count).to eq(number)
37
- end
38
-
39
- Then('the DatabaseCleaner strategy should be {word}') do |strategy_name|
40
- expect(DatabaseCleaner.cleaners.values.first.strategy.to_s).to match(/#{strategy_name}/i)
41
- end
42
- """
43
-
44
- Scenario: Set the strategy to truncation and run a javascript scenario.
45
- When I append to "features/env.rb" with:
46
- """
47
- DatabaseCleaner.strategy = :transaction
48
- Cucumber::Rails::Database.javascript_strategy = :truncation
49
- """
50
- And I write to "features/widgets.feature" with:
51
- """
52
- Feature:
53
- Background:
54
- When I create 2 widgets
55
-
56
- @javascript
57
- Scenario:
58
- When I create 3 widgets
59
- Then the DatabaseCleaner strategy should be truncation
60
- And I should have 5 widgets
61
-
62
- @javascript
63
- Scenario:
64
- Then the DatabaseCleaner strategy should be truncation
65
- And I should have 2 widgets
66
-
67
- Scenario:
68
- Then the DatabaseCleaner strategy should be transaction
69
- And I should have 2 widgets
70
- """
71
- And I run the cukes
72
- Then the feature run should pass with:
73
- """
74
- 3 scenarios (3 passed)
75
- 10 steps (10 passed)
76
- """
77
-
78
- Scenario: Set the strategy to deletion and run a javascript scenario.
79
- When I append to "features/env.rb" with:
80
- """
81
- Cucumber::Rails::Database.javascript_strategy = :deletion
82
- """
83
- And I write to "features/widgets.feature" with:
84
- """
85
- @javascript
86
- Feature:
87
- Background:
88
- When I create 2 widgets
89
-
90
- Scenario:
91
- When I create 3 widgets
92
- Then I should have 5 widgets
93
-
94
- Scenario:
95
- Then I should have 2 widgets
96
- """
97
- And I run the cukes
98
- Then the feature run should pass with:
99
- """
100
- 2 scenarios (2 passed)
101
- 5 steps (5 passed)
102
- """
103
-
104
- Scenario: Set the strategy to truncation with an except option and run a javascript scenario.
105
- When I append to "features/env.rb" with:
106
- """
107
- Cucumber::Rails::Database.javascript_strategy = :truncation, { except: %w[widgets] }
108
- """
109
- And I write to "features/widgets.feature" with:
110
- """
111
- @javascript
112
- Feature:
113
- Scenario:
114
- When I create 3 widgets
115
- Then I should have 3 widgets
116
-
117
- Scenario:
118
- Then I should have 3 widgets
119
- """
120
- And I run the cukes
121
- Then the feature run should pass with:
122
- """
123
- 2 scenarios (2 passed)
124
- 3 steps (3 passed)
125
- """
@@ -1,48 +0,0 @@
1
- Feature: Cucumber Rails Configuration
2
-
3
- In order to configure how Cucumber-Rails runs
4
- As a developer
5
- I should be able to alter the settings of my project
6
-
7
- Scenario: Default configuration
8
- Given I have created a new Rails app with no database and installed cucumber-rails
9
- When I write to "features/config.feature" with:
10
- """
11
- Feature: Rack Test Methods
12
- Scenario: Default Methods are added to the World
13
- Then Rack Test should be mixed into the Cucumber World
14
- """
15
- When I write to "features/step_definitions/config_steps.rb" with:
16
- """
17
- Then('Rack Test should be mixed into the Cucumber World') do
18
- expect(self.class.ancestors).to include(Rack::Test::Methods)
19
- end
20
- """
21
- And I run `bundle exec rake cucumber`
22
- Then the feature run should pass with:
23
- """
24
- 1 scenario (1 passed)
25
- 1 step (1 passed)
26
- """
27
-
28
- Scenario: Altered configuration
29
- Given I have created a new Rails app with no database and installed cucumber-rails
30
- And I set the environment variable "CR_REMOVE_RACK_TEST_HELPERS" to "true"
31
- When I write to "features/config.feature" with:
32
- """
33
- Feature: Rack Test Methods
34
- Scenario: Rack Test Methods can be removed from the world
35
- Then Rack Test should not be mixed into the Cucumber World
36
- """
37
- When I write to "features/step_definitions/config_steps.rb" with:
38
- """
39
- Then('Rack Test should not be mixed into the Cucumber World') do
40
- expect(self.class.ancestors).not_to include(Rack::Test::Methods)
41
- end
42
- """
43
- And I run `bundle exec rake cucumber`
44
- Then the feature run should pass with:
45
- """
46
- 1 scenario (1 passed)
47
- 1 step (1 passed)
48
- """
@@ -1,131 +0,0 @@
1
- Feature: Database Cleaner
2
-
3
- Scenario: Create records in background with database_cleaner
4
- Given I have created a new Rails app and installed cucumber-rails
5
- When I write to "features/widgets.feature" with:
6
- """
7
- Feature: Create widgets
8
- Background: 2 initial widgets
9
- Given I have 2 widgets
10
-
11
- Scenario: Add 3 widgets
12
- When I create 3 more widgets
13
- Then I should have 5 widgets
14
-
15
- Scenario: Add 7 widgets
16
- When I create 7 more widgets
17
- Then I should have 9 widgets
18
- """
19
- And I run `rails generate model widget name:string`
20
- And I write to "features/step_definitions/widget_steps.rb" with:
21
- """
22
- Given('I have {int} widgets') do |number|
23
- number.times do |i|
24
- Widget.create! name: "Widget #{Widget.count + i}"
25
- end
26
- end
27
-
28
- When('I create {int} more widgets') do |number|
29
- number.times do |i|
30
- Widget.create! name: "Widget #{Widget.count + i}"
31
- end
32
- end
33
-
34
- Then('I should have {int} widgets') do |number|
35
- expect(Widget.count).to eq(number)
36
- end
37
- """
38
- And I run `bundle exec rake db:migrate`
39
- And I run `bundle exec rake cucumber`
40
- Then the feature run should pass with:
41
- """
42
- 2 scenarios (2 passed)
43
- 6 steps (6 passed)
44
- """
45
-
46
- Scenario: Create records in background with database_cleaner-active_record
47
- Given I have created a new Rails app and installed cucumber-rails with database_cleaner-active_record
48
- When I write to "features/widgets.feature" with:
49
- """
50
- Feature: Create widgets
51
- Background: 2 initial widgets
52
- Given I have 2 widgets
53
-
54
- Scenario: Add 3 widgets
55
- When I create 3 more widgets
56
- Then I should have 5 widgets
57
-
58
- Scenario: Add 7 widgets
59
- When I create 7 more widgets
60
- Then I should have 9 widgets
61
- """
62
- And I run `rails generate model widget name:string`
63
- And I write to "features/step_definitions/widget_steps.rb" with:
64
- """
65
- Given('I have {int} widgets') do |number|
66
- number.times do |i|
67
- Widget.create! name: "Widget #{Widget.count + i}"
68
- end
69
- end
70
-
71
- When('I create {int} more widgets') do |number|
72
- number.times do |i|
73
- Widget.create! name: "Widget #{Widget.count + i}"
74
- end
75
- end
76
-
77
- Then('I should have {int} widgets') do |number|
78
- expect(Widget.count).to eq(number)
79
- end
80
- """
81
- And I run `bundle exec rake db:migrate`
82
- And I run `bundle exec rake cucumber`
83
- Then the feature run should pass with:
84
- """
85
- 2 scenarios (2 passed)
86
- 6 steps (6 passed)
87
- """
88
-
89
- Scenario: Create records in background without using database_cleaner
90
- Given I have created a new Rails app and installed cucumber-rails without database_cleaner
91
- When I write to "features/widgets.feature" with:
92
- """
93
- Feature: Create widgets
94
- Background: 2 initial widgets
95
- # Note this creates 2 widgets each time
96
- Given I have 2 widgets
97
-
98
- Scenario: Add 3 widgets
99
- When I create 3 more widgets
100
- Then I should have 5 widgets
101
-
102
- Scenario: Add 7 widgets
103
- When I create 7 more widgets
104
- Then I should have 14 widgets
105
- """
106
- And I run `rails generate model widget name:string`
107
- And I write to "features/step_definitions/widget_steps.rb" with:
108
- """
109
- Given('I have {int} widgets') do |number|
110
- number.times do |i|
111
- Widget.create! name: "Widget #{Widget.count + i}"
112
- end
113
- end
114
-
115
- When('I create {int} more widgets') do |number|
116
- number.times do |i|
117
- Widget.create! name: "Widget #{Widget.count + i}"
118
- end
119
- end
120
-
121
- Then('I should have {int} widgets') do |number|
122
- expect(Widget.count).to eq(number)
123
- end
124
- """
125
- And I run `bundle exec rake db:migrate`
126
- And I run `bundle exec rake cucumber`
127
- Then the feature run should pass with:
128
- """
129
- 2 scenarios (2 passed)
130
- 6 steps (6 passed)
131
- """
@@ -1,49 +0,0 @@
1
- Feature: Disable automatic database cleaning
2
-
3
- By default, a set of Before/After hooks are installed to
4
- invoke database_cleaner on every scenario except those tagged
5
- "@no-database-cleaner". Sometimes when a user is switching between
6
- cleaning strategies, this can initiate an undesired database
7
- transaction.
8
-
9
- To avoid the need for users making frequent strategy switches to apply
10
- this tag, a configuration option is provided so that the user can
11
- control the invocation of database_cleaner explicitly.
12
-
13
- Scenario: Disabling automatic cleaning
14
- Given I have created a new Rails app and installed cucumber-rails
15
- When I append to "features/env.rb" with:
16
- """
17
- Cucumber::Rails::Database.autorun_database_cleaner = false
18
- """
19
- And I write to "features/widgets.feature" with:
20
- """
21
- Feature: Create widgets
22
- Scenario: Create 3 widgets
23
- When I create 3 widgets
24
- Then I should have 3 widgets
25
-
26
- Scenario: Create 5 widgets
27
- When I create 5 widgets
28
- Then I should have 8 widgets
29
- """
30
- And I run `rails generate model widget name:string`
31
- And I write to "features/step_definitions/widget_steps.rb" with:
32
- """
33
- When('I create {int} widgets') do |number|
34
- number.times do |i|
35
- Widget.create! name: "Widget #{Widget.count + i}"
36
- end
37
- end
38
-
39
- Then('I should have {int} widgets') do |number|
40
- expect(Widget.count).to eq(number)
41
- end
42
- """
43
- And I run `bundle exec rake db:migrate`
44
- And I run `bundle exec rake cucumber`
45
- Then the feature run should pass with:
46
- """
47
- 2 scenarios (2 passed)
48
- 4 steps (4 passed)
49
- """
@@ -1,109 +0,0 @@
1
- Feature: Emulate Javascript
2
-
3
- Background:
4
- Given I have created a new Rails app and installed cucumber-rails
5
- And I force selenium to run Firefox in headless mode
6
- When I run `rails generate scaffold widget name:string`
7
- And I write to "features/step_definitions/widget_steps.rb" with:
8
- """
9
- Given('there is a widget named {string}') do |name|
10
- FactoryBot.create(:widget, name: name)
11
- end
12
-
13
- When('I am on the widgets page') do
14
- visit widgets_path
15
- end
16
-
17
- Then('I should see {string}') do |text|
18
- expect(page).to have_content(text)
19
- end
20
- """
21
- And I write to "features/support/factories/widget.rb" with:
22
- """
23
- FactoryBot.define do
24
- factory :widget do
25
- name { 'testwidget' }
26
- end
27
- end
28
- """
29
-
30
- Scenario: See a widget
31
- When I write to "features/widgets.feature" with:
32
- """
33
- @javascript
34
- Feature: Widget inventory
35
- Scenario: Delete a widget
36
- Given there is a widget named "wrench"
37
- And I am on the widgets page
38
- Then I should see "wrench"
39
- """
40
- And I run `bundle exec rake db:migrate`
41
- And I run `bundle exec rake cucumber`
42
- Then the feature run should pass with:
43
- """
44
- 1 scenario (1 passed)
45
- 3 steps (3 passed)
46
- """
47
-
48
- Scenario: Pass on the CSRF token
49
- When I run `sed -i -e 's/forgery_protection *= false/forgery_protection = true/' config/environments/test.rb`
50
- And I run `rails generate controller session establish`
51
- And I write to "app/controllers/session_controller.rb" with:
52
- """
53
- class SessionController < ApplicationController
54
- def establish
55
- session[:verified] = true
56
- end
57
- end
58
- """
59
- And I write to "app/controllers/application_controller.rb" with:
60
- """
61
- class ApplicationController < ActionController::Base
62
- protect_from_forgery
63
-
64
- before_action except: :establish do
65
- render text: 'denied', status: :forbidden and return false unless session[:verified]
66
- end
67
- end
68
- """
69
- And I write to "features/widgets.feature" with:
70
- """
71
- Feature: Widget inventory
72
- Scenario: Delete a widget
73
- Given there is a widget named "wrench"
74
- And I am on the session establish page
75
- And I am on the widgets page
76
- Then I should see "wrench"
77
- When I follow "Destroy"
78
- Then I should not see "denied"
79
- And I should be on the widgets page
80
- And I should not see "wrench"
81
- """
82
- And I append to "features/step_definitions/widget_steps.rb" with:
83
- # TODO: Remove the newline below (Required) once bug is fixed: https://github.com/cucumber/aruba/issues/662
84
- """
85
-
86
- Given('I am on the session establish page') do
87
- visit session_establish_path
88
- end
89
-
90
- When('I follow {string}') do |link|
91
- click_link(link)
92
- end
93
-
94
- Then('I should not see {string}') do |text|
95
- expect(page).not_to have_content(text)
96
- end
97
-
98
- Then('I should be on the widgets page') do
99
- current_path = URI.parse(current_url).path
100
- expect(current_path).to eq(widgets_path)
101
- end
102
- """
103
- And I run `bundle exec rake db:migrate`
104
- And I run `bundle exec rake cucumber`
105
- Then the feature run should pass with:
106
- """
107
- 1 scenario (1 passed)
108
- 8 steps (8 passed)
109
- """