From e06a7d0f736ccf47dc86e96cfd432133a05cfd61 Mon Sep 17 00:00:00 2001 From: Sean Perkins Date: Fri, 16 Sep 2022 11:16:58 -0400 Subject: [PATCH] chore(vue): migrate to cypress 10 (#25950) --- packages/vue/test/apps/vue3/package-lock.json | 128 +++++------------- packages/vue/test/apps/vue3/package.json | 3 +- packages/vue/test/base/cypress.config.ts | 19 +++ packages/vue/test/base/cypress.json | 6 - .../vue/test/base/tests/e2e/plugins/index.js | 41 +++--- .../tests/e2e/specs/{hbb.js => hbb.cy.js} | 0 .../e2e/specs/{inputs.js => inputs.cy.js} | 0 .../specs/{lifecycle.js => lifecycle.cy.js} | 0 .../specs/{navigation.js => navigation.cy.js} | 0 .../e2e/specs/{nested.js => nested.cy.js} | 0 ...s => overlays-keep-contents-mounted.cy.js} | 0 .../e2e/specs/{overlays.js => overlays.cy.js} | 0 .../e2e/specs/{routing.js => routing.cy.js} | 0 .../tests/e2e/specs/{tabs.js => tabs.cy.js} | 0 14 files changed, 73 insertions(+), 124 deletions(-) create mode 100644 packages/vue/test/base/cypress.config.ts delete mode 100644 packages/vue/test/base/cypress.json rename packages/vue/test/base/tests/e2e/specs/{hbb.js => hbb.cy.js} (100%) rename packages/vue/test/base/tests/e2e/specs/{inputs.js => inputs.cy.js} (100%) rename packages/vue/test/base/tests/e2e/specs/{lifecycle.js => lifecycle.cy.js} (100%) rename packages/vue/test/base/tests/e2e/specs/{navigation.js => navigation.cy.js} (100%) rename packages/vue/test/base/tests/e2e/specs/{nested.js => nested.cy.js} (100%) rename packages/vue/test/base/tests/e2e/specs/{overlays-keep-contents-mounted.js => overlays-keep-contents-mounted.cy.js} (100%) rename packages/vue/test/base/tests/e2e/specs/{overlays.js => overlays.cy.js} (100%) rename packages/vue/test/base/tests/e2e/specs/{routing.js => routing.cy.js} (100%) rename packages/vue/test/base/tests/e2e/specs/{tabs.js => tabs.cy.js} (100%) diff --git a/packages/vue/test/apps/vue3/package-lock.json b/packages/vue/test/apps/vue3/package-lock.json index 932de71342..6842510a80 100644 --- a/packages/vue/test/apps/vue3/package-lock.json +++ b/packages/vue/test/apps/vue3/package-lock.json @@ -28,7 +28,7 @@ "@vue/test-utils": "^2.0.0-rc.18", "@vue/vue3-jest": "^27.0.0-alpha.4", "concurrently": "^6.0.0", - "cypress": "^8.3.0", + "cypress": "^10.0.0", "eslint": "^7.32.0", "eslint-plugin-vue": "^8.0.3", "jest": "^27.1.0", @@ -3169,9 +3169,9 @@ } }, "node_modules/@types/sinonjs__fake-timers": { - "version": "6.0.4", - "resolved": "https://registry.npmjs.org/@types/sinonjs__fake-timers/-/sinonjs__fake-timers-6.0.4.tgz", - "integrity": "sha512-IFQTJARgMUBF+xVd2b+hIgXWrZEjND3vJtRCvIelcFB5SIXfjV4bOHbHJ0eXKh+0COrBRc8MqteKAz/j88rE0A==", + "version": "8.1.1", + "resolved": "https://registry.npmjs.org/@types/sinonjs__fake-timers/-/sinonjs__fake-timers-8.1.1.tgz", + "integrity": "sha512-0kSuKjAS0TrGLJ0M/+8MaFkGsQhZpB6pxOmvS3K8FYI72K//YmdfoW9X2qPsAKh1mkwxGD5zib9s1FIFed6E8g==", "dev": true }, "node_modules/@types/sizzle": { @@ -6579,31 +6579,32 @@ "integrity": "sha512-/WwNkdXfckNgw6S5R125rrW8ez139lBHWouiBvX8dfMFtcn6V81REDqnH7+CRpRipfYlyU1CmOnOxrmGcFOjeA==" }, "node_modules/cypress": { - "version": "8.7.0", - "resolved": "https://registry.npmjs.org/cypress/-/cypress-8.7.0.tgz", - "integrity": "sha512-b1bMC3VQydC6sXzBMFnSqcvwc9dTZMgcaOzT0vpSD+Gq1yFc+72JDWi55sfUK5eIeNLAtWOGy1NNb6UlhMvB+Q==", + "version": "10.8.0", + "resolved": "https://registry.npmjs.org/cypress/-/cypress-10.8.0.tgz", + "integrity": "sha512-QVse0dnLm018hgti2enKMVZR9qbIO488YGX06nH5j3Dg1isL38DwrBtyrax02CANU6y8F4EJUuyW6HJKw1jsFA==", "dev": true, "hasInstallScript": true, "dependencies": { - "@cypress/request": "^2.88.6", + "@cypress/request": "^2.88.10", "@cypress/xvfb": "^1.2.4", "@types/node": "^14.14.31", - "@types/sinonjs__fake-timers": "^6.0.2", + "@types/sinonjs__fake-timers": "8.1.1", "@types/sizzle": "^2.3.2", "arch": "^2.2.0", "blob-util": "^2.0.2", "bluebird": "^3.7.2", + "buffer": "^5.6.0", "cachedir": "^2.3.0", "chalk": "^4.1.0", "check-more-types": "^2.24.0", "cli-cursor": "^3.1.0", - "cli-table3": "~0.6.0", + "cli-table3": "~0.6.1", "commander": "^5.1.0", "common-tags": "^1.8.0", "dayjs": "^1.10.4", "debug": "^4.3.2", "enquirer": "^2.3.6", - "eventemitter2": "^6.4.3", + "eventemitter2": "6.4.7", "execa": "4.1.0", "executable": "^4.1.1", "extract-zip": "2.0.1", @@ -6616,16 +6617,15 @@ "listr2": "^3.8.3", "lodash": "^4.17.21", "log-symbols": "^4.0.0", - "minimist": "^1.2.5", + "minimist": "^1.2.6", "ospath": "^1.2.2", "pretty-bytes": "^5.6.0", "proxy-from-env": "1.0.0", - "ramda": "~0.27.1", "request-progress": "^3.0.0", + "semver": "^7.3.2", "supports-color": "^8.1.1", "tmp": "~0.2.1", "untildify": "^4.0.0", - "url": "^0.11.0", "yauzl": "^2.10.0" }, "bin": { @@ -7971,9 +7971,9 @@ } }, "node_modules/eventemitter2": { - "version": "6.4.5", - "resolved": "https://registry.npmjs.org/eventemitter2/-/eventemitter2-6.4.5.tgz", - "integrity": "sha512-bXE7Dyc1i6oQElDG0jMRZJrRAn9QR2xyyFGmBdZleNmyQX0FqGYmhZIrIrpPfm/w//LTo4tVQGOGQcGCb5q9uw==", + "version": "6.4.7", + "resolved": "https://registry.npmjs.org/eventemitter2/-/eventemitter2-6.4.7.tgz", + "integrity": "sha512-tYUSVOGeQPKt/eC1ABfhHy5Xd96N3oIijJvN3O9+TsC28T5V9yX9oEfEK5faP0EFSNVOG97qtAS68GBrQB2hDg==", "dev": true }, "node_modules/eventemitter3": { @@ -14559,16 +14559,6 @@ "node": ">=0.6" } }, - "node_modules/querystring": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/querystring/-/querystring-0.2.0.tgz", - "integrity": "sha512-X/xY82scca2tau62i9mDyU9K+I+djTMUsvwf7xnUX5GLvVzgJybOJf4Y6o9Zx3oJK/LSXg5tTZBjwzqVPaPO2g==", - "deprecated": "The querystring API is considered Legacy. new code should use the URLSearchParams API instead.", - "dev": true, - "engines": { - "node": ">=0.4.x" - } - }, "node_modules/queue-microtask": { "version": "1.2.3", "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", @@ -14589,12 +14579,6 @@ } ] }, - "node_modules/ramda": { - "version": "0.27.2", - "resolved": "https://registry.npmjs.org/ramda/-/ramda-0.27.2.tgz", - "integrity": "sha512-SbiLPU40JuJniHexQSAgad32hfwd+DRUdwF2PlVuI5RZD0/vahUco7R8vD86J/tcEKKF9vZrUVwgtmGCqlCKyA==", - "dev": true - }, "node_modules/randombytes": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", @@ -16578,22 +16562,6 @@ "punycode": "^2.1.0" } }, - "node_modules/url": { - "version": "0.11.0", - "resolved": "https://registry.npmjs.org/url/-/url-0.11.0.tgz", - "integrity": "sha1-ODjpfPxgUh63PFJajlW/3Z4uKPE=", - "dev": true, - "dependencies": { - "punycode": "1.3.2", - "querystring": "0.2.0" - } - }, - "node_modules/url/node_modules/punycode": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.3.2.tgz", - "integrity": "sha512-RofWgt/7fL5wP1Y7fxE7/EmTLzQVnB0ycyibJ0OOHIlJqTNzglYFxVwETOcIoJqJmpDXJ9xImDv+Fq34F/d4Dw==", - "dev": true - }, "node_modules/util-deprecate": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", @@ -20168,9 +20136,9 @@ } }, "@types/sinonjs__fake-timers": { - "version": "6.0.4", - "resolved": "https://registry.npmjs.org/@types/sinonjs__fake-timers/-/sinonjs__fake-timers-6.0.4.tgz", - "integrity": "sha512-IFQTJARgMUBF+xVd2b+hIgXWrZEjND3vJtRCvIelcFB5SIXfjV4bOHbHJ0eXKh+0COrBRc8MqteKAz/j88rE0A==", + "version": "8.1.1", + "resolved": "https://registry.npmjs.org/@types/sinonjs__fake-timers/-/sinonjs__fake-timers-8.1.1.tgz", + "integrity": "sha512-0kSuKjAS0TrGLJ0M/+8MaFkGsQhZpB6pxOmvS3K8FYI72K//YmdfoW9X2qPsAKh1mkwxGD5zib9s1FIFed6E8g==", "dev": true }, "@types/sizzle": { @@ -22717,30 +22685,31 @@ "integrity": "sha512-/WwNkdXfckNgw6S5R125rrW8ez139lBHWouiBvX8dfMFtcn6V81REDqnH7+CRpRipfYlyU1CmOnOxrmGcFOjeA==" }, "cypress": { - "version": "8.7.0", - "resolved": "https://registry.npmjs.org/cypress/-/cypress-8.7.0.tgz", - "integrity": "sha512-b1bMC3VQydC6sXzBMFnSqcvwc9dTZMgcaOzT0vpSD+Gq1yFc+72JDWi55sfUK5eIeNLAtWOGy1NNb6UlhMvB+Q==", + "version": "10.8.0", + "resolved": "https://registry.npmjs.org/cypress/-/cypress-10.8.0.tgz", + "integrity": "sha512-QVse0dnLm018hgti2enKMVZR9qbIO488YGX06nH5j3Dg1isL38DwrBtyrax02CANU6y8F4EJUuyW6HJKw1jsFA==", "dev": true, "requires": { - "@cypress/request": "^2.88.6", + "@cypress/request": "^2.88.10", "@cypress/xvfb": "^1.2.4", "@types/node": "^14.14.31", - "@types/sinonjs__fake-timers": "^6.0.2", + "@types/sinonjs__fake-timers": "8.1.1", "@types/sizzle": "^2.3.2", "arch": "^2.2.0", "blob-util": "^2.0.2", "bluebird": "^3.7.2", + "buffer": "^5.6.0", "cachedir": "^2.3.0", "chalk": "^4.1.0", "check-more-types": "^2.24.0", "cli-cursor": "^3.1.0", - "cli-table3": "~0.6.0", + "cli-table3": "~0.6.1", "commander": "^5.1.0", "common-tags": "^1.8.0", "dayjs": "^1.10.4", "debug": "^4.3.2", "enquirer": "^2.3.6", - "eventemitter2": "^6.4.3", + "eventemitter2": "6.4.7", "execa": "4.1.0", "executable": "^4.1.1", "extract-zip": "2.0.1", @@ -22753,16 +22722,15 @@ "listr2": "^3.8.3", "lodash": "^4.17.21", "log-symbols": "^4.0.0", - "minimist": "^1.2.5", + "minimist": "^1.2.6", "ospath": "^1.2.2", "pretty-bytes": "^5.6.0", "proxy-from-env": "1.0.0", - "ramda": "~0.27.1", "request-progress": "^3.0.0", + "semver": "^7.3.2", "supports-color": "^8.1.1", "tmp": "~0.2.1", "untildify": "^4.0.0", - "url": "^0.11.0", "yauzl": "^2.10.0" }, "dependencies": { @@ -23756,9 +23724,9 @@ "dev": true }, "eventemitter2": { - "version": "6.4.5", - "resolved": "https://registry.npmjs.org/eventemitter2/-/eventemitter2-6.4.5.tgz", - "integrity": "sha512-bXE7Dyc1i6oQElDG0jMRZJrRAn9QR2xyyFGmBdZleNmyQX0FqGYmhZIrIrpPfm/w//LTo4tVQGOGQcGCb5q9uw==", + "version": "6.4.7", + "resolved": "https://registry.npmjs.org/eventemitter2/-/eventemitter2-6.4.7.tgz", + "integrity": "sha512-tYUSVOGeQPKt/eC1ABfhHy5Xd96N3oIijJvN3O9+TsC28T5V9yX9oEfEK5faP0EFSNVOG97qtAS68GBrQB2hDg==", "dev": true }, "eventemitter3": { @@ -28655,24 +28623,12 @@ "integrity": "sha512-qxXIEh4pCGfHICj1mAJQ2/2XVZkjCDTcEgfoSQxc/fYivUZxTkk7L3bDBJSoNrEzXI17oUO5Dp07ktqE5KzczA==", "dev": true }, - "querystring": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/querystring/-/querystring-0.2.0.tgz", - "integrity": "sha512-X/xY82scca2tau62i9mDyU9K+I+djTMUsvwf7xnUX5GLvVzgJybOJf4Y6o9Zx3oJK/LSXg5tTZBjwzqVPaPO2g==", - "dev": true - }, "queue-microtask": { "version": "1.2.3", "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", "dev": true }, - "ramda": { - "version": "0.27.2", - "resolved": "https://registry.npmjs.org/ramda/-/ramda-0.27.2.tgz", - "integrity": "sha512-SbiLPU40JuJniHexQSAgad32hfwd+DRUdwF2PlVuI5RZD0/vahUco7R8vD86J/tcEKKF9vZrUVwgtmGCqlCKyA==", - "dev": true - }, "randombytes": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", @@ -30189,24 +30145,6 @@ "punycode": "^2.1.0" } }, - "url": { - "version": "0.11.0", - "resolved": "https://registry.npmjs.org/url/-/url-0.11.0.tgz", - "integrity": "sha1-ODjpfPxgUh63PFJajlW/3Z4uKPE=", - "dev": true, - "requires": { - "punycode": "1.3.2", - "querystring": "0.2.0" - }, - "dependencies": { - "punycode": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.3.2.tgz", - "integrity": "sha512-RofWgt/7fL5wP1Y7fxE7/EmTLzQVnB0ycyibJ0OOHIlJqTNzglYFxVwETOcIoJqJmpDXJ9xImDv+Fq34F/d4Dw==", - "dev": true - } - } - }, "util-deprecate": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", diff --git a/packages/vue/test/apps/vue3/package.json b/packages/vue/test/apps/vue3/package.json index eb3baa9837..82543efd02 100644 --- a/packages/vue/test/apps/vue3/package.json +++ b/packages/vue/test/apps/vue3/package.json @@ -9,6 +9,7 @@ "test:e2e": "concurrently \"npm run start -- --mode production\" \"wait-on http-get://localhost:8080 && npm run cypress\" --kill-others --success first", "lint": "vue-cli-service lint", "cypress": "node_modules/.bin/cypress run --headless --browser chrome", + "cypress.open": "cypress open", "start": "vue-cli-service serve", "sync": "sh ./scripts/sync.sh" }, @@ -33,7 +34,7 @@ "@vue/test-utils": "^2.0.0-rc.18", "@vue/vue3-jest": "^27.0.0-alpha.4", "concurrently": "^6.0.0", - "cypress": "^8.3.0", + "cypress": "^10.0.0", "eslint": "^7.32.0", "eslint-plugin-vue": "^8.0.3", "jest": "^27.1.0", diff --git a/packages/vue/test/base/cypress.config.ts b/packages/vue/test/base/cypress.config.ts new file mode 100644 index 0000000000..0a0f1b6d84 --- /dev/null +++ b/packages/vue/test/base/cypress.config.ts @@ -0,0 +1,19 @@ +import { defineConfig } from 'cypress'; + +export default defineConfig({ + video: false, + screenshotOnRunFailure: false, + defaultCommandTimeout: 10000, + fixturesFolder: 'tests/e2e/fixtures', + screenshotsFolder: 'tests/e2e/screenshots', + videosFolder: 'tests/e2e/videos', + e2e: { + // We've imported your old cypress plugins here. + // You may want to clean this up later by importing these. + setupNodeEvents(on, config) { + return require('./tests/e2e/plugins/index.js')(on, config) + }, + specPattern: 'tests/e2e/specs/**/*.cy.{js,jsx,ts,tsx}', + supportFile: 'tests/e2e/support/index.js', + }, +}) diff --git a/packages/vue/test/base/cypress.json b/packages/vue/test/base/cypress.json deleted file mode 100644 index c45e01b013..0000000000 --- a/packages/vue/test/base/cypress.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "pluginsFile": "tests/e2e/plugins/index.js", - "video": false, - "screenshotOnRunFailure": false, - "defaultCommandTimeout": 10000 -} diff --git a/packages/vue/test/base/tests/e2e/plugins/index.js b/packages/vue/test/base/tests/e2e/plugins/index.js index 6f7e63b9ef..8229063adc 100644 --- a/packages/vue/test/base/tests/e2e/plugins/index.js +++ b/packages/vue/test/base/tests/e2e/plugins/index.js @@ -1,25 +1,22 @@ -/* eslint-disable arrow-body-style */ -// https://docs.cypress.io/guides/guides/plugins-guide.html +/// +// *********************************************************** +// This example plugins/index.js can be used to load plugins +// +// You can change the location of this file or turn off loading +// the plugins file with the 'pluginsFile' configuration option. +// +// You can read more here: +// https://on.cypress.io/plugins-guide +// *********************************************************** -// if you need a custom webpack configuration you can uncomment the following import -// and then use the `file:preprocessor` event -// as explained in the cypress docs -// https://docs.cypress.io/api/plugins/preprocessors-api.html#Examples - -// /* eslint-disable import/no-extraneous-dependencies, global-require */ -// const webpack = require('@cypress/webpack-preprocessor') +// This function is called when a project is opened or re-opened (e.g. due to +// the project's config changing) +/** + * @type {Cypress.PluginConfig} + */ +// eslint-disable-next-line no-unused-vars module.exports = (on, config) => { - // on('file:preprocessor', webpack({ - // webpackOptions: require('@vue/cli-service/webpack.config'), - // watchOptions: {} - // })) - - return Object.assign({}, config, { - fixturesFolder: 'tests/e2e/fixtures', - integrationFolder: 'tests/e2e/specs', - screenshotsFolder: 'tests/e2e/screenshots', - videosFolder: 'tests/e2e/videos', - supportFile: 'tests/e2e/support/index.js' - }) -} + // `on` is used to hook into various events Cypress emits + // `config` is the resolved Cypress config +}; diff --git a/packages/vue/test/base/tests/e2e/specs/hbb.js b/packages/vue/test/base/tests/e2e/specs/hbb.cy.js similarity index 100% rename from packages/vue/test/base/tests/e2e/specs/hbb.js rename to packages/vue/test/base/tests/e2e/specs/hbb.cy.js diff --git a/packages/vue/test/base/tests/e2e/specs/inputs.js b/packages/vue/test/base/tests/e2e/specs/inputs.cy.js similarity index 100% rename from packages/vue/test/base/tests/e2e/specs/inputs.js rename to packages/vue/test/base/tests/e2e/specs/inputs.cy.js diff --git a/packages/vue/test/base/tests/e2e/specs/lifecycle.js b/packages/vue/test/base/tests/e2e/specs/lifecycle.cy.js similarity index 100% rename from packages/vue/test/base/tests/e2e/specs/lifecycle.js rename to packages/vue/test/base/tests/e2e/specs/lifecycle.cy.js diff --git a/packages/vue/test/base/tests/e2e/specs/navigation.js b/packages/vue/test/base/tests/e2e/specs/navigation.cy.js similarity index 100% rename from packages/vue/test/base/tests/e2e/specs/navigation.js rename to packages/vue/test/base/tests/e2e/specs/navigation.cy.js diff --git a/packages/vue/test/base/tests/e2e/specs/nested.js b/packages/vue/test/base/tests/e2e/specs/nested.cy.js similarity index 100% rename from packages/vue/test/base/tests/e2e/specs/nested.js rename to packages/vue/test/base/tests/e2e/specs/nested.cy.js diff --git a/packages/vue/test/base/tests/e2e/specs/overlays-keep-contents-mounted.js b/packages/vue/test/base/tests/e2e/specs/overlays-keep-contents-mounted.cy.js similarity index 100% rename from packages/vue/test/base/tests/e2e/specs/overlays-keep-contents-mounted.js rename to packages/vue/test/base/tests/e2e/specs/overlays-keep-contents-mounted.cy.js diff --git a/packages/vue/test/base/tests/e2e/specs/overlays.js b/packages/vue/test/base/tests/e2e/specs/overlays.cy.js similarity index 100% rename from packages/vue/test/base/tests/e2e/specs/overlays.js rename to packages/vue/test/base/tests/e2e/specs/overlays.cy.js diff --git a/packages/vue/test/base/tests/e2e/specs/routing.js b/packages/vue/test/base/tests/e2e/specs/routing.cy.js similarity index 100% rename from packages/vue/test/base/tests/e2e/specs/routing.js rename to packages/vue/test/base/tests/e2e/specs/routing.cy.js diff --git a/packages/vue/test/base/tests/e2e/specs/tabs.js b/packages/vue/test/base/tests/e2e/specs/tabs.cy.js similarity index 100% rename from packages/vue/test/base/tests/e2e/specs/tabs.js rename to packages/vue/test/base/tests/e2e/specs/tabs.cy.js