cypress 10.10.0 → 11.0.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.
- package/angular/CHANGELOG.md +27 -0
- package/angular/dist/index.d.ts +124 -1
- package/angular/dist/index.js +59 -59
- package/lib/cli.js +15 -1
- package/lib/tasks/download.js +3 -7
- package/lib/util.js +2 -2
- package/mount-utils/CHANGELOG.md +7 -63
- package/mount-utils/README.md +5 -23
- package/mount-utils/dist/index.d.ts +25 -39
- package/mount-utils/dist/index.js +33 -112
- package/mount-utils/package.json +1 -0
- package/package.json +5 -4
- package/react/CHANGELOG.md +12 -55
- package/react/README.md +2 -22
- package/react/dist/cypress-react.cjs.js +92 -219
- package/react/dist/cypress-react.esm-bundler.js +92 -220
- package/react/dist/index.d.ts +111 -4
- package/react18/CHANGELOG.md +6 -106
- package/react18/dist/cypress-react.cjs.js +117 -180
- package/react18/dist/cypress-react.esm-bundler.js +103 -167
- package/react18/dist/index.d.ts +78 -6
- package/react18/package.json +1 -0
- package/svelte/CHANGELOG.md +20 -0
- package/svelte/dist/cypress-svelte.cjs.js +19 -114
- package/svelte/dist/cypress-svelte.esm-bundler.js +19 -114
- package/svelte/dist/index.d.ts +201 -1
- package/types/cypress-npm-api.d.ts +1 -1
- package/types/cypress.d.ts +43 -21
- package/vue/CHANGELOG.md +13 -101
- package/vue/README.md +4 -8
- package/vue/dist/cypress-vue.cjs.js +70 -153
- package/vue/dist/cypress-vue.esm-bundler.js +70 -153
- package/vue/dist/index.d.ts +1352 -104
- package/vue/package.json +1 -1
- package/vue2/CHANGELOG.md +15 -50
- package/vue2/README.md +3 -7
- package/vue2/dist/cypress-vue2.cjs.js +87 -211
- package/vue2/dist/cypress-vue2.esm-bundler.js +86 -210
- package/vue2/dist/index.d.ts +341 -172
- package/vue2/package.json +1 -3
- package/angular/dist/mount.d.ts +0 -112
- package/react/dist/createMount.d.ts +0 -31
- package/react/dist/getDisplayName.d.ts +0 -8
- package/react/dist/mount.d.ts +0 -8
- package/react/dist/mountHook.d.ts +0 -12
- package/react/dist/types.d.ts +0 -45
- package/svelte/dist/mount.d.ts +0 -30
- package/vue/dist/@vue/test-utils/baseWrapper.d.ts +0 -63
- package/vue/dist/@vue/test-utils/components/RouterLinkStub.d.ts +0 -21
- package/vue/dist/@vue/test-utils/config.d.ts +0 -30
- package/vue/dist/@vue/test-utils/constants/dom-events.d.ts +0 -900
- package/vue/dist/@vue/test-utils/createDomEvent.d.ts +0 -9
- package/vue/dist/@vue/test-utils/domWrapper.d.ts +0 -18
- package/vue/dist/@vue/test-utils/emit.d.ts +0 -5
- package/vue/dist/@vue/test-utils/errorWrapper.d.ts +0 -1
- package/vue/dist/@vue/test-utils/index.d.ts +0 -11
- package/vue/dist/@vue/test-utils/interfaces/wrapperLike.d.ts +0 -56
- package/vue/dist/@vue/test-utils/mount.d.ts +0 -35
- package/vue/dist/@vue/test-utils/stubs.d.ts +0 -22
- package/vue/dist/@vue/test-utils/types.d.ts +0 -125
- package/vue/dist/@vue/test-utils/utils/autoUnmount.d.ts +0 -5
- package/vue/dist/@vue/test-utils/utils/compileSlots.d.ts +0 -2
- package/vue/dist/@vue/test-utils/utils/componentName.d.ts +0 -4
- package/vue/dist/@vue/test-utils/utils/find.d.ts +0 -10
- package/vue/dist/@vue/test-utils/utils/flushPromises.d.ts +0 -1
- package/vue/dist/@vue/test-utils/utils/getRootNodes.d.ts +0 -2
- package/vue/dist/@vue/test-utils/utils/isElement.d.ts +0 -1
- package/vue/dist/@vue/test-utils/utils/isElementVisible.d.ts +0 -6
- package/vue/dist/@vue/test-utils/utils/matchName.d.ts +0 -1
- package/vue/dist/@vue/test-utils/utils/stringifyNode.d.ts +0 -1
- package/vue/dist/@vue/test-utils/utils/vueCompatSupport.d.ts +0 -8
- package/vue/dist/@vue/test-utils/utils/vueShared.d.ts +0 -3
- package/vue/dist/@vue/test-utils/utils.d.ts +0 -13
- package/vue/dist/@vue/test-utils/vueWrapper.d.ts +0 -35
- package/vue/dist/@vue/test-utils/wrapperFactory.d.ts +0 -14
package/vue/package.json
CHANGED
@@ -8,7 +8,7 @@
|
|
8
8
|
"cy:open": "node ../../scripts/cypress.js open --component --project ${PWD}",
|
9
9
|
"cy:run": "node ../../scripts/cypress.js run --component --project ${PWD}",
|
10
10
|
"build": "rimraf dist && rollup -c rollup.config.mjs",
|
11
|
-
"postbuild": "node
|
11
|
+
"postbuild": "node ../../scripts/sync-exported-npm-with-cli.js",
|
12
12
|
"typecheck": "yarn tsd && vue-tsc --noEmit",
|
13
13
|
"test": "yarn cy:run",
|
14
14
|
"tsd": "yarn build && yarn tsc -p test-tsd/tsconfig.tsd.json",
|
package/vue2/CHANGELOG.md
CHANGED
@@ -1,72 +1,37 @@
|
|
1
|
-
# [@cypress/vue2-
|
1
|
+
# [@cypress/vue2-v2.0.0](https://github.com/cypress-io/cypress/compare/@cypress/vue2-v1.1.2...@cypress/vue2-v2.0.0) (2022-11-07)
|
2
2
|
|
3
3
|
|
4
|
-
###
|
5
|
-
|
6
|
-
* adding svelte component testing support ([#23553](https://github.com/cypress-io/cypress/issues/23553)) ([f6eaad4](https://github.com/cypress-io/cypress/commit/f6eaad40e1836fa9db87c60defa5ae6f390c8fd8))
|
7
|
-
|
8
|
-
# [@cypress/vue2-v1.1.0](https://github.com/cypress-io/cypress/compare/@cypress/vue2-v1.0.2...@cypress/vue2-v1.1.0) (2022-10-06)
|
9
|
-
|
10
|
-
|
11
|
-
### Features
|
12
|
-
|
13
|
-
* adding svelte component testing support ([#23553](https://github.com/cypress-io/cypress/issues/23553)) ([f6eaad4](https://github.com/cypress-io/cypress/commit/f6eaad40e1836fa9db87c60defa5ae6f390c8fd8))
|
14
|
-
|
15
|
-
# [@cypress/vue2-v1.1.0](https://github.com/cypress-io/cypress/compare/@cypress/vue2-v1.0.2...@cypress/vue2-v1.1.0) (2022-10-04)
|
16
|
-
|
17
|
-
|
18
|
-
### Features
|
19
|
-
|
20
|
-
* adding svelte component testing support ([#23553](https://github.com/cypress-io/cypress/issues/23553)) ([f6eaad4](https://github.com/cypress-io/cypress/commit/f6eaad40e1836fa9db87c60defa5ae6f390c8fd8))
|
21
|
-
|
22
|
-
# [@cypress/vue2-v1.1.0](https://github.com/cypress-io/cypress/compare/@cypress/vue2-v1.0.2...@cypress/vue2-v1.1.0) (2022-10-04)
|
23
|
-
|
24
|
-
|
25
|
-
### Features
|
26
|
-
|
27
|
-
* adding svelte component testing support ([#23553](https://github.com/cypress-io/cypress/issues/23553)) ([f6eaad4](https://github.com/cypress-io/cypress/commit/f6eaad40e1836fa9db87c60defa5ae6f390c8fd8))
|
28
|
-
|
29
|
-
# [@cypress/vue2-v1.1.0](https://github.com/cypress-io/cypress/compare/@cypress/vue2-v1.0.2...@cypress/vue2-v1.1.0) (2022-10-03)
|
30
|
-
|
31
|
-
|
32
|
-
### Features
|
33
|
-
|
34
|
-
* adding svelte component testing support ([#23553](https://github.com/cypress-io/cypress/issues/23553)) ([f6eaad4](https://github.com/cypress-io/cypress/commit/f6eaad40e1836fa9db87c60defa5ae6f390c8fd8))
|
35
|
-
|
36
|
-
# [@cypress/vue2-v1.1.0](https://github.com/cypress-io/cypress/compare/@cypress/vue2-v1.0.2...@cypress/vue2-v1.1.0) (2022-10-01)
|
37
|
-
|
38
|
-
|
39
|
-
### Features
|
40
|
-
|
41
|
-
* adding svelte component testing support ([#23553](https://github.com/cypress-io/cypress/issues/23553)) ([f6eaad4](https://github.com/cypress-io/cypress/commit/f6eaad40e1836fa9db87c60defa5ae6f390c8fd8))
|
4
|
+
### Bug Fixes
|
42
5
|
|
43
|
-
|
6
|
+
* remove dependence on @cypress/<dep> types ([#24415](https://github.com/cypress-io/cypress/issues/24415)) ([58e0ab9](https://github.com/cypress-io/cypress/commit/58e0ab91604618ea6f75932622f7e66e419270e6))
|
7
|
+
* remove last mounted component upon subsequent mount calls ([#24470](https://github.com/cypress-io/cypress/issues/24470)) ([f39eb1c](https://github.com/cypress-io/cypress/commit/f39eb1c19e0923bda7ae263168fc6448da942d54))
|
8
|
+
* remove some CT functions and props ([#24419](https://github.com/cypress-io/cypress/issues/24419)) ([294985f](https://github.com/cypress-io/cypress/commit/294985f8b3e0fa00ed66d25f88c8814603766074))
|
44
9
|
|
45
10
|
|
46
11
|
### Features
|
47
12
|
|
48
|
-
*
|
13
|
+
* include component and wrapper in return type for vue mount adapter ([#24479](https://github.com/cypress-io/cypress/issues/24479)) ([33875d7](https://github.com/cypress-io/cypress/commit/33875d75505416b1f65ca7c6d5dedc46f3289f1b))
|
49
14
|
|
50
|
-
# [@cypress/vue2-v1.1.0](https://github.com/cypress-io/cypress/compare/@cypress/vue2-v1.0.2...@cypress/vue2-v1.1.0) (2022-09-30)
|
51
15
|
|
16
|
+
### BREAKING CHANGES
|
52
17
|
|
53
|
-
|
18
|
+
* remove last mounted component upon subsequent mount calls of mount
|
19
|
+
* Vue mount returns wrapper and component rather than wrapper only
|
54
20
|
|
55
|
-
|
21
|
+
# [@cypress/vue2-v1.1.2](https://github.com/cypress-io/cypress/compare/@cypress/vue2-v1.1.1...@cypress/vue2-v1.1.2) (2022-11-01)
|
56
22
|
|
57
|
-
# [@cypress/vue2-v1.1.0](https://github.com/cypress-io/cypress/compare/@cypress/vue2-v1.0.2...@cypress/vue2-v1.1.0) (2022-09-30)
|
58
23
|
|
24
|
+
### Bug Fixes
|
59
25
|
|
60
|
-
|
26
|
+
* Hovering over mount in command log does not show component in AUT ([#24346](https://github.com/cypress-io/cypress/issues/24346)) ([355d210](https://github.com/cypress-io/cypress/commit/355d2101d38ea4d1e93b9c571cf77babab2bbbfc))
|
61
27
|
|
62
|
-
|
28
|
+
# [@cypress/vue2-v1.1.1](https://github.com/cypress-io/cypress/compare/@cypress/vue2-v1.1.0...@cypress/vue2-v1.1.1) (2022-10-13)
|
63
29
|
|
64
|
-
# [@cypress/vue2-v1.1.0](https://github.com/cypress-io/cypress/compare/@cypress/vue2-v1.0.2...@cypress/vue2-v1.1.0) (2022-09-29)
|
65
30
|
|
31
|
+
### Bug Fixes
|
66
32
|
|
67
|
-
|
33
|
+
* angular and nuxt ct tests now fail on uncaught exceptions ([#24122](https://github.com/cypress-io/cypress/issues/24122)) ([53eef4f](https://github.com/cypress-io/cypress/commit/53eef4fbd7e1caf32f0183cadbc0e4cf05524c34))
|
68
34
|
|
69
|
-
* adding svelte component testing support ([#23553](https://github.com/cypress-io/cypress/issues/23553)) ([f6eaad4](https://github.com/cypress-io/cypress/commit/f6eaad40e1836fa9db87c60defa5ae6f390c8fd8))
|
70
35
|
|
71
36
|
# [@cypress/vue2-v1.1.0](https://github.com/cypress-io/cypress/compare/@cypress/vue2-v1.0.2...@cypress/vue2-v1.1.0) (2022-08-30)
|
72
37
|
|
package/vue2/README.md
CHANGED
@@ -34,21 +34,17 @@ describe('HelloWorld component', () => {
|
|
34
34
|
|
35
35
|
### Options
|
36
36
|
|
37
|
-
|
37
|
+
One option for styling your components is to import stylesheets into your test file. See [docs/styles.md](./docs/styles.md) for full list of options.
|
38
38
|
|
39
39
|
```js
|
40
40
|
import Todo from './Todo.vue'
|
41
|
+
import '../styles/main.css'
|
41
42
|
const todo = {
|
42
43
|
id: '123',
|
43
44
|
title: 'Write more tests',
|
44
45
|
}
|
45
46
|
|
46
|
-
mount(Todo, {
|
47
|
-
propsData: { todo },
|
48
|
-
stylesheets: [
|
49
|
-
'https://cdnjs.cloudflare.com/ajax/libs/bulma/0.7.2/css/bulma.css',
|
50
|
-
],
|
51
|
-
})
|
47
|
+
mount(Todo, { propsData: { todo } })
|
52
48
|
```
|
53
49
|
|
54
50
|
### Global Vue Options
|
@@ -9,11 +9,11 @@
|
|
9
9
|
|
10
10
|
Object.defineProperty(exports, '__esModule', { value: true });
|
11
11
|
|
12
|
-
var
|
12
|
+
var Vue = require('vue');
|
13
13
|
|
14
14
|
function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
|
15
15
|
|
16
|
-
var
|
16
|
+
var Vue__default = /*#__PURE__*/_interopDefaultLegacy(Vue);
|
17
17
|
|
18
18
|
var commonjsGlobal$1 = typeof globalThis !== 'undefined' ? globalThis : typeof window !== 'undefined' ? window : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {};
|
19
19
|
|
@@ -5737,15 +5737,11 @@ var build = /*#__PURE__*/Object.defineProperty({
|
|
5737
5737
|
}, '__esModule', {value: true});
|
5738
5738
|
|
5739
5739
|
try {
|
5740
|
-
var vueVersion =
|
5740
|
+
var vueVersion = Vue__default["default"].version;
|
5741
5741
|
} catch (e) {}
|
5742
5742
|
|
5743
5743
|
var vueTemplateCompiler = build;
|
5744
5744
|
|
5745
|
-
function _interopDefaultLegacy$1 (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
|
5746
|
-
|
5747
|
-
var Vue__default = /*#__PURE__*/_interopDefaultLegacy$1(require$$0__default["default"]);
|
5748
|
-
|
5749
5745
|
//
|
5750
5746
|
|
5751
5747
|
function createVNodes(vm, slotValue, name) {
|
@@ -5791,7 +5787,7 @@ function createSlotVNodes(
|
|
5791
5787
|
}, [])
|
5792
5788
|
}
|
5793
5789
|
|
5794
|
-
var commonjsGlobal = typeof globalThis !== 'undefined' ? globalThis : typeof window !== 'undefined' ? window : typeof
|
5790
|
+
var commonjsGlobal = typeof globalThis !== 'undefined' ? globalThis : typeof window !== 'undefined' ? window : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {};
|
5795
5791
|
|
5796
5792
|
function createCommonjsModule(fn, basedir, module) {
|
5797
5793
|
return module = {
|
@@ -7417,17 +7413,17 @@ var DOM_SELECTOR = 'DOM_SELECTOR';
|
|
7417
7413
|
var INVALID_SELECTOR = 'INVALID_SELECTOR';
|
7418
7414
|
|
7419
7415
|
var VUE_VERSION = Number(
|
7420
|
-
((Vue__default[
|
7416
|
+
((Vue__default["default"].version.split('.')[0]) + "." + (Vue__default["default"].version.split('.')[1]))
|
7421
7417
|
);
|
7422
7418
|
|
7423
7419
|
var FUNCTIONAL_OPTIONS =
|
7424
7420
|
VUE_VERSION >= 2.5 ? 'fnOptions' : 'functionalOptions';
|
7425
7421
|
|
7426
|
-
var BEFORE_RENDER_LIFECYCLE_HOOK = semver.gt(Vue__default[
|
7422
|
+
var BEFORE_RENDER_LIFECYCLE_HOOK = semver.gt(Vue__default["default"].version, '2.1.8')
|
7427
7423
|
? 'beforeCreate'
|
7428
7424
|
: 'beforeMount';
|
7429
7425
|
|
7430
|
-
var CREATE_ELEMENT_ALIAS = semver.gt(Vue__default[
|
7426
|
+
var CREATE_ELEMENT_ALIAS = semver.gt(Vue__default["default"].version, '2.1.5')
|
7431
7427
|
? '_c'
|
7432
7428
|
: '_h';
|
7433
7429
|
|
@@ -7501,7 +7497,7 @@ var isChrome = UA && /chrome\/\d+/.test(UA) && !isEdge;
|
|
7501
7497
|
|
7502
7498
|
// get the event used to trigger v-model handler that updates bound data
|
7503
7499
|
function getCheckedEvent() {
|
7504
|
-
var version = Vue__default[
|
7500
|
+
var version = Vue__default["default"].version;
|
7505
7501
|
|
7506
7502
|
if (semver.satisfies(version, '2.1.9 - 2.1.10')) {
|
7507
7503
|
return 'click'
|
@@ -7521,9 +7517,9 @@ function getCheckedEvent() {
|
|
7521
7517
|
* @return {Promise<R>}
|
7522
7518
|
*/
|
7523
7519
|
function nextTick() {
|
7524
|
-
if (VUE_VERSION > 2) { return Vue__default[
|
7520
|
+
if (VUE_VERSION > 2) { return Vue__default["default"].nextTick() }
|
7525
7521
|
return new Promise(function (resolve) {
|
7526
|
-
Vue__default[
|
7522
|
+
Vue__default["default"].nextTick(resolve);
|
7527
7523
|
})
|
7528
7524
|
}
|
7529
7525
|
|
@@ -7567,7 +7563,7 @@ function addMocks(
|
|
7567
7563
|
);
|
7568
7564
|
}
|
7569
7565
|
// $FlowIgnore
|
7570
|
-
Vue__default[
|
7566
|
+
Vue__default["default"].util.defineReactive(_Vue, key, mockedProperties[key]);
|
7571
7567
|
});
|
7572
7568
|
}
|
7573
7569
|
|
@@ -8068,8 +8064,8 @@ function createStubFromComponent(
|
|
8068
8064
|
var tagName = (name || 'anonymous') + "-stub";
|
8069
8065
|
|
8070
8066
|
// ignoreElements does not exist in Vue 2.0.x
|
8071
|
-
if (Vue__default[
|
8072
|
-
Vue__default[
|
8067
|
+
if (Vue__default["default"].config.ignoredElements) {
|
8068
|
+
Vue__default["default"].config.ignoredElements.push(tagName);
|
8073
8069
|
}
|
8074
8070
|
|
8075
8071
|
return Object.assign({}, getCoreProperties(componentOptions),
|
@@ -14756,7 +14752,15 @@ ErrorWrapper.prototype.destroy = function destroy () {
|
|
14756
14752
|
*/
|
14757
14753
|
|
14758
14754
|
function isStyleVisible(element) {
|
14759
|
-
|
14755
|
+
if (!(element instanceof HTMLElement) && !(element instanceof SVGElement)) {
|
14756
|
+
return false
|
14757
|
+
}
|
14758
|
+
|
14759
|
+
// Per https://lists.w3.org/Archives/Public/www-style/2018May/0031.html
|
14760
|
+
// getComputedStyle should only work with connected elements.
|
14761
|
+
var ref = element.isConnected
|
14762
|
+
? getComputedStyle(element)
|
14763
|
+
: element.style;
|
14760
14764
|
var display = ref.display;
|
14761
14765
|
var visibility = ref.visibility;
|
14762
14766
|
var opacity = ref.opacity;
|
@@ -17064,36 +17068,6 @@ var VueWrapper = /*@__PURE__*/(function (Wrapper) {
|
|
17064
17068
|
|
17065
17069
|
//
|
17066
17070
|
|
17067
|
-
var isEnabled = false;
|
17068
|
-
var wrapperInstances = [];
|
17069
|
-
|
17070
|
-
function enableAutoDestroy(hook) {
|
17071
|
-
if (isEnabled) {
|
17072
|
-
throwError('enableAutoDestroy cannot be called more than once');
|
17073
|
-
}
|
17074
|
-
|
17075
|
-
isEnabled = true;
|
17076
|
-
|
17077
|
-
hook(function () {
|
17078
|
-
wrapperInstances.forEach(function (wrapper) {
|
17079
|
-
// skip child wrappers created by wrapper.find()
|
17080
|
-
if (wrapper.vm || wrapper.isFunctionalComponent) {
|
17081
|
-
wrapper.destroy();
|
17082
|
-
}
|
17083
|
-
});
|
17084
|
-
|
17085
|
-
wrapperInstances.length = 0;
|
17086
|
-
});
|
17087
|
-
}
|
17088
|
-
|
17089
|
-
function trackInstance(wrapper) {
|
17090
|
-
if (!isEnabled) { return }
|
17091
|
-
|
17092
|
-
wrapperInstances.push(wrapper);
|
17093
|
-
}
|
17094
|
-
|
17095
|
-
//
|
17096
|
-
|
17097
17071
|
function createWrapper(
|
17098
17072
|
node,
|
17099
17073
|
options
|
@@ -17103,14 +17077,12 @@ function createWrapper(
|
|
17103
17077
|
var componentInstance = node.child;
|
17104
17078
|
if (componentInstance) {
|
17105
17079
|
var wrapper$1 = new VueWrapper(componentInstance, options);
|
17106
|
-
trackInstance(wrapper$1);
|
17107
17080
|
return wrapper$1
|
17108
17081
|
}
|
17109
17082
|
var wrapper =
|
17110
|
-
node instanceof Vue__default[
|
17083
|
+
node instanceof Vue__default["default"]
|
17111
17084
|
? new VueWrapper(node, options)
|
17112
17085
|
: new Wrapper(node, options);
|
17113
|
-
trackInstance(wrapper);
|
17114
17086
|
return wrapper
|
17115
17087
|
}
|
17116
17088
|
|
@@ -19609,7 +19581,7 @@ function _createLocalVue(
|
|
19609
19581
|
_Vue,
|
19610
19582
|
config
|
19611
19583
|
) {
|
19612
|
-
if ( _Vue === void 0 ) _Vue = Vue__default[
|
19584
|
+
if ( _Vue === void 0 ) _Vue = Vue__default["default"];
|
19613
19585
|
if ( config === void 0 ) config = {};
|
19614
19586
|
|
19615
19587
|
var instance = _Vue.extend();
|
@@ -19631,14 +19603,14 @@ function _createLocalVue(
|
|
19631
19603
|
});
|
19632
19604
|
|
19633
19605
|
// config is not enumerable
|
19634
|
-
instance.config = cloneDeep_1(Vue__default[
|
19606
|
+
instance.config = cloneDeep_1(Vue__default["default"].config);
|
19635
19607
|
|
19636
19608
|
// if a user defined errorHandler is defined by a localVue instance via createLocalVue, register it
|
19637
19609
|
instance.config.errorHandler = config.errorHandler;
|
19638
19610
|
|
19639
19611
|
// option merge strategies need to be exposed by reference
|
19640
19612
|
// so that merge strats registered by plugins can work properly
|
19641
|
-
instance.config.optionMergeStrategies = Vue__default[
|
19613
|
+
instance.config.optionMergeStrategies = Vue__default["default"].config.optionMergeStrategies;
|
19642
19614
|
|
19643
19615
|
// make sure all extends are based on this instance.
|
19644
19616
|
// this is important so that global components registered by plugins,
|
@@ -19759,8 +19731,8 @@ function validateOptions(options, component) {
|
|
19759
19731
|
}
|
19760
19732
|
}
|
19761
19733
|
|
19762
|
-
Vue__default[
|
19763
|
-
Vue__default[
|
19734
|
+
Vue__default["default"].config.productionTip = false;
|
19735
|
+
Vue__default["default"].config.devtools = false;
|
19764
19736
|
|
19765
19737
|
function mount$1(component, options) {
|
19766
19738
|
if ( options === void 0 ) options = {};
|
@@ -19769,7 +19741,7 @@ function mount$1(component, options) {
|
|
19769
19741
|
|
19770
19742
|
polyfill();
|
19771
19743
|
|
19772
|
-
addGlobalErrorHandler(Vue__default[
|
19744
|
+
addGlobalErrorHandler(Vue__default["default"]);
|
19773
19745
|
|
19774
19746
|
var _Vue = _createLocalVue(
|
19775
19747
|
options.localVue,
|
@@ -19815,11 +19787,13 @@ function createLocalVue(config) {
|
|
19815
19787
|
|
19816
19788
|
return _createLocalVue(undefined, config)
|
19817
19789
|
}
|
19818
|
-
var createLocalVue_1 = createLocalVue;
|
19819
|
-
var enableAutoDestroy_1 = enableAutoDestroy;
|
19820
|
-
var mount_1 = mount$1;
|
19821
19790
|
|
19822
19791
|
const ROOT_SELECTOR = '[data-cy-root]';
|
19792
|
+
/**
|
19793
|
+
* Gets the root element used to mount the component.
|
19794
|
+
* @returns {HTMLElement} The root element
|
19795
|
+
* @throws {Error} If the root element is not found
|
19796
|
+
*/
|
19823
19797
|
const getContainerEl = () => {
|
19824
19798
|
const el = document.querySelector(ROOT_SELECTOR);
|
19825
19799
|
if (el) {
|
@@ -19827,122 +19801,19 @@ const getContainerEl = () => {
|
|
19827
19801
|
}
|
19828
19802
|
throw Error(`No element found that matches selector ${ROOT_SELECTOR}. Please add a root element with data-cy-root attribute to your "component-index.html" file so that Cypress can attach your component to the DOM.`);
|
19829
19803
|
};
|
19830
|
-
|
19831
|
-
|
19832
|
-
|
19833
|
-
|
19834
|
-
*/
|
19835
|
-
function cleanupStyles() {
|
19836
|
-
const styles = document.body.querySelectorAll('[data-cy=injected-style-tag]');
|
19837
|
-
styles.forEach((styleElement) => {
|
19838
|
-
if (styleElement.parentElement) {
|
19839
|
-
styleElement.parentElement.removeChild(styleElement);
|
19840
|
-
}
|
19841
|
-
});
|
19842
|
-
const links = document.body.querySelectorAll('[data-cy=injected-stylesheet]');
|
19843
|
-
links.forEach((link) => {
|
19844
|
-
if (link.parentElement) {
|
19845
|
-
link.parentElement.removeChild(link);
|
19804
|
+
function checkForRemovedStyleOptions(mountingOptions) {
|
19805
|
+
for (const key of ['cssFile', 'cssFiles', 'style', 'styles', 'stylesheet', 'stylesheets']) {
|
19806
|
+
if (mountingOptions[key]) {
|
19807
|
+
Cypress.utils.throwErrByPath('mount.removed_style_mounting_options', key);
|
19846
19808
|
}
|
19847
|
-
}
|
19848
|
-
}
|
19849
|
-
/**
|
19850
|
-
* Insert links to external style resources.
|
19851
|
-
*/
|
19852
|
-
function insertStylesheets(stylesheets, document, el) {
|
19853
|
-
stylesheets.forEach((href) => {
|
19854
|
-
const link = document.createElement('link');
|
19855
|
-
link.type = 'text/css';
|
19856
|
-
link.rel = 'stylesheet';
|
19857
|
-
link.href = href;
|
19858
|
-
link.dataset.cy = 'injected-stylesheet';
|
19859
|
-
document.body.insertBefore(link, el);
|
19860
|
-
});
|
19861
|
-
}
|
19862
|
-
/**
|
19863
|
-
* Inserts a single stylesheet element
|
19864
|
-
*/
|
19865
|
-
function insertStyles(styles, document, el) {
|
19866
|
-
styles.forEach((style) => {
|
19867
|
-
const styleElement = document.createElement('style');
|
19868
|
-
styleElement.dataset.cy = 'injected-style-tag';
|
19869
|
-
styleElement.appendChild(document.createTextNode(style));
|
19870
|
-
document.body.insertBefore(styleElement, el);
|
19871
|
-
});
|
19872
|
-
}
|
19873
|
-
function insertSingleCssFile(cssFilename, document, el, log) {
|
19874
|
-
return cy.readFile(cssFilename, { log }).then((css) => {
|
19875
|
-
const style = document.createElement('style');
|
19876
|
-
style.appendChild(document.createTextNode(css));
|
19877
|
-
document.body.insertBefore(style, el);
|
19878
|
-
});
|
19879
|
-
}
|
19880
|
-
/**
|
19881
|
-
* Reads the given CSS file from local file system
|
19882
|
-
* and adds the loaded style text as an element.
|
19883
|
-
*/
|
19884
|
-
function insertLocalCssFiles(cssFilenames, document, el, log) {
|
19885
|
-
return Cypress.Promise.mapSeries(cssFilenames, (cssFilename) => {
|
19886
|
-
return insertSingleCssFile(cssFilename, document, el, log);
|
19887
|
-
});
|
19809
|
+
}
|
19888
19810
|
}
|
19889
19811
|
/**
|
19890
|
-
*
|
19891
|
-
*
|
19812
|
+
* Utility function to register CT side effects and run cleanup code during the "test:before:run" Cypress hook
|
19813
|
+
* @param optionalCallback Callback to be called before the next test runs
|
19892
19814
|
*/
|
19893
|
-
const injectStylesBeforeElement = (options, document, el) => {
|
19894
|
-
if (!el)
|
19895
|
-
return;
|
19896
|
-
// first insert all stylesheets as Link elements
|
19897
|
-
let stylesheets = [];
|
19898
|
-
if (typeof options.stylesheet === 'string') {
|
19899
|
-
stylesheets.push(options.stylesheet);
|
19900
|
-
}
|
19901
|
-
else if (Array.isArray(options.stylesheet)) {
|
19902
|
-
stylesheets = stylesheets.concat(options.stylesheet);
|
19903
|
-
}
|
19904
|
-
if (typeof options.stylesheets === 'string') {
|
19905
|
-
options.stylesheets = [options.stylesheets];
|
19906
|
-
}
|
19907
|
-
if (options.stylesheets) {
|
19908
|
-
stylesheets = stylesheets.concat(options.stylesheets);
|
19909
|
-
}
|
19910
|
-
insertStylesheets(stylesheets, document, el);
|
19911
|
-
// insert any styles as <style>...</style> elements
|
19912
|
-
let styles = [];
|
19913
|
-
if (typeof options.style === 'string') {
|
19914
|
-
styles.push(options.style);
|
19915
|
-
}
|
19916
|
-
else if (Array.isArray(options.style)) {
|
19917
|
-
styles = styles.concat(options.style);
|
19918
|
-
}
|
19919
|
-
if (typeof options.styles === 'string') {
|
19920
|
-
styles.push(options.styles);
|
19921
|
-
}
|
19922
|
-
else if (Array.isArray(options.styles)) {
|
19923
|
-
styles = styles.concat(options.styles);
|
19924
|
-
}
|
19925
|
-
insertStyles(styles, document, el);
|
19926
|
-
// now load any css files by path and add their content
|
19927
|
-
// as <style>...</style> elements
|
19928
|
-
let cssFiles = [];
|
19929
|
-
if (typeof options.cssFile === 'string') {
|
19930
|
-
cssFiles.push(options.cssFile);
|
19931
|
-
}
|
19932
|
-
else if (Array.isArray(options.cssFile)) {
|
19933
|
-
cssFiles = cssFiles.concat(options.cssFile);
|
19934
|
-
}
|
19935
|
-
if (typeof options.cssFiles === 'string') {
|
19936
|
-
cssFiles.push(options.cssFiles);
|
19937
|
-
}
|
19938
|
-
else if (Array.isArray(options.cssFiles)) {
|
19939
|
-
cssFiles = cssFiles.concat(options.cssFiles);
|
19940
|
-
}
|
19941
|
-
return insertLocalCssFiles(cssFiles, document, el, options.log);
|
19942
|
-
};
|
19943
19815
|
function setupHooks(optionalCallback) {
|
19944
|
-
//
|
19945
|
-
// file that is imported by e2e and component support files by default. We don't want CT side effects to run when e2e
|
19816
|
+
// We don't want CT side effects to run when e2e
|
19946
19817
|
// testing so we early return.
|
19947
19818
|
// System test to verify CT side effects do not pollute e2e: system-tests/test/e2e_with_mount_import_spec.ts
|
19948
19819
|
if (Cypress.testingType !== 'component') {
|
@@ -19957,10 +19828,10 @@ function setupHooks(optionalCallback) {
|
|
19957
19828
|
// @ts-ignore
|
19958
19829
|
Cypress.on('test:before:run', () => {
|
19959
19830
|
optionalCallback === null || optionalCallback === void 0 ? void 0 : optionalCallback();
|
19960
|
-
cleanupStyles();
|
19961
19831
|
});
|
19962
19832
|
}
|
19963
19833
|
|
19834
|
+
/// <reference types="cypress" />
|
19964
19835
|
const defaultOptions = [
|
19965
19836
|
'vue',
|
19966
19837
|
'extensions',
|
@@ -20027,6 +19898,10 @@ const resetStoreVM = (Vue, { store }) => {
|
|
20027
19898
|
});
|
20028
19899
|
return store;
|
20029
19900
|
};
|
19901
|
+
const cleanup = () => {
|
19902
|
+
var _a;
|
19903
|
+
(_a = Cypress.vueWrapper) === null || _a === void 0 ? void 0 : _a.destroy();
|
19904
|
+
};
|
20030
19905
|
/**
|
20031
19906
|
* Direct Vue errors to the top error handler
|
20032
19907
|
* where they will fail Cypress test
|
@@ -20040,15 +19915,6 @@ function failTestOnVueError(err, vm, info) {
|
|
20040
19915
|
throw err;
|
20041
19916
|
});
|
20042
19917
|
}
|
20043
|
-
function registerAutoDestroy($destroy) {
|
20044
|
-
Cypress.on('test:before:run', () => {
|
20045
|
-
$destroy();
|
20046
|
-
});
|
20047
|
-
}
|
20048
|
-
enableAutoDestroy_1(registerAutoDestroy);
|
20049
|
-
const injectStyles = (options) => {
|
20050
|
-
return injectStylesBeforeElement(options, document, getContainerEl());
|
20051
|
-
};
|
20052
19918
|
/**
|
20053
19919
|
* Extract the component name from the object passed to mount
|
20054
19920
|
* @param componentOptions the compoennt passed to mount
|
@@ -20071,18 +19937,25 @@ function getComponentDisplayName(componentOptions) {
|
|
20071
19937
|
}
|
20072
19938
|
/**
|
20073
19939
|
* Mounts a Vue component inside Cypress browser.
|
20074
|
-
* @param {
|
19940
|
+
* @param {VueComponent} component imported from Vue file
|
19941
|
+
* @param {MountOptionsArgument} optionsOrProps used to pass options to component being mounted
|
19942
|
+
* @returns {Cypress.Chainable<{wrapper: Wrapper<T>, component: T}
|
20075
19943
|
* @example
|
20076
|
-
*
|
20077
|
-
*
|
20078
|
-
*
|
20079
|
-
*
|
20080
|
-
*
|
20081
|
-
*
|
20082
|
-
*
|
20083
|
-
*
|
19944
|
+
* import { mount } from '@cypress/vue'
|
19945
|
+
* import { Stepper } from './Stepper.vue'
|
19946
|
+
*
|
19947
|
+
* it('mounts', () => {
|
19948
|
+
* cy.mount(Stepper)
|
19949
|
+
* cy.get('[data-cy=increment]').click()
|
19950
|
+
* cy.get('[data-cy=counter]').should('have.text', '1')
|
19951
|
+
* })
|
19952
|
+
* @see {@link https://on.cypress.io/mounting-vue} for more details.
|
19953
|
+
*
|
20084
19954
|
*/
|
20085
19955
|
const mount = (component, optionsOrProps = {}) => {
|
19956
|
+
checkForRemovedStyleOptions(optionsOrProps);
|
19957
|
+
// Remove last mounted component if cy.mount is called more than once in a test
|
19958
|
+
cleanup();
|
20086
19959
|
const options = Cypress._.pick(optionsOrProps, defaultOptions);
|
20087
19960
|
const props = Cypress._.omit(optionsOrProps, defaultOptions);
|
20088
19961
|
const componentName = getComponentDisplayName(component);
|
@@ -20090,26 +19963,9 @@ const mount = (component, optionsOrProps = {}) => {
|
|
20090
19963
|
return cy
|
20091
19964
|
.window({
|
20092
19965
|
log: false,
|
20093
|
-
})
|
20094
|
-
.then(() => {
|
20095
|
-
const { style, stylesheets, stylesheet, styles, cssFiles, cssFile } = optionsOrProps;
|
20096
|
-
injectStyles({
|
20097
|
-
style,
|
20098
|
-
stylesheets,
|
20099
|
-
stylesheet,
|
20100
|
-
styles,
|
20101
|
-
cssFiles,
|
20102
|
-
cssFile,
|
20103
|
-
});
|
20104
19966
|
})
|
20105
19967
|
.then((win) => {
|
20106
|
-
|
20107
|
-
Cypress.log({
|
20108
|
-
name: 'mount',
|
20109
|
-
message: [message],
|
20110
|
-
}).snapshot('mounted').end();
|
20111
|
-
}
|
20112
|
-
const localVue = createLocalVue_1();
|
19968
|
+
const localVue = createLocalVue();
|
20113
19969
|
// @ts-ignore
|
20114
19970
|
win.Vue = localVue;
|
20115
19971
|
localVue.config.errorHandler = failTestOnVueError;
|
@@ -20135,9 +19991,23 @@ const mount = (component, optionsOrProps = {}) => {
|
|
20135
19991
|
registerGlobalComponents(localVue, options);
|
20136
19992
|
props.attachTo = componentNode;
|
20137
19993
|
const wrapper = localVue.extend(component);
|
20138
|
-
const VTUWrapper =
|
19994
|
+
const VTUWrapper = mount$1(wrapper, Object.assign({ localVue }, props));
|
20139
19995
|
Cypress.vue = VTUWrapper.vm;
|
20140
19996
|
Cypress.vueWrapper = VTUWrapper;
|
19997
|
+
return {
|
19998
|
+
wrapper: VTUWrapper,
|
19999
|
+
component: VTUWrapper.vm,
|
20000
|
+
};
|
20001
|
+
})
|
20002
|
+
.then(() => {
|
20003
|
+
if (optionsOrProps.log !== false) {
|
20004
|
+
return Vue__default["default"].nextTick(() => {
|
20005
|
+
Cypress.log({
|
20006
|
+
name: 'mount',
|
20007
|
+
message: [message],
|
20008
|
+
});
|
20009
|
+
});
|
20010
|
+
}
|
20141
20011
|
});
|
20142
20012
|
};
|
20143
20013
|
/**
|
@@ -20145,9 +20015,15 @@ const mount = (component, optionsOrProps = {}) => {
|
|
20145
20015
|
* @example
|
20146
20016
|
* import {mountCallback} from '@cypress/vue2'
|
20147
20017
|
* beforeEach(mountVue(component, options))
|
20018
|
+
*
|
20019
|
+
* Removed as of Cypress 11.0.0.
|
20020
|
+
* @see https://on.cypress.io/migration-11-0-0-component-testing-updates
|
20148
20021
|
*/
|
20149
20022
|
const mountCallback = (component, options) => {
|
20150
|
-
return () =>
|
20023
|
+
return () => {
|
20024
|
+
// @ts-expect-error - undocumented API
|
20025
|
+
Cypress.utils.throwErrByPath('mount.mount_callback');
|
20026
|
+
};
|
20151
20027
|
};
|
20152
20028
|
// Side effects from "import { mount } from '@cypress/<my-framework>'" are annoying, we should avoid doing this
|
20153
20029
|
// by creating an explicit function/import that the user can register in their 'component.js' support file,
|
@@ -20157,7 +20033,7 @@ const mountCallback = (component, options) => {
|
|
20157
20033
|
// import { registerCT } from 'cypress/<my-framework>'
|
20158
20034
|
// registerCT()
|
20159
20035
|
// Note: This would be a breaking change
|
20160
|
-
setupHooks();
|
20036
|
+
setupHooks(cleanup);
|
20161
20037
|
|
20162
20038
|
exports.mount = mount;
|
20163
20039
|
exports.mountCallback = mountCallback;
|