cypress-on-rails 1.12.1 → 1.13.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (200) hide show
  1. checksums.yaml +4 -4
  2. data/.github/workflows/ruby.yml +3 -3
  3. data/.gitignore +4 -1
  4. data/CHANGELOG.md +7 -0
  5. data/README.md +91 -5
  6. data/cypress-on-rails.gemspec +1 -0
  7. data/lib/cypress-on-rails.rb +2 -2
  8. data/lib/cypress_on_rails/configuration.rb +3 -0
  9. data/lib/cypress_on_rails/middleware.rb +6 -10
  10. data/lib/cypress_on_rails/middleware_config.rb +17 -0
  11. data/lib/cypress_on_rails/railtie.rb +5 -1
  12. data/lib/cypress_on_rails/vcr_middleware.rb +73 -0
  13. data/lib/cypress_on_rails/version.rb +1 -1
  14. data/lib/generators/cypress_on_rails/install_generator.rb +18 -24
  15. data/lib/generators/cypress_on_rails/templates/config/initializers/cypress_on_rails.rb.erb +1 -0
  16. data/lib/generators/cypress_on_rails/templates/spec/cypress/app_commands/clean.rb +6 -0
  17. data/lib/generators/cypress_on_rails/templates/spec/cypress/{cypress_helper.rb → cypress_helper.rb.erb} +5 -0
  18. data/lib/generators/cypress_on_rails/templates/spec/cypress/{integration/rails_examples/advance_factory_bot_spec.js → e2e/rails_examples/advance_factory_bot.cy.js} +0 -0
  19. data/lib/generators/cypress_on_rails/templates/spec/cypress/{integration/rails_examples/other_spec.js → e2e/rails_examples/other.cy.js} +0 -0
  20. data/lib/generators/cypress_on_rails/templates/spec/cypress/{integration/rails_examples/using_factory_bot_spec.js → e2e/rails_examples/using_factory_bot.cy.js} +0 -0
  21. data/lib/generators/cypress_on_rails/templates/spec/cypress/{integration/rails_examples/using_fixtures_spec.js → e2e/rails_examples/using_fixtures.cy.js} +0 -0
  22. data/lib/generators/cypress_on_rails/templates/spec/cypress/{integration/rails_examples/using_scenarios_spec.js → e2e/rails_examples/using_scenarios.cy.js} +0 -0
  23. data/lib/generators/cypress_on_rails/templates/spec/cypress/e2e/rails_examples/using_vcr.cy.js +24 -0
  24. data/lib/generators/cypress_on_rails/templates/spec/cypress/support/{index.js → index.js.erb} +1 -0
  25. data/lib/generators/cypress_on_rails/templates/spec/cypress/support/on-rails.js +1 -1
  26. data/lib/generators/cypress_on_rails/templates/spec/cypress.config.js +9 -0
  27. data/plugin/.gitignore +1 -0
  28. data/plugin/cypress/plugins/index.js +4 -0
  29. data/plugin/package.json +31 -0
  30. data/plugin/support/index.js +37 -0
  31. data/spec/cypress_on_rails/middleware_spec.rb +3 -1
  32. data/spec/cypress_on_rails/vcr_middleware_spec.rb +119 -0
  33. data/specs_e2e/cypress.config.js +10 -0
  34. data/{spec/integrations → specs_e2e}/rails_3_2/.gitignore +1 -1
  35. data/specs_e2e/rails_3_2/.ruby_version +1 -0
  36. data/{spec/integrations → specs_e2e}/rails_3_2/Gemfile +1 -1
  37. data/{spec/integrations → specs_e2e}/rails_3_2/README.rdoc +0 -0
  38. data/{spec/integrations → specs_e2e}/rails_3_2/Rakefile +0 -0
  39. data/{spec/integrations → specs_e2e}/rails_3_2/app/assets/stylesheets/application.css +0 -0
  40. data/{spec/integrations → specs_e2e}/rails_3_2/app/controllers/application_controller.rb +0 -0
  41. data/{spec/integrations → specs_e2e}/rails_3_2/app/controllers/welcome_controller.rb +0 -0
  42. data/{spec/integrations → specs_e2e}/rails_3_2/app/helpers/application_helper.rb +0 -0
  43. data/{spec/integrations → specs_e2e}/rails_3_2/app/models/post.rb +0 -0
  44. data/{spec/integrations → specs_e2e}/rails_3_2/app/views/layouts/application.html.erb +0 -0
  45. data/{spec/integrations → specs_e2e}/rails_3_2/app/views/welcome/index.html.erb +0 -0
  46. data/{spec/integrations → specs_e2e}/rails_3_2/bin/rails +0 -0
  47. data/{spec/integrations → specs_e2e}/rails_3_2/config/application.rb +0 -0
  48. data/{spec/integrations → specs_e2e}/rails_3_2/config/boot.rb +0 -0
  49. data/{spec/integrations → specs_e2e}/rails_3_2/config/environment.rb +0 -0
  50. data/{spec/integrations → specs_e2e}/rails_3_2/config/environments/development.rb +0 -0
  51. data/{spec/integrations → specs_e2e}/rails_3_2/config/environments/production.rb +0 -0
  52. data/{spec/integrations → specs_e2e}/rails_3_2/config/environments/test.rb +0 -0
  53. data/{spec/integrations → specs_e2e}/rails_3_2/config/initializers/backtrace_silencers.rb +0 -0
  54. data/{spec/integrations → specs_e2e}/rails_3_2/config/initializers/inflections.rb +0 -0
  55. data/{spec/integrations → specs_e2e}/rails_3_2/config/initializers/mime_types.rb +0 -0
  56. data/{spec/integrations → specs_e2e}/rails_3_2/config/initializers/secret_token.rb +0 -0
  57. data/{spec/integrations → specs_e2e}/rails_3_2/config/initializers/session_store.rb +0 -0
  58. data/{spec/integrations → specs_e2e}/rails_3_2/config/initializers/wrap_parameters.rb +0 -0
  59. data/{spec/integrations → specs_e2e}/rails_3_2/config/locales/en.yml +0 -0
  60. data/{spec/integrations → specs_e2e}/rails_3_2/config/routes.rb +0 -0
  61. data/{spec/integrations → specs_e2e}/rails_3_2/config.ru +0 -0
  62. data/{spec/integrations → specs_e2e}/rails_3_2/log/.keep +0 -0
  63. data/{spec/integrations → specs_e2e}/rails_3_2/public/404.html +0 -0
  64. data/{spec/integrations → specs_e2e}/rails_3_2/public/422.html +0 -0
  65. data/{spec/integrations → specs_e2e}/rails_3_2/public/500.html +0 -0
  66. data/{spec/integrations → specs_e2e}/rails_3_2/public/favicon.ico +0 -0
  67. data/{spec/integrations → specs_e2e}/rails_3_2/public/robots.txt +0 -0
  68. data/{spec/integrations → specs_e2e}/rails_3_2/test.sh +8 -7
  69. data/{spec/integrations → specs_e2e}/rails_3_2/tmp/.keep +0 -0
  70. data/{spec/integrations → specs_e2e}/rails_3_2/vendor/.gitkeep +0 -0
  71. data/{spec/integrations → specs_e2e}/rails_4_2/.gitignore +3 -2
  72. data/{spec/integrations → specs_e2e}/rails_4_2/Gemfile +3 -1
  73. data/{spec/integrations → specs_e2e}/rails_4_2/README.rdoc +0 -0
  74. data/{spec/integrations → specs_e2e}/rails_4_2/Rakefile +0 -0
  75. data/{spec/integrations/rails_5_2/app/assets/javascripts/posts.js → specs_e2e/rails_4_2/app/assets/javascripts/using_vcr.js} +0 -0
  76. data/{spec/integrations/rails_5_2/app/assets/stylesheets/posts.css → specs_e2e/rails_4_2/app/assets/stylesheets/using_vcr.css} +0 -0
  77. data/{spec/integrations → specs_e2e}/rails_4_2/app/controllers/application_controller.rb +0 -0
  78. data/specs_e2e/rails_4_2/app/controllers/using_vcr_controller.rb +10 -0
  79. data/{spec/integrations → specs_e2e}/rails_4_2/app/controllers/welcome_controller.rb +0 -0
  80. data/{spec/integrations → specs_e2e}/rails_4_2/app/models/post.rb +3 -1
  81. data/{spec/integrations → specs_e2e}/rails_4_2/app/views/layouts/application.html.erb +0 -0
  82. data/specs_e2e/rails_4_2/app/views/using_vcr/index.html.erb +6 -0
  83. data/specs_e2e/rails_4_2/app/views/using_vcr/record_cats.html.erb +7 -0
  84. data/{spec/integrations → specs_e2e}/rails_4_2/app/views/welcome/index.html.erb +0 -0
  85. data/{spec/integrations → specs_e2e}/rails_4_2/bin/bundle +0 -0
  86. data/{spec/integrations → specs_e2e}/rails_4_2/bin/rails +0 -0
  87. data/{spec/integrations → specs_e2e}/rails_4_2/bin/rake +0 -0
  88. data/{spec/integrations → specs_e2e}/rails_4_2/bin/setup +0 -0
  89. data/{spec/integrations → specs_e2e}/rails_4_2/config/application.rb +0 -0
  90. data/{spec/integrations → specs_e2e}/rails_4_2/config/boot.rb +0 -0
  91. data/{spec/integrations → specs_e2e}/rails_4_2/config/environment.rb +0 -0
  92. data/{spec/integrations → specs_e2e}/rails_4_2/config/environments/development.rb +0 -0
  93. data/{spec/integrations → specs_e2e}/rails_4_2/config/environments/production.rb +0 -0
  94. data/{spec/integrations → specs_e2e}/rails_4_2/config/environments/test.rb +0 -0
  95. data/{spec/integrations → specs_e2e}/rails_4_2/config/initializers/backtrace_silencers.rb +0 -0
  96. data/{spec/integrations → specs_e2e}/rails_4_2/config/initializers/cookies_serializer.rb +0 -0
  97. data/{spec/integrations → specs_e2e}/rails_4_2/config/initializers/filter_parameter_logging.rb +0 -0
  98. data/{spec/integrations → specs_e2e}/rails_4_2/config/initializers/inflections.rb +0 -0
  99. data/{spec/integrations → specs_e2e}/rails_4_2/config/initializers/mime_types.rb +0 -0
  100. data/{spec/integrations → specs_e2e}/rails_4_2/config/initializers/session_store.rb +0 -0
  101. data/{spec/integrations → specs_e2e}/rails_4_2/config/initializers/to_time_preserves_timezone.rb +0 -0
  102. data/{spec/integrations → specs_e2e}/rails_4_2/config/initializers/wrap_parameters.rb +0 -0
  103. data/{spec/integrations → specs_e2e}/rails_4_2/config/locales/en.yml +0 -0
  104. data/{spec/integrations → specs_e2e}/rails_4_2/config/routes.rb +5 -0
  105. data/{spec/integrations → specs_e2e}/rails_4_2/config/secrets.yml +0 -0
  106. data/{spec/integrations → specs_e2e}/rails_4_2/config.ru +0 -0
  107. data/specs_e2e/rails_4_2/package.json +10 -0
  108. data/{spec/integrations → specs_e2e}/rails_4_2/public/404.html +0 -0
  109. data/{spec/integrations → specs_e2e}/rails_4_2/public/422.html +0 -0
  110. data/{spec/integrations → specs_e2e}/rails_4_2/public/500.html +0 -0
  111. data/{spec/integrations → specs_e2e}/rails_4_2/public/favicon.ico +0 -0
  112. data/{spec/integrations → specs_e2e}/rails_4_2/public/robots.txt +0 -0
  113. data/{spec/integrations/rails_4_2/log → specs_e2e/rails_4_2/spec}/.keep +0 -0
  114. data/{spec/integrations → specs_e2e}/rails_4_2/test.sh +13 -12
  115. data/{spec/integrations/rails_4_2/spec → specs_e2e/rails_4_2/vendor}/.keep +0 -0
  116. data/{spec/integrations → specs_e2e}/rails_5_2/.gitignore +1 -1
  117. data/{spec/integrations → specs_e2e}/rails_5_2/Gemfile +1 -1
  118. data/{spec/integrations → specs_e2e}/rails_5_2/README.md +0 -0
  119. data/{spec/integrations → specs_e2e}/rails_5_2/Rakefile +0 -0
  120. data/specs_e2e/rails_5_2/app/assets/javascripts/posts.js +2 -0
  121. data/specs_e2e/rails_5_2/app/assets/stylesheets/posts.css +4 -0
  122. data/{spec/integrations → specs_e2e}/rails_5_2/app/assets/stylesheets/scaffold.css +0 -0
  123. data/{spec/integrations → specs_e2e}/rails_5_2/app/controllers/application_controller.rb +0 -0
  124. data/{spec/integrations → specs_e2e}/rails_5_2/app/controllers/posts_controller.rb +0 -0
  125. data/{spec/integrations → specs_e2e}/rails_5_2/app/helpers/posts_helper.rb +0 -0
  126. data/{spec/integrations → specs_e2e}/rails_5_2/app/jobs/application_job.rb +0 -0
  127. data/{spec/integrations → specs_e2e}/rails_5_2/app/models/application_record.rb +0 -0
  128. data/{spec/integrations → specs_e2e}/rails_5_2/app/models/post.rb +0 -0
  129. data/{spec/integrations → specs_e2e}/rails_5_2/app/views/layouts/application.html.erb +0 -0
  130. data/{spec/integrations → specs_e2e}/rails_5_2/app/views/posts/_form.html.erb +0 -0
  131. data/{spec/integrations → specs_e2e}/rails_5_2/app/views/posts/edit.html.erb +0 -0
  132. data/{spec/integrations → specs_e2e}/rails_5_2/app/views/posts/index.html.erb +0 -0
  133. data/{spec/integrations → specs_e2e}/rails_5_2/app/views/posts/new.html.erb +0 -0
  134. data/{spec/integrations → specs_e2e}/rails_5_2/app/views/posts/show.html.erb +0 -0
  135. data/{spec/integrations → specs_e2e}/rails_5_2/app/views/welcome/index.html.erb +0 -0
  136. data/{spec/integrations → specs_e2e}/rails_5_2/bin/bundle +0 -0
  137. data/{spec/integrations → specs_e2e}/rails_5_2/bin/rails +0 -0
  138. data/{spec/integrations → specs_e2e}/rails_5_2/bin/rake +0 -0
  139. data/{spec/integrations → specs_e2e}/rails_5_2/bin/setup +0 -0
  140. data/{spec/integrations → specs_e2e}/rails_5_2/bin/update +0 -0
  141. data/{spec/integrations → specs_e2e}/rails_5_2/config/application.rb +0 -0
  142. data/{spec/integrations → specs_e2e}/rails_5_2/config/boot.rb +0 -0
  143. data/{spec/integrations → specs_e2e}/rails_5_2/config/credentials.yml.enc +0 -0
  144. data/{spec/integrations → specs_e2e}/rails_5_2/config/database.yml +0 -0
  145. data/{spec/integrations → specs_e2e}/rails_5_2/config/environment.rb +0 -0
  146. data/{spec/integrations → specs_e2e}/rails_5_2/config/environments/development.rb +0 -0
  147. data/{spec/integrations → specs_e2e}/rails_5_2/config/environments/production.rb +0 -0
  148. data/{spec/integrations → specs_e2e}/rails_5_2/config/environments/test.rb +0 -0
  149. data/{spec/integrations → specs_e2e}/rails_5_2/config/initializers/application_controller_renderer.rb +0 -0
  150. data/{spec/integrations → specs_e2e}/rails_5_2/config/initializers/backtrace_silencers.rb +0 -0
  151. data/{spec/integrations → specs_e2e}/rails_5_2/config/initializers/content_security_policy.rb +0 -0
  152. data/{spec/integrations → specs_e2e}/rails_5_2/config/initializers/cookies_serializer.rb +0 -0
  153. data/{spec/integrations → specs_e2e}/rails_5_2/config/initializers/filter_parameter_logging.rb +0 -0
  154. data/{spec/integrations → specs_e2e}/rails_5_2/config/initializers/inflections.rb +0 -0
  155. data/{spec/integrations → specs_e2e}/rails_5_2/config/initializers/mime_types.rb +0 -0
  156. data/{spec/integrations → specs_e2e}/rails_5_2/config/initializers/wrap_parameters.rb +0 -0
  157. data/{spec/integrations → specs_e2e}/rails_5_2/config/locales/en.yml +0 -0
  158. data/{spec/integrations → specs_e2e}/rails_5_2/config/master.key +0 -0
  159. data/{spec/integrations → specs_e2e}/rails_5_2/config/routes.rb +0 -0
  160. data/{spec/integrations → specs_e2e}/rails_5_2/config.ru +0 -0
  161. data/{spec/integrations → specs_e2e}/rails_5_2/db/migrate/20180621085832_create_posts.rb +0 -0
  162. data/{spec/integrations → specs_e2e}/rails_5_2/public/404.html +0 -0
  163. data/{spec/integrations → specs_e2e}/rails_5_2/public/422.html +0 -0
  164. data/{spec/integrations → specs_e2e}/rails_5_2/public/500.html +0 -0
  165. data/{spec/integrations → specs_e2e}/rails_5_2/public/apple-touch-icon-precomposed.png +0 -0
  166. data/{spec/integrations → specs_e2e}/rails_5_2/public/apple-touch-icon.png +0 -0
  167. data/{spec/integrations → specs_e2e}/rails_5_2/public/favicon.ico +0 -0
  168. data/{spec/integrations → specs_e2e}/rails_5_2/public/robots.txt +0 -0
  169. data/{spec/integrations → specs_e2e}/rails_5_2/test/controllers/posts_controller_test.rb +0 -0
  170. data/{spec/integrations → specs_e2e}/rails_5_2/test/cypress_fixtures/posts.yml +0 -0
  171. data/{spec/integrations → specs_e2e}/rails_5_2/test/fixtures/posts.yml +0 -0
  172. data/{spec/integrations → specs_e2e}/rails_5_2/test/models/post_test.rb +0 -0
  173. data/{spec/integrations → specs_e2e}/rails_5_2/test.sh +8 -7
  174. data/{spec/integrations/rails_4_2 → specs_e2e/rails_5_2}/vendor/.keep +0 -0
  175. metadata +177 -171
  176. data/lib/generators/cypress_on_rails/templates/spec/cypress/fixtures/example.json +0 -5
  177. data/lib/generators/cypress_on_rails/templates/spec/cypress/integration/examples/actions.spec.js +0 -272
  178. data/lib/generators/cypress_on_rails/templates/spec/cypress/integration/examples/aliasing.spec.js +0 -42
  179. data/lib/generators/cypress_on_rails/templates/spec/cypress/integration/examples/assertions.spec.js +0 -63
  180. data/lib/generators/cypress_on_rails/templates/spec/cypress/integration/examples/connectors.spec.js +0 -55
  181. data/lib/generators/cypress_on_rails/templates/spec/cypress/integration/examples/cookies.spec.js +0 -78
  182. data/lib/generators/cypress_on_rails/templates/spec/cypress/integration/examples/cypress_api.spec.js +0 -211
  183. data/lib/generators/cypress_on_rails/templates/spec/cypress/integration/examples/files.spec.js +0 -86
  184. data/lib/generators/cypress_on_rails/templates/spec/cypress/integration/examples/local_storage.spec.js +0 -52
  185. data/lib/generators/cypress_on_rails/templates/spec/cypress/integration/examples/location.spec.js +0 -32
  186. data/lib/generators/cypress_on_rails/templates/spec/cypress/integration/examples/misc.spec.js +0 -68
  187. data/lib/generators/cypress_on_rails/templates/spec/cypress/integration/examples/navigation.spec.js +0 -54
  188. data/lib/generators/cypress_on_rails/templates/spec/cypress/integration/examples/network_requests.spec.js +0 -108
  189. data/lib/generators/cypress_on_rails/templates/spec/cypress/integration/examples/querying.spec.js +0 -65
  190. data/lib/generators/cypress_on_rails/templates/spec/cypress/integration/examples/spies_stubs_clocks.spec.js +0 -62
  191. data/lib/generators/cypress_on_rails/templates/spec/cypress/integration/examples/traversal.spec.js +0 -121
  192. data/lib/generators/cypress_on_rails/templates/spec/cypress/integration/examples/utilities.spec.js +0 -89
  193. data/lib/generators/cypress_on_rails/templates/spec/cypress/integration/examples/viewport.spec.js +0 -59
  194. data/lib/generators/cypress_on_rails/templates/spec/cypress/integration/examples/waiting.spec.js +0 -34
  195. data/lib/generators/cypress_on_rails/templates/spec/cypress/integration/examples/window.spec.js +0 -22
  196. data/lib/generators/cypress_on_rails/templates/spec/cypress.json +0 -4
  197. data/spec/integrations/cypress.json +0 -5
  198. data/spec/integrations/rails_5_2/log/.keep +0 -0
  199. data/spec/integrations/rails_5_2/tmp/.keep +0 -0
  200. data/spec/integrations/rails_5_2/vendor/.keep +0 -0
