cypress-on-rails 1.15.1 → 1.17.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 9cb0dd8412c42d59d5c687cd911a1a41819296f0fd8c8796e58365620be94897
4
- data.tar.gz: 0baeb4e448a0f7e069f0774caadb0829f6ecd710f38ef06942674c2114cd9244
3
+ metadata.gz: 9c9e7d196e802c6bc10ed4a31fdfc868d92a4f059452e3315fa6c2b525f0ff17
4
+ data.tar.gz: 7378fe702963ed71a808dcdcf518c60519ef5c0149211b1e7e8692823dbb3796
5
5
  SHA512:
6
- metadata.gz: 2836bd208f1cb49b4ad0e25c2bd20cfe6b7fcaaac97fa739e7dc10516fb291b0a220a6bab3678f05329c104bf0f596fb4ec8e9fb2f2d28fade4d59299e1c7169
7
- data.tar.gz: 783e8a833f7dd2e386b7fa0b245c1ce9c039835a1600e511148f0cb76a584819f5a1a9af88d1681bbd86a8dfefa4a43a389ea871dce18a30224791f0b6e7cd2f
6
+ metadata.gz: 49c39f927764cab07fd2e1e7dd5c73773a60ce3c515666267fc8602e00b233c0d18f905653df742acb56c16ab594c7c463b13d66e71cde04be5ba785555c3150
7
+ data.tar.gz: 39701b20ce5fa8024fc9672dd49bbe6f66445d50f45764a22ad18068684595ebb5bd87f6b9a7d031b84df36cb5c705d1f808e056482f11c79247c4b9cd8ccbb4
data/.gitignore CHANGED
@@ -9,4 +9,5 @@ vendor/bundle
9
9
  .vscode
10
10
  node_modules
11
11
  package-lock.json
