cypress-on-rails 1.5.1 → 1.9.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.
- checksums.yaml +5 -5
- data/.github/FUNDING.yml +1 -0
- data/.gitignore +1 -0
- data/.travis.yml +7 -0
- data/CHANGELOG.md +49 -1
- data/README.md +76 -29
- data/cypress-on-rails.gemspec +9 -1
- data/lib/cypress_on_rails/command_executor.rb +1 -1
- data/lib/cypress_on_rails/railtie.rb +1 -1
- data/lib/cypress_on_rails/simple_rails_factory.rb +4 -0
- data/lib/cypress_on_rails/smart_factory_wrapper.rb +3 -13
- data/lib/cypress_on_rails/version.rb +1 -1
- data/lib/generators/cypress_on_rails/install_generator.rb +13 -24
- data/lib/generators/cypress_on_rails/templates/config/initializers/cypress_on_rails.rb.erb +9 -1
- data/lib/generators/cypress_on_rails/templates/spec/cypress.json +1 -1
- data/lib/generators/cypress_on_rails/templates/spec/cypress/app_commands/clean.rb +1 -1
- data/lib/generators/cypress_on_rails/templates/spec/cypress/cypress_helper.rb +7 -2
- data/lib/generators/cypress_on_rails/templates/spec/cypress/integration/examples/cypress_api.spec.js +4 -4
- data/spec/cypress_on_rails/smart_factory_wrapper_spec.rb +13 -12
- data/spec/integrations/cypress.json +1 -1
- data/spec/integrations/rails_3_2/test.sh +2 -2
- data/spec/integrations/rails_4_2/Gemfile +2 -1
- data/spec/integrations/rails_4_2/test.sh +2 -2
- data/spec/integrations/rails_5_2/Gemfile +1 -0
- data/spec/integrations/rails_5_2/test.sh +3 -2
- metadata +25 -6
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
|
-
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
2
|
+
SHA256:
|
3
|
+
metadata.gz: b729d2f84bc4c0ae47bf5604c2f51a8c9c5b793f8256a3e698e127cbb5b54974
|
4
|
+
data.tar.gz: 957791607d573fe7a5d1193df5fc59b7c99f349bf023a71827c2de0dc77e2ffe
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 889c0983aeb92cbbbb7cc51ffdb33033bfc33d169bf123483f63b417b522cbdd3e62f1855b4ea36b47d866d6dd2c26fba0e63a939e6e1573640604ee0833cab3
|
7
|
+
data.tar.gz: 1cfabe2cd7c2a39b622aff2c140babd7818050f7289973a4f89d08803906540d78113f4826d1eb07b1f6ebbedc0f334bab3688e2576d375d60a800d9c7197d20
|
data/.github/FUNDING.yml
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
github: [shakacode]
|
data/.gitignore
CHANGED
data/.travis.yml
CHANGED
@@ -1,8 +1,10 @@
|
|
1
1
|
language: ruby
|
2
2
|
rvm:
|
3
3
|
- 2.3
|
4
|
+
- 2.4
|
4
5
|
- 2.5
|
5
6
|
- 2.6
|
7
|
+
# - 2.7
|
6
8
|
|
7
9
|
#addons:
|
8
10
|
# artifacts:
|
@@ -24,9 +26,14 @@ before_install:
|
|
24
26
|
- sudo apt-get -qq update
|
25
27
|
- sudo apt-get install -y build-essential patch ruby-dev zlib1g-dev liblzma-dev libxml2-dev
|
26
28
|
- sudo apt-get install -y xvfb libgtk2.0-0 libnotify-dev libgconf-2-4 libnss3 libxss1 libasound2
|
29
|
+
- travis_retry nvm install 14.13.1
|
30
|
+
- node -v
|
31
|
+
- nvm alias default 14.13.1
|
27
32
|
|
28
33
|
script:
|
29
34
|
- bundle exec rake
|
35
|
+
- gem uninstall -v '>= 2' -i $(rvm gemdir)@global -ax bundler || true
|
36
|
+
- gem install bundler -v '< 2'
|
30
37
|
- ./spec/integrations/rails_5_2/test.sh
|
31
38
|
- ./spec/integrations/rails_4_2/test.sh
|
32
39
|
- ./spec/integrations/rails_3_2/test.sh
|
data/CHANGELOG.md
CHANGED
@@ -1,3 +1,43 @@
|
|
1
|
+
## [1.9.0]
|
2
|
+
[Compare]: https://github.com/shakacode/cypress-on-rails/compare/v1.8.1...v1.9.0
|
3
|
+
|
4
|
+
### Changed
|
5
|
+
* Update default generated folder to cypress instead of spec/cypress
|
6
|
+
* Add a generator option to not install cypress
|
7
|
+
* generator by default does not include examples
|
8
|
+
* default on local to run cypress in development mode
|
9
|
+
|
10
|
+
## [1.8.1]
|
11
|
+
[Compare]: https://github.com/shakacode/cypress-on-rails/compare/v1.8.0...v1.8.1
|
12
|
+
|
13
|
+
### Fixed
|
14
|
+
* remove "--silent" option when adding cypress [PR 76](https://github.com/shakacode/cypress-on-rails/pull/76)
|
15
|
+
* update cypress examples to use "preserve" instead of "whitelist" [PR 75](https://github.com/shakacode/cypress-on-rails/pull/75) by [alvincrespo](https://github.com/alvincrespo)
|
16
|
+
|
17
|
+
## [1.8.0]
|
18
|
+
[Compare]: https://github.com/shakacode/cypress-on-rails/compare/v1.7.0...v1.8.0
|
19
|
+
|
20
|
+
### Changed
|
21
|
+
* Use `FactoryBo#reload` to reset factory bot
|
22
|
+
|
23
|
+
## [1.7.0]
|
24
|
+
[Compare]: https://github.com/shakacode/cypress-on-rails/compare/v1.6.0...v1.7.0
|
25
|
+
|
26
|
+
### Changed
|
27
|
+
* Improve eval() in command executor [PR 46](https://github.com/shakacode/cypress-on-rails/pull/46) by [Systho](https://github.com/Systho)
|
28
|
+
|
29
|
+
### Fixed
|
30
|
+
* Add middleware after load_config_initializers [PR 62](https://github.com/shakacode/cypress-on-rails/pull/62) by [duytd](https://github.com/duytd)
|
31
|
+
|
32
|
+
## [1.6.0]
|
33
|
+
[Compare]: https://github.com/shakacode/cypress-on-rails/compare/v1.5.1...v1.6.0
|
34
|
+
|
35
|
+
### Changed
|
36
|
+
* Change default port to 5017 [PR 49](https://github.com/shakacode/cypress-on-rails/pull/49) by [vfonic](https://github/vfonic)
|
37
|
+
|
38
|
+
### Fixed
|
39
|
+
* fix file location warning message in clean.rb [PR 54](https://github.com/shakacode/cypress-on-rails/pull/54) by [ootoovak](https://github.com/ootoovak)
|
40
|
+
|
1
41
|
## [1.5.1]
|
2
42
|
[Compare]: https://github.com/shakacode/cypress-on-rails/compare/v1.5.0...v1.5.1
|
3
43
|
|
@@ -32,7 +72,7 @@
|
|
32
72
|
* Update Travis CI badge in README [PR 31](https://github.com/shakacode/cypress-on-rails/pull/31)
|
33
73
|
* Fix CI by Installing cypress dependencies on Travis CI [PR 31](https://github.com/shakacode/cypress-on-rails/pull/31)
|
34
74
|
|
35
|
-
## [1.4.0]
|
75
|
+
## [1.4.0]
|
36
76
|
[Compare]: https://github.com/shakacode/cypress-on-rails/compare/v1.3.0...v1.4.0
|
37
77
|
|
38
78
|
* Accept an options argument for scenarios. [PR 18](https://github.com/shakacode/cypress-on-rails/pull/18) by [ericraio](https://github.com/ericraio).
|
@@ -98,6 +138,14 @@
|
|
98
138
|
## 0.1.2 (2017-10-31)
|
99
139
|
* First release.
|
100
140
|
|
141
|
+
[1.8.0]: https://github.com/shakacode/cypress-on-rails/compare/v1.7.0...v1.8.0
|
142
|
+
[1.7.0]: https://github.com/shakacode/cypress-on-rails/compare/v1.6.0...v1.7.0
|
143
|
+
[1.6.0]: https://github.com/shakacode/cypress-on-rails/compare/v1.5.1...v1.6.0
|
144
|
+
[1.5.1]: https://github.com/shakacode/cypress-on-rails/compare/v1.5.0...v1.5.1
|
145
|
+
[1.5.0]: https://github.com/shakacode/cypress-on-rails/compare/v1.4.2...v1.5.0
|
146
|
+
[1.4.2]: https://github.com/shakacode/cypress-on-rails/compare/v1.4.1...v1.4.2
|
147
|
+
[1.4.1]: https://github.com/shakacode/cypress-on-rails/compare/v1.4.0...v1.4.1
|
148
|
+
[1.4.0]: https://github.com/shakacode/cypress-on-rails/compare/v1.3.0...v1.4.0
|
101
149
|
[1.3.0]: https://github.com/shakacode/cypress-on-rails/compare/v1.2.1...v1.3.0
|
102
150
|
[1.2.1]: https://github.com/shakacode/cypress-on-rails/compare/v1.2.0...v1.2.1
|
103
151
|
[1.2.0]: https://github.com/shakacode/cypress-on-rails/compare/v1.1.1...v1.2.0
|
data/README.md
CHANGED
@@ -8,7 +8,14 @@ This project is sponsored by the software consulting firm [ShakaCode](https://ww
|
|
8
8
|
|
9
9
|
----
|
10
10
|
|
11
|
-
|
11
|
+
# Totally new to Cypress?
|
12
|
+
Suggest you first learn the basics of Cypress before attempting to integrate with Ruby on Rails
|
13
|
+
|
14
|
+
* [Good start Here](https://docs.cypress.io/examples/examples/tutorials.html#Best-Practices)
|
15
|
+
|
16
|
+
## Overview
|
17
|
+
|
18
|
+
Gem for using [cypress.io](http://github.com/cypress-io/) in Rails and ruby rack applications
|
12
19
|
with the goal of controlling State as mentioned in [Cypress Best Practices](https://docs.cypress.io/guides/references/best-practices.html#Organizing-Tests-Logging-In-Controlling-State)
|
13
20
|
|
14
21
|
It allows to run code in the application context when executing cypress tests.
|
@@ -24,44 +31,68 @@ Has examples of setting up state with:
|
|
24
31
|
* scenarios
|
25
32
|
* custom commands
|
26
33
|
|
27
|
-
|
34
|
+
## Resources
|
35
|
+
* [Video of getting started with this gem](https://grant-ps.blog/2018/08/10/getting-started-with-cypress-io-and-ruby-on-rails/)
|
36
|
+
* [Article: Introduction to Cypress on Rails](https://www.shakacode.com/blog/introduction-to-cypress-on-rails/)
|
28
37
|
|
29
|
-
|
30
|
-
|
31
|
-
## Getting started
|
38
|
+
## Installation
|
32
39
|
|
33
40
|
Add this to your Gemfile:
|
34
|
-
|
41
|
+
|
42
|
+
```ruby
|
35
43
|
group :test, :development do
|
36
44
|
gem 'cypress-on-rails', '~> 1.0'
|
37
45
|
end
|
38
46
|
```
|
39
47
|
|
40
48
|
Generate the boilerplate code using:
|
41
|
-
|
49
|
+
|
50
|
+
```shell
|
42
51
|
bin/rails g cypress_on_rails:install
|
43
52
|
|
44
|
-
# if you have/want a different cypress folder (default is
|
45
|
-
bin/rails g cypress_on_rails:install --cypress_folder=
|
53
|
+
# if you have/want a different cypress folder (default is cypress)
|
54
|
+
bin/rails g cypress_on_rails:install --cypress_folder=spec/cypress
|
46
55
|
|
47
56
|
# if you want to install cypress with npm
|
48
57
|
bin/rails g cypress_on_rails:install --install_cypress_with=npm
|
49
58
|
|
59
|
+
# if you already have cypress installed globally
|
60
|
+
bin/rails g cypress_on_rails:install --no-install-cypress
|
61
|
+
|
50
62
|
# to update the generated files run
|
51
63
|
bin/rails g cypress_on_rails:update
|
52
64
|
```
|
53
65
|
|
54
|
-
The generator adds the following files/directory
|
66
|
+
The generator modifies/adds the following files/directory in your application:
|
67
|
+
* `config/environments/test.rb`
|
55
68
|
* `config/initializers/cypress_on_rails` used to configure CypressDev
|
56
69
|
* `spec/cypress/integrations/` contains your cypress tests
|
57
70
|
* `spec/cypress/support/on-rails.js` contains CypressDev support code
|
58
71
|
* `spec/cypress/app_commands/scenarios/` contains your CypressDev scenario definitions
|
59
72
|
* `spec/cypress/cypress_helper.rb` contains helper code for CypressDev app commands
|
60
73
|
|
61
|
-
if you are not using database_cleaner look at `spec/cypress/app_commands/
|
74
|
+
if you are not using database_cleaner look at `spec/cypress/app_commands/clean.rb`.
|
62
75
|
if you are not using factory_bot look at `spec/cypress/app_commands/factory_bot.rb`.
|
63
76
|
|
64
|
-
Now you can create scenarios and commands that are
|
77
|
+
Now you can create scenarios and commands that are plain ruby files that get loaded through middleware, the ruby sky is your limit.
|
78
|
+
|
79
|
+
### Update your database.yml
|
80
|
+
|
81
|
+
When writing cypress test on your local it's recommended to start your server in development mode so that changes you
|
82
|
+
make are picked up without having to restart the server.
|
83
|
+
It's recommend you update your database.yml to check if the CYPRESS environment variable is set and switch it to the test database
|
84
|
+
otherwise cypress will keep clearing your development database.
|
85
|
+
|
86
|
+
for example:
|
87
|
+
|
88
|
+
```yaml
|
89
|
+
development:
|
90
|
+
<<: *default
|
91
|
+
database: <%= ENV['CYPRESS'] ? 'my_db_test' : 'my_db_development' %>
|
92
|
+
test:
|
93
|
+
<<: *default
|
94
|
+
database: my_db_test
|
95
|
+
```
|
65
96
|
|
66
97
|
### WARNING
|
67
98
|
*WARNING!!:* cypress-on-rails can execute arbitrary ruby code
|
@@ -69,18 +100,33 @@ Please use with extra caution if starting your local server on 0.0.0.0 or runnin
|
|
69
100
|
|
70
101
|
## Usage
|
71
102
|
|
72
|
-
|
103
|
+
Getting started on your local environment
|
73
104
|
|
74
|
-
```
|
105
|
+
```shell
|
75
106
|
# start rails
|
76
|
-
|
77
|
-
bin/rails server -e test -p 5002
|
107
|
+
CYPRESS=1 bin/rails server -p 5017
|
78
108
|
|
79
109
|
# in separate window start cypress
|
110
|
+
yarn cypress open
|
111
|
+
# or for npm
|
112
|
+
node_modules/.bin/cypress open
|
113
|
+
# or if you changed the cypress folder to spec/cypress
|
80
114
|
yarn cypress open --project ./spec
|
81
115
|
```
|
82
116
|
|
117
|
+
How to run cypress on CI
|
118
|
+
|
119
|
+
```shell
|
120
|
+
# setup rails and start server in background
|
121
|
+
# ...
|
122
|
+
|
123
|
+
yarn run cypress run
|
124
|
+
# or for npm
|
125
|
+
node_modules/.bin/cypress run
|
126
|
+
```
|
127
|
+
|
83
128
|
### Example of using factory bot
|
129
|
+
|
84
130
|
You can run your [factory_bot](https://github.com/thoughtbot/factory_bot) directly as well
|
85
131
|
|
86
132
|
```ruby
|
@@ -88,10 +134,10 @@ You can run your [factory_bot](https://github.com/thoughtbot/factory_bot) direct
|
|
88
134
|
require 'cypress_on_rails/smart_factory_wrapper'
|
89
135
|
|
90
136
|
CypressOnRails::SmartFactoryWrapper.configure(
|
91
|
-
|
92
|
-
|
93
|
-
|
94
|
-
)
|
137
|
+
always_reload: !Rails.configuration.cache_classes,
|
138
|
+
factory: FactoryBot,
|
139
|
+
files: Dir['./spec/factories/**/*.rb']
|
140
|
+
)
|
95
141
|
```
|
96
142
|
|
97
143
|
```js
|
@@ -101,16 +147,17 @@ describe('My First Test', function() {
|
|
101
147
|
// This calls to the backend to prepare the application state
|
102
148
|
cy.appFactories([
|
103
149
|
['create_list', 'post', 10],
|
104
|
-
['create', 'post', {title: 'Hello World'} ]
|
150
|
+
['create', 'post', {title: 'Hello World'} ],
|
151
|
+
['create', 'post', 'with_comments', {title: 'Factory_bot Traits here'} ] // use traits
|
105
152
|
])
|
106
153
|
|
107
154
|
// Visit the application under test
|
108
155
|
cy.visit('/')
|
109
156
|
|
110
157
|
cy.contains("Hello World")
|
111
|
-
|
158
|
+
|
112
159
|
// Accessing result
|
113
|
-
cy.appFactories([['create', 'invoice', { paid: false }]]).then((records) => {
|
160
|
+
cy.appFactories([['create', 'invoice', { paid: false }]]).then((records) => {
|
114
161
|
cy.visit(`/invoices/${records[0].id}`);
|
115
162
|
});
|
116
163
|
})
|
@@ -155,7 +202,7 @@ You define a scenario in the `spec/cypress/app_commands/scenarios` directory:
|
|
155
202
|
Profile.create name: "Cypress Hill"
|
156
203
|
|
157
204
|
# or if you have factory_bot enabled in your cypress_helper
|
158
|
-
CypressOnRails::SmartFactoryWrapper.create(:profile, name: "Cypress Hill")
|
205
|
+
CypressOnRails::SmartFactoryWrapper.create(:profile, name: "Cypress Hill")
|
159
206
|
```
|
160
207
|
|
161
208
|
Then reference the scenario in your test:
|
@@ -177,8 +224,8 @@ describe('My First Test', function() {
|
|
177
224
|
|
178
225
|
create a ruby file in `spec/cypress/app_commands` directory:
|
179
226
|
```ruby
|
180
|
-
# spec/cypress/app_commands/load_seed.rb
|
181
|
-
load "#{Rails.root}/db/seeds.rb"
|
227
|
+
# spec/cypress/app_commands/load_seed.rb
|
228
|
+
load "#{Rails.root}/db/seeds.rb"
|
182
229
|
```
|
183
230
|
|
184
231
|
Then reference the command in your test with `cy.app('load_seed')`:
|
@@ -186,7 +233,7 @@ Then reference the command in your test with `cy.app('load_seed')`:
|
|
186
233
|
// spec/cypress/integrations/simple_spec.js
|
187
234
|
describe('My First Test', function() {
|
188
235
|
beforeEach(() => { cy.app('load_seed') })
|
189
|
-
|
236
|
+
|
190
237
|
it('visit root', function() {
|
191
238
|
cy.visit('/')
|
192
239
|
|
@@ -209,7 +256,7 @@ CypressOnRails.configure do |c|
|
|
209
256
|
end
|
210
257
|
use CypressOnRails::Middleware
|
211
258
|
|
212
|
-
run MyApp
|
259
|
+
run MyApp
|
213
260
|
```
|
214
261
|
|
215
262
|
add the following file to cypress
|
@@ -248,7 +295,7 @@ beforeEach(() => {
|
|
248
295
|
|
249
296
|
## Contributing
|
250
297
|
|
251
|
-
1. Fork it ( https://github.com/
|
298
|
+
1. Fork it ( https://github.com/shakacode/cypress-on-rails/fork )
|
252
299
|
2. Create your feature branch (`git checkout -b my-new-feature`)
|
253
300
|
3. Commit your changes (`git commit -am 'Add some feature'`)
|
254
301
|
4. Push to the branch (`git push origin my-new-feature`)
|
data/cypress-on-rails.gemspec
CHANGED
@@ -7,7 +7,7 @@ Gem::Specification.new do |s|
|
|
7
7
|
s.version = CypressOnRails::VERSION
|
8
8
|
s.author = ["miceportal team", 'Grant Petersen-Speelman']
|
9
9
|
s.email = ["info@miceportal.de", 'grantspeelman@gmail.com']
|
10
|
-
s.homepage = "http://github.com/
|
10
|
+
s.homepage = "http://github.com/shakacode/cypress-on-rails"
|
11
11
|
s.summary = "Integrates cypress with rails or rack applications"
|
12
12
|
s.description = "Integrates cypress with rails or rack applications"
|
13
13
|
s.post_install_message = 'The CypressDev constant is being deprecated and will be completely removed and replaced with CypressOnRails.'
|
@@ -19,4 +19,12 @@ 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'
|
23
|
+
s.metadata = {
|
24
|
+
"bug_tracker_uri" => "https://github.com/shakacode/cypress-on-rails/issues",
|
25
|
+
"changelog_uri" => "https://github.com/shakacode/cypress-on-rails/blob/master/CHANGELOG.md",
|
26
|
+
"documentation_uri" => "https://github.com/shakacode/cypress-on-rails/blob/master/README.md",
|
27
|
+
"homepage_uri" => "http://github.com/shakacode/cypress-on-rails",
|
28
|
+
"source_code_uri" => "http://github.com/shakacode/cypress-on-rails"
|
29
|
+
}
|
22
30
|
end
|
@@ -6,7 +6,7 @@ module CypressOnRails
|
|
6
6
|
def self.load(file,command_options = nil)
|
7
7
|
load_cypress_helper
|
8
8
|
file_data = File.read(file)
|
9
|
-
eval file_data
|
9
|
+
eval file_data, binding, file
|
10
10
|
rescue => e
|
11
11
|
logger.error("fail to execute #{file}: #{e.message}")
|
12
12
|
logger.error(e.backtrace.join("\n"))
|
@@ -4,7 +4,7 @@ require 'cypress_on_rails/middleware'
|
|
4
4
|
|
5
5
|
module CypressOnRails
|
6
6
|
class Railtie < Rails::Railtie
|
7
|
-
initializer :setup_cypress_middleware do |app|
|
7
|
+
initializer :setup_cypress_middleware, after: :load_config_initializers do |app|
|
8
8
|
if CypressOnRails.configuration.use_middleware?
|
9
9
|
app.middleware.use Middleware
|
10
10
|
end
|
@@ -3,15 +3,6 @@ require 'cypress_on_rails/simple_rails_factory'
|
|
3
3
|
|
4
4
|
module CypressOnRails
|
5
5
|
class SmartFactoryWrapper
|
6
|
-
module FactoryCleaner
|
7
|
-
def self.clean(f = FactoryBot)
|
8
|
-
f.factories.clear if f.respond_to?(:factories)
|
9
|
-
f.traits.clear if f.respond_to?(:traits)
|
10
|
-
f.callbacks.clear if f.respond_to?(:callbacks)
|
11
|
-
f.sequences.clear if f.respond_to?(:sequences)
|
12
|
-
end
|
13
|
-
end
|
14
|
-
|
15
6
|
def self.instance
|
16
7
|
@instance ||= new(files: [], factory: SimpleRailsFactory)
|
17
8
|
end
|
@@ -33,14 +24,13 @@ module CypressOnRails
|
|
33
24
|
attr_accessor :always_reload
|
34
25
|
|
35
26
|
def initialize(files:, factory:, always_reload: false,
|
36
|
-
|
37
|
-
dir_system: Dir)
|
27
|
+
kernel: Kernel, file_system: File, dir_system: Dir)
|
38
28
|
self.files = files
|
39
29
|
self.factory = factory
|
30
|
+
factory.definition_file_paths = []
|
40
31
|
self.always_reload = always_reload
|
41
32
|
@kernel = kernel
|
42
33
|
@file_system = file_system
|
43
|
-
@factory_cleaner = factory_cleaner
|
44
34
|
@latest_mtime = nil
|
45
35
|
@dir_system = dir_system
|
46
36
|
end
|
@@ -83,7 +73,7 @@ module CypressOnRails
|
|
83
73
|
return unless should_reload?(current_latest_mtime)
|
84
74
|
logger.info 'Loading Factories'
|
85
75
|
@latest_mtime = current_latest_mtime
|
86
|
-
|
76
|
+
factory.reload
|
87
77
|
files.each do |file|
|
88
78
|
logger.debug "-- Loading: #{file}"
|
89
79
|
@kernel.load(file)
|
@@ -1,8 +1,9 @@
|
|
1
1
|
module CypressOnRails
|
2
2
|
class InstallGenerator < Rails::Generators::Base
|
3
|
-
class_option :cypress_folder, type: :string, default: '
|
3
|
+
class_option :cypress_folder, type: :string, default: 'cypress'
|
4
|
+
class_option :install_cypress, type: :boolean, default: true
|
4
5
|
class_option :install_cypress_with, type: :string, default: 'yarn'
|
5
|
-
class_option :install_cypress_examples, type: :boolean, default:
|
6
|
+
class_option :install_cypress_examples, type: :boolean, default: false
|
6
7
|
source_root File.expand_path('../templates', __FILE__)
|
7
8
|
|
8
9
|
def install_cypress
|
@@ -11,14 +12,16 @@ module CypressOnRails
|
|
11
12
|
directories.pop
|
12
13
|
install_dir = "#{Dir.pwd}/#{directories.join('/')}"
|
13
14
|
command = nil
|
14
|
-
if options.
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
15
|
+
if options.install_cypress
|
16
|
+
if options.install_cypress_with == 'yarn'
|
17
|
+
command = "yarn --cwd=#{install_dir} add cypress --dev"
|
18
|
+
elsif options.install_cypress_with == 'npm'
|
19
|
+
command = "cd #{install_dir}; npm install cypress --save-dev"
|
20
|
+
end
|
21
|
+
if command
|
22
|
+
say command
|
23
|
+
fail 'failed to install cypress' unless system(command)
|
24
|
+
end
|
22
25
|
end
|
23
26
|
if options.install_cypress_examples
|
24
27
|
directory 'spec/cypress/integration/examples', "#{options.cypress_folder}/integration/examples"
|
@@ -43,19 +46,5 @@ module CypressOnRails
|
|
43
46
|
"\nimport './on-rails'",
|
44
47
|
after: 'import \'./commands\''
|
45
48
|
end
|
46
|
-
|
47
|
-
|
48
|
-
def update_test_rb
|
49
|
-
if File.exist?('config/environments/test.rb')
|
50
|
-
gsub_file 'config/environments/test.rb',
|
51
|
-
'config.cache_classes = true',
|
52
|
-
'config.cache_classes = ENV[\'CI\'].present?'
|
53
|
-
end
|
54
|
-
if File.exist?('spec/dummy/config/environments/test.rb')
|
55
|
-
gsub_file 'spec/dummy/config/environments/test.rb',
|
56
|
-
'config.cache_classes = true',
|
57
|
-
'config.cache_classes = ENV[\'CI\'].present?'
|
58
|
-
end
|
59
|
-
end
|
60
49
|
end
|
61
50
|
end
|
@@ -3,7 +3,15 @@ if defined?(CypressOnRails)
|
|
3
3
|
c.cypress_folder = File.expand_path("#{__dir__}/../../<%= options.cypress_folder %>")
|
4
4
|
# WARNING!! CypressOnRails can execute arbitrary ruby code
|
5
5
|
# please use with extra caution if enabling on hosted servers or starting your local server on 0.0.0.0
|
6
|
-
c.use_middleware = Rails.env.
|
6
|
+
c.use_middleware = !Rails.env.production?
|
7
7
|
c.logger = Rails.logger
|
8
8
|
end
|
9
|
+
|
10
|
+
# # if you compile your asssets on CI
|
11
|
+
# if ENV['CYPRESS'].present? && ENV['CI'].present?
|
12
|
+
# Rails.application.configure do
|
13
|
+
# config.assets.compile = false
|
14
|
+
# config.assets.unknown_asset_fallback = false
|
15
|
+
# end
|
16
|
+
# end
|
9
17
|
end
|
@@ -3,7 +3,7 @@ if defined?(DatabaseCleaner)
|
|
3
3
|
DatabaseCleaner.strategy = :truncation
|
4
4
|
DatabaseCleaner.clean
|
5
5
|
else
|
6
|
-
logger.warn "add database_cleaner or update
|
6
|
+
logger.warn "add database_cleaner or update cypress/app_commands/clean.rb"
|
7
7
|
Post.delete_all if defined?(Post)
|
8
8
|
end
|
9
9
|
|
@@ -1,9 +1,14 @@
|
|
1
1
|
# This is loaded once before the first command is executed
|
2
2
|
|
3
3
|
begin
|
4
|
-
|
4
|
+
require 'database_cleaner-active_record'
|
5
5
|
rescue LoadError => e
|
6
|
-
|
6
|
+
puts e.message
|
7
|
+
begin
|
8
|
+
require 'database_cleaner'
|
9
|
+
rescue LoadError => e
|
10
|
+
puts e.message
|
11
|
+
end
|
7
12
|
end
|
8
13
|
|
9
14
|
begin
|
data/lib/generators/cypress_on_rails/templates/spec/cypress/integration/examples/cypress_api.spec.js
CHANGED
@@ -65,7 +65,7 @@ context('Cypress.Cookies', () => {
|
|
65
65
|
// now any cookie with the name 'session_id' will
|
66
66
|
// not be cleared before each new test runs
|
67
67
|
Cypress.Cookies.defaults({
|
68
|
-
|
68
|
+
preserve: 'session_id',
|
69
69
|
})
|
70
70
|
})
|
71
71
|
})
|
@@ -84,8 +84,8 @@ context('Cypress.Server', () => {
|
|
84
84
|
Cypress.Server.defaults({
|
85
85
|
delay: 0,
|
86
86
|
force404: false,
|
87
|
-
|
88
|
-
// handle custom logic for
|
87
|
+
preserve (xhr) {
|
88
|
+
// handle custom logic for preserving
|
89
89
|
},
|
90
90
|
})
|
91
91
|
})
|
@@ -112,7 +112,7 @@ context('Cypress.config()', () => {
|
|
112
112
|
let myConfig = Cypress.config()
|
113
113
|
|
114
114
|
expect(myConfig).to.have.property('animationDistanceThreshold', 5)
|
115
|
-
expect(myConfig).to.have.property('baseUrl', 'http://localhost:
|
115
|
+
expect(myConfig).to.have.property('baseUrl', 'http://localhost:5017')
|
116
116
|
expect(myConfig).to.have.property('defaultCommandTimeout', 10000)
|
117
117
|
expect(myConfig).to.have.property('requestTimeout', 5000)
|
118
118
|
expect(myConfig).to.have.property('responseTimeout', 30000)
|
@@ -1,4 +1,5 @@
|
|
1
1
|
require 'cypress_on_rails/smart_factory_wrapper'
|
2
|
+
require 'factory_bot'
|
2
3
|
|
3
4
|
RSpec.describe CypressOnRails::SmartFactoryWrapper do
|
4
5
|
FileSystemDummy = Struct.new(:file_hash) do
|
@@ -10,8 +11,9 @@ RSpec.describe CypressOnRails::SmartFactoryWrapper do
|
|
10
11
|
let(:time_now) { Time.now }
|
11
12
|
let(:mtime_hash) { {'file1.rb' => time_now, 'file2.rb' => time_now } }
|
12
13
|
let(:files) { %w(file1.rb file2.rb) }
|
13
|
-
let(:factory_double)
|
14
|
-
|
14
|
+
let(:factory_double) do
|
15
|
+
class_double(FactoryBot, create: nil, create_list: nil, "definition_file_paths=": nil, reload: nil)
|
16
|
+
end
|
15
17
|
let(:kernel_double) { class_double(Kernel, load: true) }
|
16
18
|
let(:file_double) { FileSystemDummy.new(mtime_hash) }
|
17
19
|
let(:dir_double) { class_double(Dir) }
|
@@ -25,8 +27,7 @@ RSpec.describe CypressOnRails::SmartFactoryWrapper do
|
|
25
27
|
factory: factory_double,
|
26
28
|
kernel: kernel_double,
|
27
29
|
file_system: file_double,
|
28
|
-
dir_system: dir_double
|
29
|
-
factory_cleaner: factory_cleaner)
|
30
|
+
dir_system: dir_double)
|
30
31
|
end
|
31
32
|
|
32
33
|
it 'loads all the files on first create it' do
|
@@ -68,7 +69,7 @@ RSpec.describe CypressOnRails::SmartFactoryWrapper do
|
|
68
69
|
|
69
70
|
it 'wont load the files if they have not changed' do
|
70
71
|
subject.create(:user)
|
71
|
-
subject.create_list(:user)
|
72
|
+
subject.create_list(:user, 2)
|
72
73
|
expect(kernel_double).to have_received(:load).with('file1.rb').once
|
73
74
|
expect(kernel_double).to have_received(:load).with('file2.rb').once
|
74
75
|
end
|
@@ -79,7 +80,7 @@ RSpec.describe CypressOnRails::SmartFactoryWrapper do
|
|
79
80
|
expect(kernel_double).to have_received(:load).with('file2.rb').once
|
80
81
|
|
81
82
|
mtime_hash['file1.rb'] = Time.now
|
82
|
-
subject.create_list(:user)
|
83
|
+
subject.create_list(:user, 2)
|
83
84
|
expect(kernel_double).to have_received(:load).with('file1.rb').twice
|
84
85
|
expect(kernel_double).to have_received(:load).with('file2.rb').twice
|
85
86
|
end
|
@@ -91,24 +92,24 @@ RSpec.describe CypressOnRails::SmartFactoryWrapper do
|
|
91
92
|
expect(kernel_double).to have_received(:load).with('file2.rb').once
|
92
93
|
|
93
94
|
mtime_hash.delete('file1.rb')
|
94
|
-
subject.create_list(:user)
|
95
|
+
subject.create_list(:user, 2)
|
95
96
|
expect(kernel_double).to have_received(:load).with('file1.rb').once
|
96
97
|
expect(kernel_double).to have_received(:load).with('file2.rb').twice
|
97
98
|
end
|
98
99
|
|
99
|
-
it 'will reset factory if a has changed' do
|
100
|
+
it 'will reset factory if a file has changed' do
|
100
101
|
subject.create(:user)
|
101
|
-
expect(
|
102
|
+
expect(factory_double).to have_received(:reload)
|
102
103
|
|
103
104
|
mtime_hash['file1.rb'] = Time.now
|
104
|
-
subject.create_list(:user)
|
105
|
+
subject.create_list(:user, 2)
|
105
106
|
|
106
|
-
expect(
|
107
|
+
expect(factory_double).to have_received(:reload).twice
|
107
108
|
end
|
108
109
|
|
109
110
|
it 'will always reload the files enabled' do
|
110
111
|
subject.always_reload = true
|
111
|
-
subject.create_list(:user)
|
112
|
+
subject.create_list(:user, 2)
|
112
113
|
subject.create(:user)
|
113
114
|
expect(kernel_double).to have_received(:load).with('file1.rb').twice
|
114
115
|
expect(kernel_double).to have_received(:load).with('file2.rb').twice
|
@@ -14,14 +14,14 @@ bundle --version
|
|
14
14
|
bundle install --quiet --gemfile="$DIR/Gemfile" --retry 2 --path vendor/bundle
|
15
15
|
|
16
16
|
echo '-- cypress install'
|
17
|
-
bundle exec ./bin/rails g cypress_on_rails:install --
|
17
|
+
bundle exec ./bin/rails g cypress_on_rails:install --install_cypress_with=npm
|
18
18
|
rm -vf cypress/integration/rails_examples/advance_factory_bot_spec.js
|
19
19
|
|
20
20
|
echo '-- start rails server'
|
21
21
|
# make sure the server is not running
|
22
22
|
(kill -9 `cat tmp/pids/server.pid` || true )
|
23
23
|
|
24
|
-
bundle exec ./bin/rails server -p
|
24
|
+
bundle exec ./bin/rails server -p 5017 -e test &
|
25
25
|
sleep 2 # give rails a chance to start up correctly
|
26
26
|
|
27
27
|
echo '-- cypress run'
|
@@ -14,14 +14,14 @@ bundle --version
|
|
14
14
|
bundle install --quiet --gemfile="$DIR/Gemfile" --retry 2 --path vendor/bundle
|
15
15
|
|
16
16
|
echo '-- cypress install'
|
17
|
-
bundle exec ./bin/rails g cypress_on_rails:install --
|
17
|
+
bundle exec ./bin/rails g cypress_on_rails:install --cypress_folder=spec/cypress
|
18
18
|
rm -vf spec/cypress/integration/rails_examples/advance_factory_bot_spec.js
|
19
19
|
|
20
20
|
echo '-- start rails server'
|
21
21
|
# make sure the server is not running
|
22
22
|
(kill -9 `cat tmp/pids/server.pid` || true )
|
23
23
|
|
24
|
-
bundle exec ./bin/rails server -p
|
24
|
+
bundle exec ./bin/rails server -p 5017 -e test &
|
25
25
|
sleep 2 # give rails a chance to start up correctly
|
26
26
|
|
27
27
|
echo '-- cypress run'
|
@@ -3,6 +3,7 @@ git_source(:github) { |repo| "https://github.com/#{repo}.git" }
|
|
3
3
|
|
4
4
|
# Bundle edge Rails instead: gem 'rails', github: 'rails/rails'
|
5
5
|
gem 'rails', '~> 5.2.0'
|
6
|
+
gem 'sprockets', '~> 3.7.2'
|
6
7
|
gem 'sqlite3', '~> 1.3.6'
|
7
8
|
|
8
9
|
# Reduces boot times through caching; required in config/boot.rb
|
@@ -14,7 +14,8 @@ bundle --version
|
|
14
14
|
bundle install --quiet --gemfile="$DIR/Gemfile" --retry 2 --path vendor/bundle
|
15
15
|
|
16
16
|
echo '-- migration'
|
17
|
-
bin/rails db:
|
17
|
+
bundle exec ./bin/rails db:drop || true
|
18
|
+
bundle exec ./bin/rails db:create db:migrate
|
18
19
|
|
19
20
|
echo '-- cypress install'
|
20
21
|
bundle exec ./bin/rails g cypress_on_rails:install --cypress_folder=test/cypress --no-install-cypress-examples
|
@@ -23,7 +24,7 @@ echo '-- start rails server'
|
|
23
24
|
# make sure the server is not running
|
24
25
|
(kill -9 `cat tmp/pids/server.pid` || true )
|
25
26
|
|
26
|
-
bundle exec ./bin/rails server -p
|
27
|
+
bundle exec ./bin/rails server -p 5017 -e test &
|
27
28
|
sleep 2 # give rails a chance to start up correctly
|
28
29
|
|
29
30
|
echo '-- cypress run'
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: cypress-on-rails
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.
|
4
|
+
version: 1.9.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- miceportal team
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date:
|
12
|
+
date: 2021-03-01 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: rack
|
@@ -67,6 +67,20 @@ dependencies:
|
|
67
67
|
- - ">="
|
68
68
|
- !ruby/object:Gem::Version
|
69
69
|
version: '3.2'
|
70
|
+
- !ruby/object:Gem::Dependency
|
71
|
+
name: factory_bot
|
72
|
+
requirement: !ruby/object:Gem::Requirement
|
73
|
+
requirements:
|
74
|
+
- - ">="
|
75
|
+
- !ruby/object:Gem::Version
|
76
|
+
version: '0'
|
77
|
+
type: :development
|
78
|
+
prerelease: false
|
79
|
+
version_requirements: !ruby/object:Gem::Requirement
|
80
|
+
requirements:
|
81
|
+
- - ">="
|
82
|
+
- !ruby/object:Gem::Version
|
83
|
+
version: '0'
|
70
84
|
description: Integrates cypress with rails or rack applications
|
71
85
|
email:
|
72
86
|
- info@miceportal.de
|
@@ -75,6 +89,7 @@ executables: []
|
|
75
89
|
extensions: []
|
76
90
|
extra_rdoc_files: []
|
77
91
|
files:
|
92
|
+
- ".github/FUNDING.yml"
|
78
93
|
- ".gitignore"
|
79
94
|
- ".rspec"
|
80
95
|
- ".travis.yml"
|
@@ -284,9 +299,14 @@ files:
|
|
284
299
|
- spec/integrations/rails_5_2/tmp/.keep
|
285
300
|
- spec/integrations/rails_5_2/vendor/.keep
|
286
301
|
- spec/spec_helper.rb
|
287
|
-
homepage: http://github.com/
|
302
|
+
homepage: http://github.com/shakacode/cypress-on-rails
|
288
303
|
licenses: []
|
289
|
-
metadata:
|
304
|
+
metadata:
|
305
|
+
bug_tracker_uri: https://github.com/shakacode/cypress-on-rails/issues
|
306
|
+
changelog_uri: https://github.com/shakacode/cypress-on-rails/blob/master/CHANGELOG.md
|
307
|
+
documentation_uri: https://github.com/shakacode/cypress-on-rails/blob/master/README.md
|
308
|
+
homepage_uri: http://github.com/shakacode/cypress-on-rails
|
309
|
+
source_code_uri: http://github.com/shakacode/cypress-on-rails
|
290
310
|
post_install_message: The CypressDev constant is being deprecated and will be completely
|
291
311
|
removed and replaced with CypressOnRails.
|
292
312
|
rdoc_options: []
|
@@ -303,8 +323,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
303
323
|
- !ruby/object:Gem::Version
|
304
324
|
version: '0'
|
305
325
|
requirements: []
|
306
|
-
|
307
|
-
rubygems_version: 2.6.14.4
|
326
|
+
rubygems_version: 3.2.11
|
308
327
|
signing_key:
|
309
328
|
specification_version: 4
|
310
329
|
summary: Integrates cypress with rails or rack applications
|