@@ -93,7 +93,9 @@ RSpec.describe CypressOnRails::Middleware do
93
93
  allow(file).to receive(:exist?).with('spec/cypress/app_commands/load_sample.rb').and_return(false)
94
94
 
95
95
  aggregate_failures do
96
- expect(response).to eq([404, {}, ['could not find command file: spec/cypress/app_commands/load_sample.rb']])
96
+ expect(response).to eq([404,
97
+ {"Content-Type"=>"application/json"},
98
+ ["{\"message\":\"could not find command file: spec/cypress/app_commands/load_sample.rb\"}"]])
97
99
  expect(command_executor).to_not have_received(:perform)
98
100
  end
99
101
  end
@@ -0,0 +1,119 @@
1
+ require 'cypress_on_rails/vcr_middleware'
2
+ require 'vcr'
3
+ require 'active_support/core_ext/hash' unless Hash.new.respond_to?(:symbolize_keys)
4
+
5
+ module CypressOnRails
6
+ RSpec.describe VCRMiddleware do
7
+ let(:app) { ->(env) { [200, {}, ["app did #{env['PATH_INFO']}"]] } }
8
+ let(:vcr) { class_double(VCR, turn_on!: true, turn_off!: true, insert_cassette: true, eject_cassette: true) }
9
+ subject { described_class.new(app, vcr) }
10
+
11
+ let(:env) { {} }
12
+
13
+ let(:response) { subject.call(env) }
14
+
15
+ def rack_input(json_value)
16
+ StringIO.new(JSON.generate(json_value))
17
+ end
18
+
19
+ describe '/__cypress__/vcr/insert' do
20
+ before do
21
+ env['PATH_INFO'] = '/__cypress__/vcr/insert'
22
+ end
23
+
24
+ it do
25
+ env['rack.input'] = rack_input(['cas1'])
26
+
27
+ aggregate_failures do
28
+ expect(response).to eq([201,
29
+ {"Content-Type"=>"application/json"},
30
+ ["{\"message\":\"OK\"}"]])
31
+ expect(vcr).to have_received(:turn_on!)
32
+ expect(vcr).to have_received(:insert_cassette).with('cas1', {})
33
+ end
34
+ end
35
+
36
+ it 'works with record' do
37
+ env['rack.input'] = rack_input(['cas1', { "record" => "new_episodes" }])
38
+
39
+ aggregate_failures do
40
+ expect(response).to eq([201,
41
+ {"Content-Type"=>"application/json"},
42
+ ["{\"message\":\"OK\"}"]])
43
+ expect(vcr).to have_received(:insert_cassette).with('cas1', record: :new_episodes)
44
+ end
45
+ end
46
+
47
+ it 'works with match_requests_on' do
48
+ env['rack.input'] = rack_input(['cas1', { "match_requests_on" => ["method", "uri"] }])
49
+
50
+ aggregate_failures do
51
+ expect(response).to eq([201,
52
+ {"Content-Type"=>"application/json"},
53
+ ["{\"message\":\"OK\"}"]])
54
+ expect(vcr).to have_received(:insert_cassette).with('cas1', match_requests_on: [:method, :uri])
55
+ end
56
+ end
57
+
58
+ it 'works with serialize_with' do
59
+ env['rack.input'] = rack_input(['cas1', { "serialize_with" => "yaml" }])
60
+
61
+ aggregate_failures do
62
+ expect(response).to eq([201,
63
+ {"Content-Type"=>"application/json"},
64
+ ["{\"message\":\"OK\"}"]])
65
+ expect(vcr).to have_received(:insert_cassette).with('cas1', serialize_with: :yaml)
66
+ end
67
+ end
68
+
69
+ it 'works with persist_with' do
70
+ env['rack.input'] = rack_input(['cas1', { "persist_with" => "file_system" }])
71
+
72
+ aggregate_failures do
73
+ expect(response).to eq([201,
74
+ {"Content-Type"=>"application/json"},
75
+ ["{\"message\":\"OK\"}"]])
76
+ expect(vcr).to have_received(:insert_cassette).with('cas1', persist_with: :file_system)
77
+ end
78
+ end
79
+ end
80
+
81
+ describe '/__cypress__/vcr/eject' do
82
+ before do
83
+ env['PATH_INFO'] = '/__cypress__/vcr/eject'
84
+ end
85
+
86
+ it do
87
+ aggregate_failures do
88
+ expect(response).to eq([201,
89
+ {"Content-Type"=>"application/json"},
90
+ ["{\"message\":\"OK\"}"]])
91
+ expect(vcr).to have_received(:turn_off!)
92
+ expect(vcr).to have_received(:eject_cassette)
93
+ end
94
+ end
95
+ end
96
+
97
+ describe '"Other paths"' do
98
+ it 'calls vcr turn off the first time' do
99
+ env['PATH_INFO'] = '/test'
100
+
101
+ expect(response).to eq([200, {}, ["app did /test"]])
102
+ expect(vcr).to have_received(:turn_off!)
103
+ end
104
+
105
+ it 'runs app' do
106
+ aggregate_failures do
107
+ %w(/ /__cypress__/login command /cypress_command /).each do |path|
108
+ env['PATH_INFO'] = path
109
+
110
+ response = subject.call(env)
111
+
112
+ expect(response).to eq([200, {}, ["app did #{path}"]])
113
+ expect(vcr).to have_received(:turn_off!)
114
+ end
115
+ end
116
+ end
117
+ end
118
+ end
119
+ end
@@ -0,0 +1,10 @@
1
+ const { defineConfig } = require('cypress')
2
+
3
+ module.exports = defineConfig({
4
+ projectId: "2b6cjr",
5
+ e2e: {
6
+ baseUrl: "http://localhost:5017",
7
+ defaultCommandTimeout: 10000,
8
+ supportFile: "cypress/support/index.js"
9
+ }
10
+ })
@@ -1,6 +1,6 @@
1
1
  .bundle