12
- yarn.lock
12
+ yarn.lock
13
+ specs_e2e/server.pid
data/CHANGELOG.md CHANGED
@@ -1,3 +1,20 @@
1
+ ## [1.17.0]
2
+ [Compare]: https://github.com/shakacode/cypress-on-rails/compare/v1.16.0...v1.17.0
3
+
4
+ ### Changed
5
+ * Removed the update generator and reduced options for install generator [PR 149](https://github.com/shakacode/cypress-on-rails/pull/149)
6
+
7
+ ### Fixed
8
+ * fix update index.js in install generator [PR 147](https://github.com/shakacode/cypress-on-rails/pull/147) by [Judahmeek]
9
+ * Support rails 7.1 by adding content-type header to generated on-rails.js file [PR 148](https://github.com/shakacode/cypress-on-rails/pull/148) by [anark]
10
+ * Rewind body before reading it [PR 150](https://github.com/shakacode/cypress-on-rails/pull/150)
11
+
12
+ ## [1.16.0]
13
+ [Compare]: https://github.com/shakacode/cypress-on-rails/compare/v1.15.1...v1.16.0
14
+
15
+ ### Added
16
+ * Add support for `before_request` options on the middleware, for authentication [PR 138](https://github.com/shakacode/cypress-on-rails/pull/138) by [RomainEndelin]
17
+
1
18
  ## [1.15.1]
2
19
  [Compare]: https://github.com/shakacode/cypress-on-rails/compare/v1.15.0...v1.15.1
3
20
 
data/README.md CHANGED
@@ -61,46 +61,43 @@ Generate the boilerplate code using:
61
61
  # by default installs only cypress
62
62
  bin/rails g cypress_on_rails:install
63
63
 
64
- # if you have/want a different cypress folder (default is cypress)
65
- bin/rails g cypress_on_rails:install --cypress_folder=spec/cypress
64
+ # if you have/want a different cypress folder (default is e2e)
65
+ bin/rails g cypress_on_rails:install --install_folder=spec/cypress
66
66
 
67
- # to install both cypress and playwright
68
- bin/rails g cypress_on_rails:install --install_cypress --install_playwright --playwright_folder=playwright
69
-
70
- # to change where the Ruby files reside (default is e2e)
71
- bin/rails g cypress_on_rails:install --install_folder=test/e2e
67
+ # to install playwright instead of cypress
68
+ bin/rails g cypress_on_rails:install --framework playwright
72
69
 
73
70
  # if you target the Rails server with a path prefix to your URL
74
71
  bin/rails g cypress_on_rails:install --api_prefix=/api
75
72
 
76
- # if you want to install cypress with npm
77
- bin/rails g cypress_on_rails:install --install_cypress_with=npm
73
+ # if you want to install with npm instead
74
+ bin/rails g cypress_on_rails:install --install_with=npm
78
75
 
79
76
  # if you already have cypress installed globally
80
- bin/rails g cypress_on_rails:install --no-install-cypress
77
+ bin/rails g cypress_on_rails:install --install_with=skip
81
78
 
82
79
  # to update the generated files run
83
- bin/rails g cypress_on_rails:update
80
+ bin/rails g cypress_on_rails:install --install_with=skip
84
81
  ```
85
82
 
86
83
  The generator modifies/adds the following files/directory in your application:
87
84
  * `config/initializers/cypress_on_rails.rb` used to configure Cypress on Rails
88
- * `spec/cypress/e2e/` contains your cypress tests
89
- * `spec/playwright/e2e/` contains your playwright tests
90
- * `spec/cypress/support/on-rails.js` contains Cypress on Rails support code
91
- * `spec/playwright/support/on-rails.js` contains Playwright on Rails support code
92
- * `spec/e2e/app_commands/scenarios/` contains your Cypress on Rails scenario definitions
93
- * `spec/e2e/cypress_helper.rb` contains helper code for Cypress on Rails app commands
85
+ * `e2e/cypress/integration/` contains your cypress tests
86
+ * `e2e/cypress/support/on-rails.js` contains Cypress on Rails support code
87
+ * `e2e/cypress/e2e_helper.rb` contains helper code to require libraries like factory_bot
88
+ * `e2e/cypress/app_commands/` contains your scenario definitions
89
+ * `e2e/playwright/e2e/` contains your playwright tests
90
+ * `e2e/playwright/support/on-rails.js` contains Playwright on Rails support code
94
91
 
95
- If you are not using `database_cleaner` look at `spec/e2e/app_commands/clean.rb`.
96
- If you are not using `factory_bot` look at `spec/e2e/app_commands/factory_bot.rb`.
92
+ If you are not using `database_cleaner` look at `e2e/cypress/app_commands/clean.rb`.
93
+ If you are not using `factory_bot` look at `e2e/cypress/app_commands/factory_bot.rb`.
97
94
 
98
95
  Now you can create scenarios and commands that are plain Ruby files that get loaded through middleware, the ruby sky is your limit.
99
96
 
100
97
  ### Update your database.yml
101
98
 
102
- When running `cypress test` or `playwright test` on your local computer it's recommended to start your server in development mode so that changes you
103
- make are picked up without having to restart the server.
99
+ When writing and running tests on your local computer it's recommended to start your server in development mode so that changes you
100
+ make are picked up without having to restart your local server.
104
101
  It's recommended you update your `database.yml` to check if the `CYPRESS` environment variable is set and switch it to the test database
105
102
  otherwise cypress will keep clearing your development database.
106
103
 
@@ -127,11 +124,9 @@ Getting started on your local environment
127
124
  CYPRESS=1 bin/rails server -p 5017
128
125
 
129
126
  # in separate window start cypress
130
- yarn cypress open
127
+ yarn cypress open --project ./e2e
131
128
  # or for npm
132
- node_modules/.bin/cypress open
133
- # or if you changed the cypress folder to spec/cypress
134
- yarn cypress open --project ./spec
129
+ npx cypress open --project ./e2e
135
130
  # or for playwright
136
131
  yarn playwright test --ui
137
132
  # or using npm
@@ -144,9 +139,9 @@ How to run cypress on CI
144
139
  # setup rails and start server in background
145
140
  # ...
146
141
 
147
- yarn run cypress run
142
+ yarn run cypress run --project ./e2e
148
143
  # or for npm
149
- npx cypress run
144
+ npx cypress run --project ./e2e
150
145
  ```
151
146
 
152
147
  ### Example of using factory bot
@@ -395,6 +390,47 @@ describe('My First Test', () => {
395
390
  })
396
391
  ```
397
392
 
393
+ ## `before_request` configuration
394
+
395
+ You may perform any custom action before running a CypressOnRails command, such as authentication, or sending metrics. Please set `before_request` as part of the CypressOnRails configuration.
396
+
397
+ You should get familiar with [Rack middlewares](https://www.rubyguides.com/2018/09/rack-middleware/).
398
+ If your function returns a `[status, header, body]` response, CypressOnRails will halt, and your command will not be executed. To execute the command, `before_request` should return `nil`.
399
+
400
+ ### Authenticate CypressOnRails
401
+
402
+ ```ruby
403
+ CypressOnRails.configure do |c|
404
+ # ...
405
+
406
+ # Refer to https://www.rubydoc.info/gems/rack/Rack/Request for the `request` argument.
407
+ c.before_request = lambda { |request|
408
+ body = JSON.parse(request.body.string)
409
+ if body['cypress_token'] != ENV.fetch('SWEEP_CYPRESS_SECRET_TOKEN')
410
+ # You may also use warden for authentication:
411
+ # if !request.env['warden'].authenticate(:secret_key)
412
+ return [401, {}, ['unauthorized']]
413
+ end
414
+
415
+ }
416
+ end
417
+ ```
418
+
419
+ ### Send usage metrics
420
+
421
+ ```ruby
422
+ CypressOnRails.configure do |c|
423
+ # ...
424
+
425
+ # Refer to https://www.rubydoc.info/gems/rack/Rack/Request for the `request` argument.
426
+ c.before_request = lambda { |request|
427
+ statsd = Datadog::Statsd.new('localhost', 8125)
428
+
429
+ statsd.increment('cypress_on_rails.requests')
430
+ }
431
+ end
432
+ ```
433
+
398
434
  ## Usage with other rack applications
399
435
 
400
436
  Add CypressOnRails to your config.ru
@@ -422,6 +458,9 @@ Cypress.Commands.add('appCommands', (body) => {
422
458
  method: 'POST',
423
459
  url: '/__cypress__/command',
424
460
  body: JSON.stringify(body),
461
+ headers: {
462
+ 'Content-Type': 'application/json; charset=utf-8',
463
+ },
425
464
  log: true,
426
465
  failOnStatusCode: true
427
466
  })
@@ -477,6 +516,11 @@ In `config/initializers/cypress_on_rails.rb`, add this line:
477
516
  <img alt="ScoutAPM" src="https://user-images.githubusercontent.com/4244251/184881152-9f2d8fba-88ac-4ba6-873b-22387f8711c5.png" height="120px">
478
517
  </picture>
479
518
  </a>
519
+ <a href="https://controlplane.com">
520
+ <picture>
521
+ <img alt="Control Plane" src="https://github.com/shakacode/.github/assets/20628911/90babd87-62c4-4de3-baa4-3d78ef4bec25" height="120px">
522
+ </picture>
523
+ </a>
480
524
  <br />
481
525
  <a href="https://www.browserstack.com">
482
526
  <picture>
@@ -19,7 +19,7 @@ Gem::Specification.new do |s|
19
19
  s.add_development_dependency 'rake'
20
20
  s.add_development_dependency 'rspec'
21
21
  s.add_development_dependency 'railties', '>= 3.2'
22
- s.add_development_dependency 'factory_bot'
22
+ s.add_development_dependency 'factory_bot', '!= 6.4.5'
23
23
  s.add_development_dependency 'vcr'
24
24
  s.metadata = {
25
25
  "bug_tracker_uri" => "https://github.com/shakacode/cypress-on-rails/issues",
@@ -6,6 +6,7 @@ module CypressOnRails
6
6
  attr_accessor :install_folder
7
7
  attr_accessor :use_middleware
8
8
  attr_accessor :use_vcr_middleware
9
+ attr_accessor :before_request
9
10
  attr_accessor :logger
10
11
 
11
12
  # Attributes for backwards compatibility
@@ -30,6 +31,7 @@ module CypressOnRails
30
31
  self.install_folder = 'spec/e2e'
31
32
  self.use_middleware = true
32
33
  self.use_vcr_middleware = false
34
+ self.before_request = -> (request) {}
33
35
  self.logger = Logger.new(STDOUT)
34
36
  end
35
37
 
@@ -47,6 +47,11 @@ module CypressOnRails
47
47
  end
48
48
 
49
49
  def handle_command(req)
50
+ maybe_env = configuration.before_request.call(req)
51
+ # Halt the middleware if an Rack Env was returned by `before_request`
52
+ return maybe_env unless maybe_env.nil?
53
+
54
+ req.body.rewind
50
55
  body = JSON.parse(req.body.read)
51
56
  logger.info "handle_command: #{body}"
52
57
  commands = Command.from_body(body, configuration)
@@ -1,5 +1,3 @@
1
- require 'active_support/core_ext/string'
2
-
3
1
  module CypressOnRails
4
2
  module SimpleRailsFactory
5
3
  def self.create(type, *params)
@@ -1,3 +1,3 @@
1
1
  module CypressOnRails
2
- VERSION = '1.15.1'.freeze
2
+ VERSION = '1.17.0'.freeze
3
3
  end
@@ -1,12 +1,9 @@
1
1
  module CypressOnRails
2
2
  class InstallGenerator < Rails::Generators::Base
3
3
  class_option :api_prefix, type: :string, default: ''
4
+ class_option :framework, type: :string, default: 'cypress'
4
5
  class_option :install_folder, type: :string, default: 'e2e'
5
- class_option :install_cypress, type: :boolean, default: true
6
- class_option :install_playwright, type: :boolean, default: false
7
6
  class_option :install_with, type: :string, default: 'yarn'
8
- class_option :cypress_folder, type: :string, default: 'cypress'
9
- class_option :playwright_folder, type: :string, default: 'playwright'
10
7
  class_option :experimental, type: :boolean, default: false
11
8
  source_root File.expand_path('../templates', __FILE__)
12
9
 
@@ -17,10 +14,11 @@ module CypressOnRails
17
14
 
18
15
  command = nil
19
16
  packages = []
20
-
21
- packages << 'cypress' if options.install_cypress
22
- packages.push('playwright', '@playwright/test') if options.install_playwright
23
-
17
+ packages = if options.framework == 'cypress'
18
+ ['cypress', 'cypress-on-rails']
19
+ elsif options.framework == 'playwright'
20
+ ['playwright', '@playwright/test']
21
+ end
24
22
  if options.install_with == 'yarn'
25
23
  command = "yarn --cwd=#{install_dir} add #{packages.join(' ')} --dev"
26
24
  elsif options.install_with == 'npm'
@@ -31,38 +29,42 @@ module CypressOnRails
31
29
  fail "failed to install #{packages.join(' ')}" unless system(command)
32
30
  end
33
31
 
34
- if options.install_cypress
35
- template "spec/cypress/support/index.js.erb", "#{options.cypress_folder}/support/index.js"
36
- copy_file "spec/cypress/support/commands.js", "#{options.cypress_folder}/support/commands.js"
37
- copy_file "spec/cypress.config.js", "#{options.cypress_folder}/../cypress.config.js"
32
+ if options.framework == 'cypress'
33
+ template "spec/cypress/support/index.js.erb", "#{options.install_folder}/cypress/support/index.js"
34
+ copy_file "spec/cypress/support/commands.js", "#{options.install_folder}/cypress/support/commands.js"
35
+ copy_file "spec/cypress.config.js", "#{options.install_folder}/cypress.config.js"
38
36
  end
39
- if options.install_playwright
40
- template "spec/playwright/support/index.js.erb", "#{options.playwright_folder}/support/index.js"
41
- copy_file "spec/playwright.config.js", "#{options.playwright_folder}/../playwright.config.js"
37
+ if options.framework == 'playwright'
38
+ template "spec/playwright/support/index.js.erb", "#{options.install_folder}/playwright/support/index.js"
39
+ copy_file "spec/playwright.config.js", "#{options.install_folder}/playwright.config.js"
42
40
  end
43
41
  end
44
42
 
45
43
  def add_initial_files
46
44
  template "config/initializers/cypress_on_rails.rb.erb", "config/initializers/cypress_on_rails.rb"
47
- template "spec/e2e/e2e_helper.rb.erb", "#{options.install_folder}/e2e_helper.rb"
48
- directory 'spec/e2e/app_commands', "#{options.install_folder}/app_commands"
49
- if options.install_cypress
50
- copy_file "spec/cypress/support/on-rails.js", "#{options.cypress_folder}/support/on-rails.js"
51
- directory 'spec/cypress/e2e/rails_examples', "#{options.cypress_folder}/e2e/rails_examples"
45
+ template "spec/e2e/e2e_helper.rb.erb", "#{options.install_folder}/#{options.framework}/e2e_helper.rb"
46
+ directory 'spec/e2e/app_commands', "#{options.install_folder}/#{options.framework}/app_commands"
47
+ if options.framework == 'cypress'
48
+ copy_file "spec/cypress/support/on-rails.js", "#{options.install_folder}/cypress/support/on-rails.js"
49
+ directory 'spec/cypress/e2e/rails_examples', "#{options.install_folder}/cypress/e2e/rails_examples"
52
50
  end
53
- if options.install_playwright
54
- copy_file "spec/playwright/support/on-rails.js", "#{options.playwright_folder}/support/on-rails.js"
55
- directory 'spec/playwright/e2e/rails_examples', "#{options.playwright_folder}/e2e/rails_examples"
51
+ if options.framework == 'playwright'
52
+ copy_file "spec/playwright/support/on-rails.js", "#{options.install_folder}/playwright/support/on-rails.js"
53
+ directory 'spec/playwright/e2e/rails_examples', "#{options.install_folder}/playwright/e2e/rails_examples"
56
54
  end
57
55
  end
58
56
 
59
57
  def update_files
60
- append_to_file "#{options.cypress_folder}/support/index.js",
61
- "\nimport './on-rails'",
62
- after: 'import \'./commands\''
63
- append_to_file "#{options.playwright_folder}/support/index.js",
64
- "\nimport './on-rails'",
65
- after: '// Import commands.js using ES2015 syntax:'
58
+ if options.framework == 'cypress'
59
+ append_to_file "#{options.install_folder}/cypress/support/index.js",
60
+ "\nimport './on-rails'",
61
+ after: 'import \'./commands\''
62
+ end
63
+ if options.framework == 'playwright'
64
+ append_to_file "#{options.install_folder}/playwright/support/index.js",
65
+ "\nimport './on-rails'",
66
+ after: '// Import commands.js using ES2015 syntax:'
67
+ end
66
68
  end
67
69
  end
68
70
  end
@@ -1,12 +1,21 @@
1
1
  if defined?(CypressOnRails)
2
2
  CypressOnRails.configure do |c|
3
3
  c.api_prefix = "<%= options.api_prefix %>"
4
- c.install_folder = File.expand_path("#{__dir__}/../../<%= options.install_folder %>")
4
+ c.install_folder = File.expand_path("#{__dir__}/../../<%= options.install_folder %>/<%= options.framework %>")
5
5
  # WARNING!! CypressOnRails can execute arbitrary ruby code
6
6
  # please use with extra caution if enabling on hosted servers or starting your local server on 0.0.0.0
7
7
  c.use_middleware = !Rails.env.production?
8
8
  <% unless options.experimental %># <% end %> c.use_vcr_middleware = !Rails.env.production?
9
9
  c.logger = Rails.logger
10
+
11
+ # If you want to enable a before_request logic, such as authentication, logging, sending metrics, etc.
12
+ # Refer to https://www.rubydoc.info/gems/rack/Rack/Request for the `request` argument.
13
+ # Return nil to continue through the Cypress command. Return a response [status, header, body] to halt.
14
+ # c.before_request = lambda { |request|
15
+ # unless request.env['warden'].authenticate(:secret_key)
16
+ # return [403, {}, ["forbidden"]]
17
+ # end
18
+ # }
10
19
  end
11
20
 
12
21
  # # if you compile your asssets on CI
@@ -6,6 +6,9 @@ Cypress.Commands.add('appCommands', function (body) {
6
6
  method: 'POST',
7
7
  url: "/__e2e__/command",
8
8
  body: JSON.stringify(body),
9
+ headers: {
10
+ 'Content-Type': 'application/json',
11
+ },
9
12
  log: false,
10
13
  failOnStatusCode: false
11
14
  }).then((response) => {
@@ -52,6 +55,9 @@ Cypress.on('fail', (err, runnable) => {
52
55
  Cypress.$.ajax({
53
56
  url: '/__e2e__/command',
54
57
  data: JSON.stringify({name: 'log_fail', options: {error_message: err.message, runnable_full_title: runnable.fullTitle() }}),
58
+ headers: {
59
+ 'Content-Type': 'application/json',
60
+ },
55
61
  async: false,
56
62
  method: 'POST'
57
63
  });
@@ -8,19 +8,23 @@ RSpec.describe CypressOnRails::Configuration do
8
8
  expect(CypressOnRails.configuration.install_folder).to eq('spec/e2e')
9
9
  expect(CypressOnRails.configuration.use_middleware?).to eq(true)
10
10
  expect(CypressOnRails.configuration.logger).to_not be_nil
11
+ expect(CypressOnRails.configuration.before_request).to_not be_nil
11
12
  end
12
13
 
13
14
  it 'can be configured' do
14
15
  my_logger = Logger.new(STDOUT)
16
+ before_request_lambda = -> (_) { return [200, {}, ['hello world']] }
15
17
  CypressOnRails.configure do |config|
16
18
  config.api_prefix = '/api'
17
19
  config.install_folder = 'my/path'
18
20
  config.use_middleware = false
19
21
  config.logger = my_logger
22
+ config.before_request = before_request_lambda
20
23
  end
21
24
  expect(CypressOnRails.configuration.api_prefix).to eq('/api')
22
25
  expect(CypressOnRails.configuration.install_folder).to eq('my/path')
23
26
  expect(CypressOnRails.configuration.use_middleware?).to eq(false)
24
27
  expect(CypressOnRails.configuration.logger).to eq(my_logger)
28
+ expect(CypressOnRails.configuration.before_request).to eq(before_request_lambda)
25
29
  end
26
30
  end
@@ -10,19 +10,20 @@ export BUNDLE_GEMFILE="$DIR/Gemfile"
10
10
  cd $DIR
11
11
 
12
12
  echo '-- bundle install'
13
- bundle --version
14
- bundle install --quiet --gemfile="$DIR/Gemfile" --retry 2 --path vendor/bundle
13
+ gem install bundler -v '1.0.22'
14
+ bundle _1.0.22_ --version
15
+ bundle _1.0.22_ install --quiet --gemfile="$DIR/Gemfile" --path vendor/bundle
15
16
 
16
17
  echo '-- cypress install'
17
- bundle exec ./bin/rails g cypress_on_rails:install --install_cypress --install_playwright --install_with=npm
18
+ bundle exec ./bin/rails g cypress_on_rails:install --install_with=npm --install_folder="." --force
18
19
  rm -vf cypress/e2e/rails_examples/advance_factory_bot.cy.js
19
20
  rm -vf cypress/e2e/rails_examples/using_vcr.cy.js
20
21
 
21
22
  echo '-- start rails server'
22
23
  # make sure the server is not running
23
- (kill -9 `cat tmp/pids/server.pid` || true )
24
+ (kill -9 `cat ../server.pid` || true )
24
25
 
25
- bundle exec ./bin/rails server -p 5017 -e test &
26
+ bundle exec ./bin/rails server -p 5017 -e test -P ../server.pid &
26
27
  sleep 2 # give rails a chance to start up correctly
27
28
 
28
29
  echo '-- cypress run'
@@ -31,13 +32,19 @@ cp -fv ../cypress.config.js .
31
32
  # then
32
33
  # node_modules/.bin/cypress run
33
34
  # else
34
- node_modules/.bin/cypress run --record
35
+ npx cypress run --record
35
36
  # fi
36
37
 
38
+ echo '-- playwright install'
39
+ bundle exec ./bin/rails g cypress_on_rails:install --framework playwright --install_with=npm --install_folder="." --force
40
+ rm -vf playwright/e2e/rails_examples/advance_factory_bot.cy.js
41
+ rm -vf playwright/e2e/rails_examples/using_vcr.cy.js
42
+
37
43
  echo '-- playwright run'
38
44
  cp -fv ../playwright.config.js .
39
45
  npx playwright install-deps
46
+ npx playwright install
40
47
  npx playwright test playwright/e2e/
41
48
 
42
49
  echo '-- stop rails server'
43
- kill -9 `cat tmp/pids/server.pid`
50
+ kill -9 `cat ../server.pid` || true
@@ -4,6 +4,7 @@ spec/cypress.config.js
4
4
  spec/package.json
5
5
  spec/yarn.lock
6
6
  spec/cypress
7
+ spec/app_commands
7
8
  config/initializers/cypress_on_rails.rb
8
9
  vendor/bundle
9
10
  tmp/pids
@@ -4,7 +4,9 @@
4
4
  "main": "index.js",
5
5
  "license": "MIT",
6
6
  "devDependencies": {
7
- "cypress": "^10.0.2",
8
- "cypress-on-rails": "file:../../plugin"
7
+ "@playwright/test": "^1.40.1",
8
+ "cypress": "^10.11.0",
9
+ "cypress-on-rails": "file:../../plugin",
10
+ "playwright": "^1.40.1"
9
11
  }
10
12
  }