cypress-on-rails 1.12.1 → 1.13.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.github/workflows/ruby.yml +3 -3
- data/.gitignore +4 -1
- data/CHANGELOG.md +13 -0
- data/README.md +91 -5
- data/cypress-on-rails.gemspec +1 -0
- data/lib/cypress-on-rails.rb +2 -2
- data/lib/cypress_on_rails/configuration.rb +3 -0
- data/lib/cypress_on_rails/middleware.rb +6 -10
- data/lib/cypress_on_rails/middleware_config.rb +17 -0
- data/lib/cypress_on_rails/railtie.rb +5 -1
- data/lib/cypress_on_rails/vcr_middleware.rb +73 -0
- data/lib/cypress_on_rails/version.rb +1 -1
- data/lib/generators/cypress_on_rails/install_generator.rb +18 -24
- data/lib/generators/cypress_on_rails/templates/config/initializers/cypress_on_rails.rb.erb +1 -0
- data/lib/generators/cypress_on_rails/templates/spec/cypress/app_commands/clean.rb +6 -0
- data/lib/generators/cypress_on_rails/templates/spec/cypress/{cypress_helper.rb → cypress_helper.rb.erb} +5 -0
- data/lib/generators/cypress_on_rails/templates/spec/cypress/e2e/rails_examples/using_vcr.cy.js +24 -0
- data/lib/generators/cypress_on_rails/templates/spec/cypress/support/{index.js → index.js.erb} +1 -0
- data/lib/generators/cypress_on_rails/templates/spec/cypress/support/on-rails.js +1 -1
- data/lib/generators/cypress_on_rails/templates/spec/cypress.config.js +9 -0
- data/plugin/.gitignore +1 -0
- data/plugin/cypress/plugins/index.js +4 -0
- data/plugin/package.json +31 -0
- data/plugin/support/index.js +37 -0
- data/spec/cypress_on_rails/middleware_spec.rb +3 -1
- data/spec/cypress_on_rails/vcr_middleware_spec.rb +119 -0
- data/specs_e2e/cypress.config.js +10 -0
- data/{spec/integrations → specs_e2e}/rails_3_2/.gitignore +1 -1
- data/specs_e2e/rails_3_2/.ruby_version +1 -0
- data/{spec/integrations → specs_e2e}/rails_3_2/Gemfile +1 -1
- data/{spec/integrations → specs_e2e}/rails_3_2/test.sh +8 -7
- data/{spec/integrations → specs_e2e}/rails_4_2/.gitignore +3 -2
- data/{spec/integrations → specs_e2e}/rails_4_2/Gemfile +3 -1
- data/specs_e2e/rails_4_2/app/controllers/using_vcr_controller.rb +10 -0
- data/{spec/integrations → specs_e2e}/rails_4_2/app/models/post.rb +3 -1
- data/specs_e2e/rails_4_2/app/views/using_vcr/index.html.erb +6 -0
- data/specs_e2e/rails_4_2/app/views/using_vcr/record_cats.html.erb +7 -0
- data/{spec/integrations → specs_e2e}/rails_4_2/config/routes.rb +5 -0
- data/specs_e2e/rails_4_2/package.json +10 -0
- data/{spec/integrations → specs_e2e}/rails_4_2/test.sh +13 -12
- data/{spec/integrations → specs_e2e}/rails_5_2/.gitignore +1 -1
- data/{spec/integrations → specs_e2e}/rails_5_2/Gemfile +1 -1
- data/specs_e2e/rails_5_2/app/assets/javascripts/posts.js +2 -0
- data/specs_e2e/rails_5_2/app/assets/stylesheets/posts.css +4 -0
- data/{spec/integrations → specs_e2e}/rails_5_2/test.sh +8 -7
- metadata +177 -171
- data/lib/generators/cypress_on_rails/templates/spec/cypress/fixtures/example.json +0 -5
- data/lib/generators/cypress_on_rails/templates/spec/cypress/integration/examples/actions.spec.js +0 -272
- data/lib/generators/cypress_on_rails/templates/spec/cypress/integration/examples/aliasing.spec.js +0 -42
- data/lib/generators/cypress_on_rails/templates/spec/cypress/integration/examples/assertions.spec.js +0 -63
- data/lib/generators/cypress_on_rails/templates/spec/cypress/integration/examples/connectors.spec.js +0 -55
- data/lib/generators/cypress_on_rails/templates/spec/cypress/integration/examples/cookies.spec.js +0 -78
- data/lib/generators/cypress_on_rails/templates/spec/cypress/integration/examples/cypress_api.spec.js +0 -211
- data/lib/generators/cypress_on_rails/templates/spec/cypress/integration/examples/files.spec.js +0 -86
- data/lib/generators/cypress_on_rails/templates/spec/cypress/integration/examples/local_storage.spec.js +0 -52
- data/lib/generators/cypress_on_rails/templates/spec/cypress/integration/examples/location.spec.js +0 -32
- data/lib/generators/cypress_on_rails/templates/spec/cypress/integration/examples/misc.spec.js +0 -68
- data/lib/generators/cypress_on_rails/templates/spec/cypress/integration/examples/navigation.spec.js +0 -54
- data/lib/generators/cypress_on_rails/templates/spec/cypress/integration/examples/network_requests.spec.js +0 -108
- data/lib/generators/cypress_on_rails/templates/spec/cypress/integration/examples/querying.spec.js +0 -65
- data/lib/generators/cypress_on_rails/templates/spec/cypress/integration/examples/spies_stubs_clocks.spec.js +0 -62
- data/lib/generators/cypress_on_rails/templates/spec/cypress/integration/examples/traversal.spec.js +0 -121
- data/lib/generators/cypress_on_rails/templates/spec/cypress/integration/examples/utilities.spec.js +0 -89
- data/lib/generators/cypress_on_rails/templates/spec/cypress/integration/examples/viewport.spec.js +0 -59
- data/lib/generators/cypress_on_rails/templates/spec/cypress/integration/examples/waiting.spec.js +0 -34
- data/lib/generators/cypress_on_rails/templates/spec/cypress/integration/examples/window.spec.js +0 -22
- data/lib/generators/cypress_on_rails/templates/spec/cypress.json +0 -4
- data/spec/integrations/cypress.json +0 -5
- data/spec/integrations/rails_5_2/log/.keep +0 -0
- data/spec/integrations/rails_5_2/tmp/.keep +0 -0
- data/spec/integrations/rails_5_2/vendor/.keep +0 -0
- /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
- /data/lib/generators/cypress_on_rails/templates/spec/cypress/{integration/rails_examples/other_spec.js → e2e/rails_examples/other.cy.js} +0 -0
- /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
- /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
- /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
- /data/{spec/integrations → specs_e2e}/rails_3_2/README.rdoc +0 -0
- /data/{spec/integrations → specs_e2e}/rails_3_2/Rakefile +0 -0
- /data/{spec/integrations → specs_e2e}/rails_3_2/app/assets/stylesheets/application.css +0 -0
- /data/{spec/integrations → specs_e2e}/rails_3_2/app/controllers/application_controller.rb +0 -0
- /data/{spec/integrations → specs_e2e}/rails_3_2/app/controllers/welcome_controller.rb +0 -0
- /data/{spec/integrations → specs_e2e}/rails_3_2/app/helpers/application_helper.rb +0 -0
- /data/{spec/integrations → specs_e2e}/rails_3_2/app/models/post.rb +0 -0
- /data/{spec/integrations → specs_e2e}/rails_3_2/app/views/layouts/application.html.erb +0 -0
- /data/{spec/integrations → specs_e2e}/rails_3_2/app/views/welcome/index.html.erb +0 -0
- /data/{spec/integrations → specs_e2e}/rails_3_2/bin/rails +0 -0
- /data/{spec/integrations → specs_e2e}/rails_3_2/config/application.rb +0 -0
- /data/{spec/integrations → specs_e2e}/rails_3_2/config/boot.rb +0 -0
- /data/{spec/integrations → specs_e2e}/rails_3_2/config/environment.rb +0 -0
- /data/{spec/integrations → specs_e2e}/rails_3_2/config/environments/development.rb +0 -0
- /data/{spec/integrations → specs_e2e}/rails_3_2/config/environments/production.rb +0 -0
- /data/{spec/integrations → specs_e2e}/rails_3_2/config/environments/test.rb +0 -0
- /data/{spec/integrations → specs_e2e}/rails_3_2/config/initializers/backtrace_silencers.rb +0 -0
- /data/{spec/integrations → specs_e2e}/rails_3_2/config/initializers/inflections.rb +0 -0
- /data/{spec/integrations → specs_e2e}/rails_3_2/config/initializers/mime_types.rb +0 -0
- /data/{spec/integrations → specs_e2e}/rails_3_2/config/initializers/secret_token.rb +0 -0
- /data/{spec/integrations → specs_e2e}/rails_3_2/config/initializers/session_store.rb +0 -0
- /data/{spec/integrations → specs_e2e}/rails_3_2/config/initializers/wrap_parameters.rb +0 -0
- /data/{spec/integrations → specs_e2e}/rails_3_2/config/locales/en.yml +0 -0
- /data/{spec/integrations → specs_e2e}/rails_3_2/config/routes.rb +0 -0
- /data/{spec/integrations → specs_e2e}/rails_3_2/config.ru +0 -0
- /data/{spec/integrations → specs_e2e}/rails_3_2/log/.keep +0 -0
- /data/{spec/integrations → specs_e2e}/rails_3_2/public/404.html +0 -0
- /data/{spec/integrations → specs_e2e}/rails_3_2/public/422.html +0 -0
- /data/{spec/integrations → specs_e2e}/rails_3_2/public/500.html +0 -0
- /data/{spec/integrations → specs_e2e}/rails_3_2/public/favicon.ico +0 -0
- /data/{spec/integrations → specs_e2e}/rails_3_2/public/robots.txt +0 -0
- /data/{spec/integrations → specs_e2e}/rails_3_2/tmp/.keep +0 -0
- /data/{spec/integrations → specs_e2e}/rails_3_2/vendor/.gitkeep +0 -0
- /data/{spec/integrations → specs_e2e}/rails_4_2/README.rdoc +0 -0
- /data/{spec/integrations → specs_e2e}/rails_4_2/Rakefile +0 -0
- /data/{spec/integrations/rails_5_2/app/assets/javascripts/posts.js → specs_e2e/rails_4_2/app/assets/javascripts/using_vcr.js} +0 -0
- /data/{spec/integrations/rails_5_2/app/assets/stylesheets/posts.css → specs_e2e/rails_4_2/app/assets/stylesheets/using_vcr.css} +0 -0
- /data/{spec/integrations → specs_e2e}/rails_4_2/app/controllers/application_controller.rb +0 -0
- /data/{spec/integrations → specs_e2e}/rails_4_2/app/controllers/welcome_controller.rb +0 -0
- /data/{spec/integrations → specs_e2e}/rails_4_2/app/views/layouts/application.html.erb +0 -0
- /data/{spec/integrations → specs_e2e}/rails_4_2/app/views/welcome/index.html.erb +0 -0
- /data/{spec/integrations → specs_e2e}/rails_4_2/bin/bundle +0 -0
- /data/{spec/integrations → specs_e2e}/rails_4_2/bin/rails +0 -0
- /data/{spec/integrations → specs_e2e}/rails_4_2/bin/rake +0 -0
- /data/{spec/integrations → specs_e2e}/rails_4_2/bin/setup +0 -0
- /data/{spec/integrations → specs_e2e}/rails_4_2/config/application.rb +0 -0
- /data/{spec/integrations → specs_e2e}/rails_4_2/config/boot.rb +0 -0
- /data/{spec/integrations → specs_e2e}/rails_4_2/config/environment.rb +0 -0
- /data/{spec/integrations → specs_e2e}/rails_4_2/config/environments/development.rb +0 -0
- /data/{spec/integrations → specs_e2e}/rails_4_2/config/environments/production.rb +0 -0
- /data/{spec/integrations → specs_e2e}/rails_4_2/config/environments/test.rb +0 -0
- /data/{spec/integrations → specs_e2e}/rails_4_2/config/initializers/backtrace_silencers.rb +0 -0
- /data/{spec/integrations → specs_e2e}/rails_4_2/config/initializers/cookies_serializer.rb +0 -0
- /data/{spec/integrations → specs_e2e}/rails_4_2/config/initializers/filter_parameter_logging.rb +0 -0
- /data/{spec/integrations → specs_e2e}/rails_4_2/config/initializers/inflections.rb +0 -0
- /data/{spec/integrations → specs_e2e}/rails_4_2/config/initializers/mime_types.rb +0 -0
- /data/{spec/integrations → specs_e2e}/rails_4_2/config/initializers/session_store.rb +0 -0
- /data/{spec/integrations → specs_e2e}/rails_4_2/config/initializers/to_time_preserves_timezone.rb +0 -0
- /data/{spec/integrations → specs_e2e}/rails_4_2/config/initializers/wrap_parameters.rb +0 -0
- /data/{spec/integrations → specs_e2e}/rails_4_2/config/locales/en.yml +0 -0
- /data/{spec/integrations → specs_e2e}/rails_4_2/config/secrets.yml +0 -0
- /data/{spec/integrations → specs_e2e}/rails_4_2/config.ru +0 -0
- /data/{spec/integrations → specs_e2e}/rails_4_2/public/404.html +0 -0
- /data/{spec/integrations → specs_e2e}/rails_4_2/public/422.html +0 -0
- /data/{spec/integrations → specs_e2e}/rails_4_2/public/500.html +0 -0
- /data/{spec/integrations → specs_e2e}/rails_4_2/public/favicon.ico +0 -0
- /data/{spec/integrations → specs_e2e}/rails_4_2/public/robots.txt +0 -0
- /data/{spec/integrations/rails_4_2/log → specs_e2e/rails_4_2/spec}/.keep +0 -0
- /data/{spec/integrations/rails_4_2/spec → specs_e2e/rails_4_2/vendor}/.keep +0 -0
- /data/{spec/integrations → specs_e2e}/rails_5_2/README.md +0 -0
- /data/{spec/integrations → specs_e2e}/rails_5_2/Rakefile +0 -0
- /data/{spec/integrations → specs_e2e}/rails_5_2/app/assets/stylesheets/scaffold.css +0 -0
- /data/{spec/integrations → specs_e2e}/rails_5_2/app/controllers/application_controller.rb +0 -0
- /data/{spec/integrations → specs_e2e}/rails_5_2/app/controllers/posts_controller.rb +0 -0
- /data/{spec/integrations → specs_e2e}/rails_5_2/app/helpers/posts_helper.rb +0 -0
- /data/{spec/integrations → specs_e2e}/rails_5_2/app/jobs/application_job.rb +0 -0
- /data/{spec/integrations → specs_e2e}/rails_5_2/app/models/application_record.rb +0 -0
- /data/{spec/integrations → specs_e2e}/rails_5_2/app/models/post.rb +0 -0
- /data/{spec/integrations → specs_e2e}/rails_5_2/app/views/layouts/application.html.erb +0 -0
- /data/{spec/integrations → specs_e2e}/rails_5_2/app/views/posts/_form.html.erb +0 -0
- /data/{spec/integrations → specs_e2e}/rails_5_2/app/views/posts/edit.html.erb +0 -0
- /data/{spec/integrations → specs_e2e}/rails_5_2/app/views/posts/index.html.erb +0 -0
- /data/{spec/integrations → specs_e2e}/rails_5_2/app/views/posts/new.html.erb +0 -0
- /data/{spec/integrations → specs_e2e}/rails_5_2/app/views/posts/show.html.erb +0 -0
- /data/{spec/integrations → specs_e2e}/rails_5_2/app/views/welcome/index.html.erb +0 -0
- /data/{spec/integrations → specs_e2e}/rails_5_2/bin/bundle +0 -0
- /data/{spec/integrations → specs_e2e}/rails_5_2/bin/rails +0 -0
- /data/{spec/integrations → specs_e2e}/rails_5_2/bin/rake +0 -0
- /data/{spec/integrations → specs_e2e}/rails_5_2/bin/setup +0 -0
- /data/{spec/integrations → specs_e2e}/rails_5_2/bin/update +0 -0
- /data/{spec/integrations → specs_e2e}/rails_5_2/config/application.rb +0 -0
- /data/{spec/integrations → specs_e2e}/rails_5_2/config/boot.rb +0 -0
- /data/{spec/integrations → specs_e2e}/rails_5_2/config/credentials.yml.enc +0 -0
- /data/{spec/integrations → specs_e2e}/rails_5_2/config/database.yml +0 -0
- /data/{spec/integrations → specs_e2e}/rails_5_2/config/environment.rb +0 -0
- /data/{spec/integrations → specs_e2e}/rails_5_2/config/environments/development.rb +0 -0
- /data/{spec/integrations → specs_e2e}/rails_5_2/config/environments/production.rb +0 -0
- /data/{spec/integrations → specs_e2e}/rails_5_2/config/environments/test.rb +0 -0
- /data/{spec/integrations → specs_e2e}/rails_5_2/config/initializers/application_controller_renderer.rb +0 -0
- /data/{spec/integrations → specs_e2e}/rails_5_2/config/initializers/backtrace_silencers.rb +0 -0
- /data/{spec/integrations → specs_e2e}/rails_5_2/config/initializers/content_security_policy.rb +0 -0
- /data/{spec/integrations → specs_e2e}/rails_5_2/config/initializers/cookies_serializer.rb +0 -0
- /data/{spec/integrations → specs_e2e}/rails_5_2/config/initializers/filter_parameter_logging.rb +0 -0
- /data/{spec/integrations → specs_e2e}/rails_5_2/config/initializers/inflections.rb +0 -0
- /data/{spec/integrations → specs_e2e}/rails_5_2/config/initializers/mime_types.rb +0 -0
- /data/{spec/integrations → specs_e2e}/rails_5_2/config/initializers/wrap_parameters.rb +0 -0
- /data/{spec/integrations → specs_e2e}/rails_5_2/config/locales/en.yml +0 -0
- /data/{spec/integrations → specs_e2e}/rails_5_2/config/master.key +0 -0
- /data/{spec/integrations → specs_e2e}/rails_5_2/config/routes.rb +0 -0
- /data/{spec/integrations → specs_e2e}/rails_5_2/config.ru +0 -0
- /data/{spec/integrations → specs_e2e}/rails_5_2/db/migrate/20180621085832_create_posts.rb +0 -0
- /data/{spec/integrations → specs_e2e}/rails_5_2/public/404.html +0 -0
- /data/{spec/integrations → specs_e2e}/rails_5_2/public/422.html +0 -0
- /data/{spec/integrations → specs_e2e}/rails_5_2/public/500.html +0 -0
- /data/{spec/integrations → specs_e2e}/rails_5_2/public/apple-touch-icon-precomposed.png +0 -0
- /data/{spec/integrations → specs_e2e}/rails_5_2/public/apple-touch-icon.png +0 -0
- /data/{spec/integrations → specs_e2e}/rails_5_2/public/favicon.ico +0 -0
- /data/{spec/integrations → specs_e2e}/rails_5_2/public/robots.txt +0 -0
- /data/{spec/integrations → specs_e2e}/rails_5_2/test/controllers/posts_controller_test.rb +0 -0
- /data/{spec/integrations → specs_e2e}/rails_5_2/test/cypress_fixtures/posts.yml +0 -0
- /data/{spec/integrations → specs_e2e}/rails_5_2/test/fixtures/posts.yml +0 -0
- /data/{spec/integrations → specs_e2e}/rails_5_2/test/models/post_test.rb +0 -0
- /data/{spec/integrations/rails_4_2 → specs_e2e/rails_5_2}/vendor/.keep +0 -0
data/lib/generators/cypress_on_rails/templates/spec/cypress/integration/examples/actions.spec.js
DELETED
@@ -1,272 +0,0 @@
|
|
1
|
-
/// <reference types="Cypress" />
|
2
|
-
|
3
|
-
context('Actions', () => {
|
4
|
-
beforeEach(() => {
|
5
|
-
cy.visit('https://example.cypress.io/commands/actions')
|
6
|
-
})
|
7
|
-
|
8
|
-
// https://on.cypress.io/interacting-with-elements
|
9
|
-
|
10
|
-
it('.type() - type into a DOM element', () => {
|
11
|
-
// https://on.cypress.io/type
|
12
|
-
cy.get('.action-email')
|
13
|
-
.type('fake@email.com').should('have.value', 'fake@email.com')
|
14
|
-
|
15
|
-
// .type() with special character sequences
|
16
|
-
.type('{leftarrow}{rightarrow}{uparrow}{downarrow}')
|
17
|
-
.type('{del}{selectall}{backspace}')
|
18
|
-
|
19
|
-
// .type() with key modifiers
|
20
|
-
.type('{alt}{option}') //these are equivalent
|
21
|
-
.type('{ctrl}{control}') //these are equivalent
|
22
|
-
.type('{meta}{command}{cmd}') //these are equivalent
|
23
|
-
.type('{shift}')
|
24
|
-
|
25
|
-
// Delay each keypress by 0.1 sec
|
26
|
-
.type('slow.typing@email.com', { delay: 100 })
|
27
|
-
.should('have.value', 'slow.typing@email.com')
|
28
|
-
|
29
|
-
cy.get('.action-disabled')
|
30
|
-
// Ignore error checking prior to type
|
31
|
-
// like whether the input is visible or disabled
|
32
|
-
.type('disabled error checking', { force: true })
|
33
|
-
.should('have.value', 'disabled error checking')
|
34
|
-
})
|
35
|
-
|
36
|
-
it('.focus() - focus on a DOM element', () => {
|
37
|
-
// https://on.cypress.io/focus
|
38
|
-
cy.get('.action-focus').focus()
|
39
|
-
.should('have.class', 'focus')
|
40
|
-
.prev().should('have.attr', 'style', 'color: orange;')
|
41
|
-
})
|
42
|
-
|
43
|
-
it('.blur() - blur off a DOM element', () => {
|
44
|
-
// https://on.cypress.io/blur
|
45
|
-
cy.get('.action-blur').type('About to blur').blur()
|
46
|
-
.should('have.class', 'error')
|
47
|
-
.prev().should('have.attr', 'style', 'color: red;')
|
48
|
-
})
|
49
|
-
|
50
|
-
it('.clear() - clears an input or textarea element', () => {
|
51
|
-
// https://on.cypress.io/clear
|
52
|
-
cy.get('.action-clear').type('Clear this text')
|
53
|
-
.should('have.value', 'Clear this text')
|
54
|
-
.clear()
|
55
|
-
.should('have.value', '')
|
56
|
-
})
|
57
|
-
|
58
|
-
it('.submit() - submit a form', () => {
|
59
|
-
// https://on.cypress.io/submit
|
60
|
-
cy.get('.action-form')
|
61
|
-
.find('[type="text"]').type('HALFOFF')
|
62
|
-
cy.get('.action-form').submit()
|
63
|
-
.next().should('contain', 'Your form has been submitted!')
|
64
|
-
})
|
65
|
-
|
66
|
-
it('.click() - click on a DOM element', () => {
|
67
|
-
// https://on.cypress.io/click
|
68
|
-
cy.get('.action-btn').click()
|
69
|
-
|
70
|
-
// You can click on 9 specific positions of an element:
|
71
|
-
// -----------------------------------
|
72
|
-
// | topLeft top topRight |
|
73
|
-
// | |
|
74
|
-
// | |
|
75
|
-
// | |
|
76
|
-
// | left center right |
|
77
|
-
// | |
|
78
|
-
// | |
|
79
|
-
// | |
|
80
|
-
// | bottomLeft bottom bottomRight |
|
81
|
-
// -----------------------------------
|
82
|
-
|
83
|
-
// clicking in the center of the element is the default
|
84
|
-
cy.get('#action-canvas').click()
|
85
|
-
|
86
|
-
cy.get('#action-canvas').click('topLeft')
|
87
|
-
cy.get('#action-canvas').click('top')
|
88
|
-
cy.get('#action-canvas').click('topRight')
|
89
|
-
cy.get('#action-canvas').click('left')
|
90
|
-
cy.get('#action-canvas').click('right')
|
91
|
-
cy.get('#action-canvas').click('bottomLeft')
|
92
|
-
cy.get('#action-canvas').click('bottom')
|
93
|
-
cy.get('#action-canvas').click('bottomRight')
|
94
|
-
|
95
|
-
// .click() accepts an x and y coordinate
|
96
|
-
// that controls where the click occurs :)
|
97
|
-
|
98
|
-
cy.get('#action-canvas')
|
99
|
-
.click(80, 75) // click 80px on x coord and 75px on y coord
|
100
|
-
.click(170, 75)
|
101
|
-
.click(80, 165)
|
102
|
-
.click(100, 185)
|
103
|
-
.click(125, 190)
|
104
|
-
.click(150, 185)
|
105
|
-
.click(170, 165)
|
106
|
-
|
107
|
-
// click multiple elements by passing multiple: true
|
108
|
-
cy.get('.action-labels>.label').click({ multiple: true })
|
109
|
-
|
110
|
-
// Ignore error checking prior to clicking
|
111
|
-
cy.get('.action-opacity>.btn').click({ force: true })
|
112
|
-
})
|
113
|
-
|
114
|
-
it('.dblclick() - double click on a DOM element', () => {
|
115
|
-
// https://on.cypress.io/dblclick
|
116
|
-
|
117
|
-
// Our app has a listener on 'dblclick' event in our 'scripts.js'
|
118
|
-
// that hides the div and shows an input on double click
|
119
|
-
cy.get('.action-div').dblclick().should('not.be.visible')
|
120
|
-
cy.get('.action-input-hidden').should('be.visible')
|
121
|
-
})
|
122
|
-
|
123
|
-
it('.check() - check a checkbox or radio element', () => {
|
124
|
-
// https://on.cypress.io/check
|
125
|
-
|
126
|
-
// By default, .check() will check all
|
127
|
-
// matching checkbox or radio elements in succession, one after another
|
128
|
-
cy.get('.action-checkboxes [type="checkbox"]').not('[disabled]')
|
129
|
-
.check().should('be.checked')
|
130
|
-
|
131
|
-
cy.get('.action-radios [type="radio"]').not('[disabled]')
|
132
|
-
.check().should('be.checked')
|
133
|
-
|
134
|
-
// .check() accepts a value argument
|
135
|
-
cy.get('.action-radios [type="radio"]')
|
136
|
-
.check('radio1').should('be.checked')
|
137
|
-
|
138
|
-
// .check() accepts an array of values
|
139
|
-
cy.get('.action-multiple-checkboxes [type="checkbox"]')
|
140
|
-
.check(['checkbox1', 'checkbox2']).should('be.checked')
|
141
|
-
|
142
|
-
// Ignore error checking prior to checking
|
143
|
-
cy.get('.action-checkboxes [disabled]')
|
144
|
-
.check({ force: true }).should('be.checked')
|
145
|
-
|
146
|
-
cy.get('.action-radios [type="radio"]')
|
147
|
-
.check('radio3', { force: true }).should('be.checked')
|
148
|
-
})
|
149
|
-
|
150
|
-
it('.uncheck() - uncheck a checkbox element', () => {
|
151
|
-
// https://on.cypress.io/uncheck
|
152
|
-
|
153
|
-
// By default, .uncheck() will uncheck all matching
|
154
|
-
// checkbox elements in succession, one after another
|
155
|
-
cy.get('.action-check [type="checkbox"]')
|
156
|
-
.not('[disabled]')
|
157
|
-
.uncheck().should('not.be.checked')
|
158
|
-
|
159
|
-
// .uncheck() accepts a value argument
|
160
|
-
cy.get('.action-check [type="checkbox"]')
|
161
|
-
.check('checkbox1')
|
162
|
-
.uncheck('checkbox1').should('not.be.checked')
|
163
|
-
|
164
|
-
// .uncheck() accepts an array of values
|
165
|
-
cy.get('.action-check [type="checkbox"]')
|
166
|
-
.check(['checkbox1', 'checkbox3'])
|
167
|
-
.uncheck(['checkbox1', 'checkbox3']).should('not.be.checked')
|
168
|
-
|
169
|
-
// Ignore error checking prior to unchecking
|
170
|
-
cy.get('.action-check [disabled]')
|
171
|
-
.uncheck({ force: true }).should('not.be.checked')
|
172
|
-
})
|
173
|
-
|
174
|
-
it('.select() - select an option in a <select> element', () => {
|
175
|
-
// https://on.cypress.io/select
|
176
|
-
|
177
|
-
// Select option(s) with matching text content
|
178
|
-
cy.get('.action-select').select('apples')
|
179
|
-
|
180
|
-
cy.get('.action-select-multiple')
|
181
|
-
.select(['apples', 'oranges', 'bananas'])
|
182
|
-
|
183
|
-
// Select option(s) with matching value
|
184
|
-
cy.get('.action-select').select('fr-bananas')
|
185
|
-
|
186
|
-
cy.get('.action-select-multiple')
|
187
|
-
.select(['fr-apples', 'fr-oranges', 'fr-bananas'])
|
188
|
-
})
|
189
|
-
|
190
|
-
it('.scrollIntoView() - scroll an element into view', () => {
|
191
|
-
// https://on.cypress.io/scrollintoview
|
192
|
-
|
193
|
-
// normally all of these buttons are hidden,
|
194
|
-
// because they're not within
|
195
|
-
// the viewable area of their parent
|
196
|
-
// (we need to scroll to see them)
|
197
|
-
cy.get('#scroll-horizontal button')
|
198
|
-
.should('not.be.visible')
|
199
|
-
|
200
|
-
// scroll the button into view, as if the user had scrolled
|
201
|
-
cy.get('#scroll-horizontal button').scrollIntoView()
|
202
|
-
.should('be.visible')
|
203
|
-
|
204
|
-
cy.get('#scroll-vertical button')
|
205
|
-
.should('not.be.visible')
|
206
|
-
|
207
|
-
// Cypress handles the scroll direction needed
|
208
|
-
cy.get('#scroll-vertical button').scrollIntoView()
|
209
|
-
.should('be.visible')
|
210
|
-
|
211
|
-
cy.get('#scroll-both button')
|
212
|
-
.should('not.be.visible')
|
213
|
-
|
214
|
-
// Cypress knows to scroll to the right and down
|
215
|
-
cy.get('#scroll-both button').scrollIntoView()
|
216
|
-
.should('be.visible')
|
217
|
-
})
|
218
|
-
|
219
|
-
it('cy.scrollTo() - scroll the window or element to a position', () => {
|
220
|
-
|
221
|
-
// https://on.cypress.io/scrollTo
|
222
|
-
|
223
|
-
// You can scroll to 9 specific positions of an element:
|
224
|
-
// -----------------------------------
|
225
|
-
// | topLeft top topRight |
|
226
|
-
// | |
|
227
|
-
// | |
|
228
|
-
// | |
|
229
|
-
// | left center right |
|
230
|
-
// | |
|
231
|
-
// | |
|
232
|
-
// | |
|
233
|
-
// | bottomLeft bottom bottomRight |
|
234
|
-
// -----------------------------------
|
235
|
-
|
236
|
-
// if you chain .scrollTo() off of cy, we will
|
237
|
-
// scroll the entire window
|
238
|
-
cy.scrollTo('bottom')
|
239
|
-
|
240
|
-
cy.get('#scrollable-horizontal').scrollTo('right')
|
241
|
-
|
242
|
-
// or you can scroll to a specific coordinate:
|
243
|
-
// (x axis, y axis) in pixels
|
244
|
-
cy.get('#scrollable-vertical').scrollTo(250, 250)
|
245
|
-
|
246
|
-
// or you can scroll to a specific percentage
|
247
|
-
// of the (width, height) of the element
|
248
|
-
cy.get('#scrollable-both').scrollTo('75%', '25%')
|
249
|
-
|
250
|
-
// control the easing of the scroll (default is 'swing')
|
251
|
-
cy.get('#scrollable-vertical').scrollTo('center', { easing: 'linear' })
|
252
|
-
|
253
|
-
// control the duration of the scroll (in ms)
|
254
|
-
cy.get('#scrollable-both').scrollTo('center', { duration: 2000 })
|
255
|
-
})
|
256
|
-
|
257
|
-
it('.trigger() - trigger an event on a DOM element', () => {
|
258
|
-
// https://on.cypress.io/trigger
|
259
|
-
|
260
|
-
// To interact with a range input (slider)
|
261
|
-
// we need to set its value & trigger the
|
262
|
-
// event to signal it changed
|
263
|
-
|
264
|
-
// Here, we invoke jQuery's val() method to set
|
265
|
-
// the value and trigger the 'change' event
|
266
|
-
cy.get('.trigger-input-range')
|
267
|
-
.invoke('val', 25)
|
268
|
-
.trigger('change')
|
269
|
-
.get('input[type=range]').siblings('p')
|
270
|
-
.should('have.text', '25')
|
271
|
-
})
|
272
|
-
})
|
data/lib/generators/cypress_on_rails/templates/spec/cypress/integration/examples/aliasing.spec.js
DELETED
@@ -1,42 +0,0 @@
|
|
1
|
-
/// <reference types="Cypress" />
|
2
|
-
|
3
|
-
context('Aliasing', () => {
|
4
|
-
beforeEach(() => {
|
5
|
-
cy.visit('https://example.cypress.io/commands/aliasing')
|
6
|
-
})
|
7
|
-
|
8
|
-
it('.as() - alias a DOM element for later use', () => {
|
9
|
-
// https://on.cypress.io/as
|
10
|
-
|
11
|
-
// Alias a DOM element for use later
|
12
|
-
// We don't have to traverse to the element
|
13
|
-
// later in our code, we reference it with @
|
14
|
-
|
15
|
-
cy.get('.as-table').find('tbody>tr')
|
16
|
-
.first().find('td').first()
|
17
|
-
.find('button').as('firstBtn')
|
18
|
-
|
19
|
-
// when we reference the alias, we place an
|
20
|
-
// @ in front of its name
|
21
|
-
cy.get('@firstBtn').click()
|
22
|
-
|
23
|
-
cy.get('@firstBtn')
|
24
|
-
.should('have.class', 'btn-success')
|
25
|
-
.and('contain', 'Changed')
|
26
|
-
})
|
27
|
-
|
28
|
-
it('.as() - alias a route for later use', () => {
|
29
|
-
|
30
|
-
// Alias the route to wait for its response
|
31
|
-
cy.server()
|
32
|
-
cy.route('GET', 'comments/*').as('getComment')
|
33
|
-
|
34
|
-
// we have code that gets a comment when
|
35
|
-
// the button is clicked in scripts.js
|
36
|
-
cy.get('.network-btn').click()
|
37
|
-
|
38
|
-
// https://on.cypress.io/wait
|
39
|
-
cy.wait('@getComment').its('status').should('eq', 200)
|
40
|
-
|
41
|
-
})
|
42
|
-
})
|
data/lib/generators/cypress_on_rails/templates/spec/cypress/integration/examples/assertions.spec.js
DELETED
@@ -1,63 +0,0 @@
|
|
1
|
-
/// <reference types="Cypress" />
|
2
|
-
|
3
|
-
context('Assertions', () => {
|
4
|
-
beforeEach(() => {
|
5
|
-
cy.visit('https://example.cypress.io/commands/assertions')
|
6
|
-
})
|
7
|
-
|
8
|
-
describe('Implicit Assertions', () => {
|
9
|
-
|
10
|
-
it('.should() - make an assertion about the current subject', () => {
|
11
|
-
// https://on.cypress.io/should
|
12
|
-
cy.get('.assertion-table')
|
13
|
-
.find('tbody tr:last').should('have.class', 'success')
|
14
|
-
})
|
15
|
-
|
16
|
-
it('.and() - chain multiple assertions together', () => {
|
17
|
-
// https://on.cypress.io/and
|
18
|
-
cy.get('.assertions-link')
|
19
|
-
.should('have.class', 'active')
|
20
|
-
.and('have.attr', 'href')
|
21
|
-
.and('include', 'cypress.io')
|
22
|
-
})
|
23
|
-
})
|
24
|
-
|
25
|
-
describe('Explicit Assertions', () => {
|
26
|
-
// https://on.cypress.io/assertions
|
27
|
-
it('expect - make an assertion about a specified subject', () => {
|
28
|
-
// We can use Chai's BDD style assertions
|
29
|
-
expect(true).to.be.true
|
30
|
-
|
31
|
-
// Pass a function to should that can have any number
|
32
|
-
// of explicit assertions within it.
|
33
|
-
cy.get('.assertions-p').find('p')
|
34
|
-
.should(($p) => {
|
35
|
-
// return an array of texts from all of the p's
|
36
|
-
let texts = $p.map((i, el) => // https://on.cypress.io/$
|
37
|
-
Cypress.$(el).text())
|
38
|
-
|
39
|
-
// jquery map returns jquery object
|
40
|
-
// and .get() convert this to simple array
|
41
|
-
texts = texts.get()
|
42
|
-
|
43
|
-
// array should have length of 3
|
44
|
-
expect(texts).to.have.length(3)
|
45
|
-
|
46
|
-
// set this specific subject
|
47
|
-
expect(texts).to.deep.eq([
|
48
|
-
'Some text from first p',
|
49
|
-
'More text from second p',
|
50
|
-
'And even more text from third p',
|
51
|
-
])
|
52
|
-
})
|
53
|
-
})
|
54
|
-
|
55
|
-
it('assert - assert shape of an object', () => {
|
56
|
-
const person = {
|
57
|
-
name: 'Joe',
|
58
|
-
age: 20,
|
59
|
-
}
|
60
|
-
assert.isObject(person, 'value is object')
|
61
|
-
})
|
62
|
-
})
|
63
|
-
})
|
data/lib/generators/cypress_on_rails/templates/spec/cypress/integration/examples/connectors.spec.js
DELETED
@@ -1,55 +0,0 @@
|
|
1
|
-
/// <reference types="Cypress" />
|
2
|
-
|
3
|
-
context('Connectors', () => {
|
4
|
-
beforeEach(() => {
|
5
|
-
cy.visit('https://example.cypress.io/commands/connectors')
|
6
|
-
})
|
7
|
-
|
8
|
-
it('.each() - iterate over an array of elements', () => {
|
9
|
-
// https://on.cypress.io/each
|
10
|
-
cy.get('.connectors-each-ul>li')
|
11
|
-
.each(($el, index, $list) => {
|
12
|
-
console.log($el, index, $list)
|
13
|
-
})
|
14
|
-
})
|
15
|
-
|
16
|
-
it('.its() - get properties on the current subject', () => {
|
17
|
-
// https://on.cypress.io/its
|
18
|
-
cy.get('.connectors-its-ul>li')
|
19
|
-
// calls the 'length' property yielding that value
|
20
|
-
.its('length')
|
21
|
-
.should('be.gt', 2)
|
22
|
-
})
|
23
|
-
|
24
|
-
it('.invoke() - invoke a function on the current subject', () => {
|
25
|
-
// our div is hidden in our script.js
|
26
|
-
// $('.connectors-div').hide()
|
27
|
-
|
28
|
-
// https://on.cypress.io/invoke
|
29
|
-
cy.get('.connectors-div').should('be.hidden')
|
30
|
-
// call the jquery method 'show' on the 'div.container'
|
31
|
-
.invoke('show')
|
32
|
-
.should('be.visible')
|
33
|
-
})
|
34
|
-
|
35
|
-
it('.spread() - spread an array as individual args to callback function', () => {
|
36
|
-
// https://on.cypress.io/spread
|
37
|
-
const arr = ['foo', 'bar', 'baz']
|
38
|
-
|
39
|
-
cy.wrap(arr).spread((foo, bar, baz) => {
|
40
|
-
expect(foo).to.eq('foo')
|
41
|
-
expect(bar).to.eq('bar')
|
42
|
-
expect(baz).to.eq('baz')
|
43
|
-
})
|
44
|
-
})
|
45
|
-
|
46
|
-
it('.then() - invoke a callback function with the current subject', () => {
|
47
|
-
// https://on.cypress.io/then
|
48
|
-
cy.get('.connectors-list>li').then(($lis) => {
|
49
|
-
expect($lis).to.have.length(3)
|
50
|
-
expect($lis.eq(0)).to.contain('Walk the dog')
|
51
|
-
expect($lis.eq(1)).to.contain('Feed the cat')
|
52
|
-
expect($lis.eq(2)).to.contain('Write JavaScript')
|
53
|
-
})
|
54
|
-
})
|
55
|
-
})
|
data/lib/generators/cypress_on_rails/templates/spec/cypress/integration/examples/cookies.spec.js
DELETED
@@ -1,78 +0,0 @@
|
|
1
|
-
/// <reference types="Cypress" />
|
2
|
-
|
3
|
-
context('Cookies', () => {
|
4
|
-
beforeEach(() => {
|
5
|
-
Cypress.Cookies.debug(true)
|
6
|
-
|
7
|
-
cy.visit('https://example.cypress.io/commands/cookies')
|
8
|
-
|
9
|
-
// clear cookies again after visiting to remove
|
10
|
-
// any 3rd party cookies picked up such as cloudflare
|
11
|
-
cy.clearCookies()
|
12
|
-
})
|
13
|
-
|
14
|
-
it('cy.getCookie() - get a browser cookie', () => {
|
15
|
-
// https://on.cypress.io/getcookie
|
16
|
-
cy.get('#getCookie .set-a-cookie').click()
|
17
|
-
|
18
|
-
// cy.getCookie() yields a cookie object
|
19
|
-
cy.getCookie('token').should('have.property', 'value', '123ABC')
|
20
|
-
})
|
21
|
-
|
22
|
-
it('cy.getCookies() - get browser cookies', () => {
|
23
|
-
// https://on.cypress.io/getcookies
|
24
|
-
cy.getCookies().should('be.empty')
|
25
|
-
|
26
|
-
cy.get('#getCookies .set-a-cookie').click()
|
27
|
-
|
28
|
-
// cy.getCookies() yields an array of cookies
|
29
|
-
cy.getCookies().should('have.length', 1).should((cookies) => {
|
30
|
-
|
31
|
-
// each cookie has these properties
|
32
|
-
expect(cookies[0]).to.have.property('name', 'token')
|
33
|
-
expect(cookies[0]).to.have.property('value', '123ABC')
|
34
|
-
expect(cookies[0]).to.have.property('httpOnly', false)
|
35
|
-
expect(cookies[0]).to.have.property('secure', false)
|
36
|
-
expect(cookies[0]).to.have.property('domain')
|
37
|
-
expect(cookies[0]).to.have.property('path')
|
38
|
-
})
|
39
|
-
})
|
40
|
-
|
41
|
-
it('cy.setCookie() - set a browser cookie', () => {
|
42
|
-
// https://on.cypress.io/setcookie
|
43
|
-
cy.getCookies().should('be.empty')
|
44
|
-
|
45
|
-
cy.setCookie('foo', 'bar')
|
46
|
-
|
47
|
-
// cy.getCookie() yields a cookie object
|
48
|
-
cy.getCookie('foo').should('have.property', 'value', 'bar')
|
49
|
-
})
|
50
|
-
|
51
|
-
it('cy.clearCookie() - clear a browser cookie', () => {
|
52
|
-
// https://on.cypress.io/clearcookie
|
53
|
-
cy.getCookie('token').should('be.null')
|
54
|
-
|
55
|
-
cy.get('#clearCookie .set-a-cookie').click()
|
56
|
-
|
57
|
-
cy.getCookie('token').should('have.property', 'value', '123ABC')
|
58
|
-
|
59
|
-
// cy.clearCookies() yields null
|
60
|
-
cy.clearCookie('token').should('be.null')
|
61
|
-
|
62
|
-
cy.getCookie('token').should('be.null')
|
63
|
-
})
|
64
|
-
|
65
|
-
it('cy.clearCookies() - clear browser cookies', () => {
|
66
|
-
// https://on.cypress.io/clearcookies
|
67
|
-
cy.getCookies().should('be.empty')
|
68
|
-
|
69
|
-
cy.get('#clearCookies .set-a-cookie').click()
|
70
|
-
|
71
|
-
cy.getCookies().should('have.length', 1)
|
72
|
-
|
73
|
-
// cy.clearCookies() yields null
|
74
|
-
cy.clearCookies()
|
75
|
-
|
76
|
-
cy.getCookies().should('be.empty')
|
77
|
-
})
|
78
|
-
})
|