2
2
  node_modules
3
- cypress.json
3
+ cypress.config.js
4
4
  package-lock.json
5
5
  cypress/
6
6
  config/initializers/cypress_on_rails.rb
@@ -0,0 +1 @@
1
+ 2.3.8
@@ -3,5 +3,5 @@ source 'https://rubygems.org'
3
3
  gem 'rails', '~> 3.2.22'
4
4
 
5
5
  group :development, :test do
6
- gem 'cypress-on-rails', path: '../../../'
6
+ gem 'cypress-on-rails', path: '../../'
7
7
  end
File without changes
@@ -15,7 +15,8 @@ bundle install --quiet --gemfile="$DIR/Gemfile" --retry 2 --path vendor/bundle
15
15
 
16
16
  echo '-- cypress install'
17
17
  bundle exec ./bin/rails g cypress_on_rails:install --install_cypress_with=npm
18
- rm -vf cypress/integration/rails_examples/advance_factory_bot_spec.js
18
+ rm -vf cypress/e2e/rails_examples/advance_factory_bot.cy.js
19
+ rm -vf cypress/e2e/rails_examples/using_vcr.cy.js
19
20
 
20
21
  echo '-- start rails server'
21
22
  # make sure the server is not running
@@ -25,13 +26,13 @@ bundle exec ./bin/rails server -p 5017 -e test &
25
26
  sleep 2 # give rails a chance to start up correctly
26
27
 
27
28
  echo '-- cypress run'
28
- cp -fv ../cypress.json .
29
- if [ -z $CYPRESS_RECORD_KEY ]
30
- then
31
- node_modules/.bin/cypress run
32
- else
29
+ cp -fv ../cypress.config.js .
30
+ # if [ -z $CYPRESS_RECORD_KEY ]
31
+ # then
32
+ # node_modules/.bin/cypress run
33
+ # else
33
34
  node_modules/.bin/cypress run --record
34
- fi
35
+ # fi
35
36
 
36
37
  echo '-- stop rails server'
37
38
  kill -9 `cat tmp/pids/server.pid`
@@ -1,10 +1,11 @@
1
1
  .bundle
2
2
  spec/node_modules
3
- spec/cypress.json
3
+ spec/cypress.config.js
4
4
  spec/package.json
5
5
  spec/yarn.lock
6
6
  spec/cypress
7
7
  config/initializers/cypress_on_rails.rb
8
8
  vendor/bundle
9
9
  tmp/pids
10
- tmp/cache
10
+ tmp/cache
11
+ log/*.*
@@ -5,5 +5,7 @@ gem 'rails', '~> 4.2.10'
5
5
  gem 'sprockets', '~> 3.7.2'
6
6
 
7
7
  group :development, :test do
8
- gem 'cypress-on-rails', path: '../../../'
8
+ gem 'vcr'
9
+ gem 'webmock'
10
+ gem 'cypress-on-rails', path: '../../'
9
11
  end
File without changes
@@ -0,0 +1,10 @@
1
+ class UsingVcrController < ApplicationController
2
+ def index
3
+ end
4
+
5
+ def record_cats
6
+ uri = URI('https://cat-fact.herokuapp.com/facts')
7
+ res = Net::HTTP.get_response(uri)
8
+ @cat_facts = JSON.parse(res.body)
9
+ end
10
+ end
@@ -7,7 +7,9 @@ class Post < OpenStruct
7
7
  @all ||= []
8
8
  post = new(attributes)
9
9
  @all << post
10
- attributes['all'] = @all.index(post)
10
+ post.id = @all.index(post)
11
+ attributes['id'] = @all.index(post)
12
+ attributes
11
13
  end
12
14
 
13
15
  def self.all
@@ -0,0 +1,6 @@
1
+ <h1>Using VCR</h1>
2
+ <pre>
3
+ <%= JSON.pretty_generate VCR.configuration.as_json['default_cassette_options'] %>
4
+ </pre>
5
+
6
+ <%= link_to 'Record Cats', { action: :record_cats } %>
@@ -0,0 +1,7 @@
1
+ <h1>Record from Cats API</h1>
2
+
3
+ <ul>
4
+ <% @cat_facts.each do |fact| %>
5
+ <li><%= fact['text'] %></li>
6
+ <% end %>
7
+ <ul>
File without changes
@@ -1,10 +1,15 @@
1
1
  Rails.application.routes.draw do
2
+ get 'using_vcr/index'
3
+
2
4
  # The priority is based upon order of creation: first created -> highest priority.
3
5
  # See how all your routes lay out with "rake routes".
4
6
 
5
7
  # You can have the root of your site routed with "root"
6
8
  root 'welcome#index'
7
9
 
10
+ get 'using_vcr/:action', to: 'using_vcr#:action'
11
+
12
+
8
13
  # Example of regular route:
9
14
  # get 'products/:id' => 'catalog#view'
10
15
 
@@ -0,0 +1,10 @@
1
+ {
2
+ "name": "rails_4_2",
3
+ "version": "1.0.0",
4
+ "main": "index.js",
5
+ "license": "MIT",
6
+ "devDependencies": {
7
+ "cypress": "^10.0.2",
8
+ "cypress-on-rails": "file:../../plugin"
9
+ }
10
+ }
@@ -10,29 +10,30 @@ export BUNDLE_GEMFILE="$DIR/Gemfile"
10
10
  cd $DIR
11
11
 
12
12
  echo '-- bundle install'
13
+ gem install bundler -v "~> 1.0" --conservative
13
14
  bundle --version
14
15
  bundle install --quiet --gemfile="$DIR/Gemfile" --retry 2 --path vendor/bundle
15
16
 
16
17
  echo '-- cypress install'
17
- bundle exec ./bin/rails g cypress_on_rails:install --cypress_folder=spec/cypress
18
- rm -vf spec/cypress/integration/rails_examples/advance_factory_bot_spec.js
18
+ yarn install
19
+ bundle exec ./bin/rails g cypress_on_rails:install --cypress_folder=spec/cypress --experimental --skip
20
+ rm -vf spec/cypress/e2e/rails_examples/advance_factory_bot.cy.js
19
21
 
20
22
  echo '-- start rails server'
21
23
  # make sure the server is not running
22
24
  (kill -9 `cat tmp/pids/server.pid` || true )
23
25
 
24
26
  bundle exec ./bin/rails server -p 5017 -e test &
25
- sleep 2 # give rails a chance to start up correctly
27
+ sleep 5 # give rails a chance to start up correctly
26
28
 
27
29
  echo '-- cypress run'
28
- cp -fv ../cypress.json spec/
29
- cd spec
30
- if [ -z $CYPRESS_RECORD_KEY ]
31
- then
32
- yarn run cypress run
33
- else
34
- yarn run cypress run --record
35
- fi
30
+ cp -fv ../cypress.config.js spec/
31
+ # if [ -z $CYPRESS_RECORD_KEY ]
32
+ # then
33
+ # yarn run cypress run -P ./spec
34
+ # else
35
+ yarn run cypress run -P ./spec --record
36
+ # fi
36
37
 
37
38
  echo '-- stop rails server'
38
- kill -9 `cat ../tmp/pids/server.pid`
39
+ kill -9 `cat tmp/pids/server.pid`
@@ -1,6 +1,6 @@
1
1
  .bundle
2
2
  test/node_modules
3
- test/cypress.json
3
+ test/cypress.config.js
4
4
  test/package.json
5
5
  test/yarn.lock
6
6
  test/cypress/
@@ -11,5 +11,5 @@ gem 'bootsnap', '>= 1.1.0', require: false
11
11
 
12
12
  group :development, :test do
13
13
  gem 'database_cleaner'
14
- gem 'cypress-on-rails', path: '../../../'
14
+ gem 'cypress-on-rails', path: '../../'
15
15
  end
File without changes
@@ -0,0 +1,2 @@
1
+ // Place all the behaviors and hooks related to the matching controller here.
2
+ // All this logic will automatically be available in application.js.
@@ -0,0 +1,4 @@
1
+ /*
2
+ Place all the styles related to the matching controller here.
3
+ They will automatically be included in application.css.
4
+ */
File without changes