cypress 10.11.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 +20 -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 +14 -0
- 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 +3 -3
- package/react/CHANGELOG.md +27 -0
- 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 +13 -0
- 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.d.ts +18 -10
- package/vue/CHANGELOG.md +34 -0
- package/vue/README.md +4 -8
- package/vue/dist/cypress-vue.cjs.js +68 -151
- package/vue/dist/cypress-vue.esm-bundler.js +68 -151
- package/vue/dist/index.d.ts +1352 -104
- package/vue/package.json +1 -1
- package/vue2/CHANGELOG.md +27 -0
- 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
@@ -5,7 +5,7 @@
|
|
5
5
|
* Released under the MIT License
|
6
6
|
*/
|
7
7
|
|
8
|
-
import
|
8
|
+
import Vue from 'vue';
|
9
9
|
|
10
10
|
var commonjsGlobal$1 = typeof globalThis !== 'undefined' ? globalThis : typeof window !== 'undefined' ? window : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {};
|
11
11
|
|
@@ -5729,15 +5729,11 @@ var build = /*#__PURE__*/Object.defineProperty({
|
|
5729
5729
|
}, '__esModule', {value: true});
|
5730
5730
|
|
5731
5731
|
try {
|
5732
|
-
var vueVersion =
|
5732
|
+
var vueVersion = Vue.version;
|
5733
5733
|
} catch (e) {}
|
5734
5734
|
|
5735
5735
|
var vueTemplateCompiler = build;
|
5736
5736
|
|
5737
|
-
function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
|
5738
|
-
|
5739
|
-
var Vue__default = /*#__PURE__*/_interopDefaultLegacy(require$$0$1);
|
5740
|
-
|
5741
5737
|
//
|
5742
5738
|
|
5743
5739
|
function createVNodes(vm, slotValue, name) {
|
@@ -5783,7 +5779,7 @@ function createSlotVNodes(
|
|
5783
5779
|
}, [])
|
5784
5780
|
}
|
5785
5781
|
|
5786
|
-
var commonjsGlobal = typeof globalThis !== 'undefined' ? globalThis : typeof window !== 'undefined' ? window : typeof
|
5782
|
+
var commonjsGlobal = typeof globalThis !== 'undefined' ? globalThis : typeof window !== 'undefined' ? window : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {};
|
5787
5783
|
|
5788
5784
|
function createCommonjsModule(fn, basedir, module) {
|
5789
5785
|
return module = {
|
@@ -7409,17 +7405,17 @@ var DOM_SELECTOR = 'DOM_SELECTOR';
|
|
7409
7405
|
var INVALID_SELECTOR = 'INVALID_SELECTOR';
|
7410
7406
|
|
7411
7407
|
var VUE_VERSION = Number(
|
7412
|
-
((
|
7408
|
+
((Vue.version.split('.')[0]) + "." + (Vue.version.split('.')[1]))
|
7413
7409
|
);
|
7414
7410
|
|
7415
7411
|
var FUNCTIONAL_OPTIONS =
|
7416
7412
|
VUE_VERSION >= 2.5 ? 'fnOptions' : 'functionalOptions';
|
7417
7413
|
|
7418
|
-
var BEFORE_RENDER_LIFECYCLE_HOOK = semver.gt(
|
7414
|
+
var BEFORE_RENDER_LIFECYCLE_HOOK = semver.gt(Vue.version, '2.1.8')
|
7419
7415
|
? 'beforeCreate'
|
7420
7416
|
: 'beforeMount';
|
7421
7417
|
|
7422
|
-
var CREATE_ELEMENT_ALIAS = semver.gt(
|
7418
|
+
var CREATE_ELEMENT_ALIAS = semver.gt(Vue.version, '2.1.5')
|
7423
7419
|
? '_c'
|
7424
7420
|
: '_h';
|
7425
7421
|
|
@@ -7493,7 +7489,7 @@ var isChrome = UA && /chrome\/\d+/.test(UA) && !isEdge;
|
|
7493
7489
|
|
7494
7490
|
// get the event used to trigger v-model handler that updates bound data
|
7495
7491
|
function getCheckedEvent() {
|
7496
|
-
var version =
|
7492
|
+
var version = Vue.version;
|
7497
7493
|
|
7498
7494
|
if (semver.satisfies(version, '2.1.9 - 2.1.10')) {
|
7499
7495
|
return 'click'
|
@@ -7513,9 +7509,9 @@ function getCheckedEvent() {
|
|
7513
7509
|
* @return {Promise<R>}
|
7514
7510
|
*/
|
7515
7511
|
function nextTick() {
|
7516
|
-
if (VUE_VERSION > 2) { return
|
7512
|
+
if (VUE_VERSION > 2) { return Vue.nextTick() }
|
7517
7513
|
return new Promise(function (resolve) {
|
7518
|
-
|
7514
|
+
Vue.nextTick(resolve);
|
7519
7515
|
})
|
7520
7516
|
}
|
7521
7517
|
|
@@ -7559,7 +7555,7 @@ function addMocks(
|
|
7559
7555
|
);
|
7560
7556
|
}
|
7561
7557
|
// $FlowIgnore
|
7562
|
-
|
7558
|
+
Vue.util.defineReactive(_Vue, key, mockedProperties[key]);
|
7563
7559
|
});
|
7564
7560
|
}
|
7565
7561
|
|
@@ -8060,8 +8056,8 @@ function createStubFromComponent(
|
|
8060
8056
|
var tagName = (name || 'anonymous') + "-stub";
|
8061
8057
|
|
8062
8058
|
// ignoreElements does not exist in Vue 2.0.x
|
8063
|
-
if (
|
8064
|
-
|
8059
|
+
if (Vue.config.ignoredElements) {
|
8060
|
+
Vue.config.ignoredElements.push(tagName);
|
8065
8061
|
}
|
8066
8062
|
|
8067
8063
|
return Object.assign({}, getCoreProperties(componentOptions),
|
@@ -14748,7 +14744,15 @@ ErrorWrapper.prototype.destroy = function destroy () {
|
|
14748
14744
|
*/
|
14749
14745
|
|
14750
14746
|
function isStyleVisible(element) {
|
14751
|
-
|
14747
|
+
if (!(element instanceof HTMLElement) && !(element instanceof SVGElement)) {
|
14748
|
+
return false
|
14749
|
+
}
|
14750
|
+
|
14751
|
+
// Per https://lists.w3.org/Archives/Public/www-style/2018May/0031.html
|
14752
|
+
// getComputedStyle should only work with connected elements.
|
14753
|
+
var ref = element.isConnected
|
14754
|
+
? getComputedStyle(element)
|
14755
|
+
: element.style;
|
14752
14756
|
var display = ref.display;
|
14753
14757
|
var visibility = ref.visibility;
|
14754
14758
|
var opacity = ref.opacity;
|
@@ -17056,36 +17060,6 @@ var VueWrapper = /*@__PURE__*/(function (Wrapper) {
|
|
17056
17060
|
|
17057
17061
|
//
|
17058
17062
|
|
17059
|
-
var isEnabled = false;
|
17060
|
-
var wrapperInstances = [];
|
17061
|
-
|
17062
|
-
function enableAutoDestroy(hook) {
|
17063
|
-
if (isEnabled) {
|
17064
|
-
throwError('enableAutoDestroy cannot be called more than once');
|
17065
|
-
}
|
17066
|
-
|
17067
|
-
isEnabled = true;
|
17068
|
-
|
17069
|
-
hook(function () {
|
17070
|
-
wrapperInstances.forEach(function (wrapper) {
|
17071
|
-
// skip child wrappers created by wrapper.find()
|
17072
|
-
if (wrapper.vm || wrapper.isFunctionalComponent) {
|
17073
|
-
wrapper.destroy();
|
17074
|
-
}
|
17075
|
-
});
|
17076
|
-
|
17077
|
-
wrapperInstances.length = 0;
|
17078
|
-
});
|
17079
|
-
}
|
17080
|
-
|
17081
|
-
function trackInstance(wrapper) {
|
17082
|
-
if (!isEnabled) { return }
|
17083
|
-
|
17084
|
-
wrapperInstances.push(wrapper);
|
17085
|
-
}
|
17086
|
-
|
17087
|
-
//
|
17088
|
-
|
17089
17063
|
function createWrapper(
|
17090
17064
|
node,
|
17091
17065
|
options
|
@@ -17095,14 +17069,12 @@ function createWrapper(
|
|
17095
17069
|
var componentInstance = node.child;
|
17096
17070
|
if (componentInstance) {
|
17097
17071
|
var wrapper$1 = new VueWrapper(componentInstance, options);
|
17098
|
-
trackInstance(wrapper$1);
|
17099
17072
|
return wrapper$1
|
17100
17073
|
}
|
17101
17074
|
var wrapper =
|
17102
|
-
node instanceof
|
17075
|
+
node instanceof Vue
|
17103
17076
|
? new VueWrapper(node, options)
|
17104
17077
|
: new Wrapper(node, options);
|
17105
|
-
trackInstance(wrapper);
|
17106
17078
|
return wrapper
|
17107
17079
|
}
|
17108
17080
|
|
@@ -19601,7 +19573,7 @@ function _createLocalVue(
|
|
19601
19573
|
_Vue,
|
19602
19574
|
config
|
19603
19575
|
) {
|
19604
|
-
if ( _Vue === void 0 ) _Vue =
|
19576
|
+
if ( _Vue === void 0 ) _Vue = Vue;
|
19605
19577
|
if ( config === void 0 ) config = {};
|
19606
19578
|
|
19607
19579
|
var instance = _Vue.extend();
|
@@ -19623,14 +19595,14 @@ function _createLocalVue(
|
|
19623
19595
|
});
|
19624
19596
|
|
19625
19597
|
// config is not enumerable
|
19626
|
-
instance.config = cloneDeep_1(
|
19598
|
+
instance.config = cloneDeep_1(Vue.config);
|
19627
19599
|
|
19628
19600
|
// if a user defined errorHandler is defined by a localVue instance via createLocalVue, register it
|
19629
19601
|
instance.config.errorHandler = config.errorHandler;
|
19630
19602
|
|
19631
19603
|
// option merge strategies need to be exposed by reference
|
19632
19604
|
// so that merge strats registered by plugins can work properly
|
19633
|
-
instance.config.optionMergeStrategies =
|
19605
|
+
instance.config.optionMergeStrategies = Vue.config.optionMergeStrategies;
|
19634
19606
|
|
19635
19607
|
// make sure all extends are based on this instance.
|
19636
19608
|
// this is important so that global components registered by plugins,
|
@@ -19751,8 +19723,8 @@ function validateOptions(options, component) {
|
|
19751
19723
|
}
|
19752
19724
|
}
|
19753
19725
|
|
19754
|
-
|
19755
|
-
|
19726
|
+
Vue.config.productionTip = false;
|
19727
|
+
Vue.config.devtools = false;
|
19756
19728
|
|
19757
19729
|
function mount$1(component, options) {
|
19758
19730
|
if ( options === void 0 ) options = {};
|
@@ -19761,7 +19733,7 @@ function mount$1(component, options) {
|
|
19761
19733
|
|
19762
19734
|
polyfill();
|
19763
19735
|
|
19764
|
-
addGlobalErrorHandler(
|
19736
|
+
addGlobalErrorHandler(Vue);
|
19765
19737
|
|
19766
19738
|
var _Vue = _createLocalVue(
|
19767
19739
|
options.localVue,
|
@@ -19807,11 +19779,13 @@ function createLocalVue(config) {
|
|
19807
19779
|
|
19808
19780
|
return _createLocalVue(undefined, config)
|
19809
19781
|
}
|
19810
|
-
var createLocalVue_1 = createLocalVue;
|
19811
|
-
var enableAutoDestroy_1 = enableAutoDestroy;
|
19812
|
-
var mount_1 = mount$1;
|
19813
19782
|
|
19814
19783
|
const ROOT_SELECTOR = '[data-cy-root]';
|
19784
|
+
/**
|
19785
|
+
* Gets the root element used to mount the component.
|
19786
|
+
* @returns {HTMLElement} The root element
|
19787
|
+
* @throws {Error} If the root element is not found
|
19788
|
+
*/
|
19815
19789
|
const getContainerEl = () => {
|
19816
19790
|
const el = document.querySelector(ROOT_SELECTOR);
|
19817
19791
|
if (el) {
|
@@ -19819,122 +19793,19 @@ const getContainerEl = () => {
|
|
19819
19793
|
}
|
19820
19794
|
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.`);
|
19821
19795
|
};
|
19822
|
-
|
19823
|
-
|
19824
|
-
|
19825
|
-
|
19826
|
-
*/
|
19827
|
-
function cleanupStyles() {
|
19828
|
-
const styles = document.body.querySelectorAll('[data-cy=injected-style-tag]');
|
19829
|
-
styles.forEach((styleElement) => {
|
19830
|
-
if (styleElement.parentElement) {
|
19831
|
-
styleElement.parentElement.removeChild(styleElement);
|
19832
|
-
}
|
19833
|
-
});
|
19834
|
-
const links = document.body.querySelectorAll('[data-cy=injected-stylesheet]');
|
19835
|
-
links.forEach((link) => {
|
19836
|
-
if (link.parentElement) {
|
19837
|
-
link.parentElement.removeChild(link);
|
19796
|
+
function checkForRemovedStyleOptions(mountingOptions) {
|
19797
|
+
for (const key of ['cssFile', 'cssFiles', 'style', 'styles', 'stylesheet', 'stylesheets']) {
|
19798
|
+
if (mountingOptions[key]) {
|
19799
|
+
Cypress.utils.throwErrByPath('mount.removed_style_mounting_options', key);
|
19838
19800
|
}
|
19839
|
-
}
|
19840
|
-
}
|
19841
|
-
/**
|
19842
|
-
* Insert links to external style resources.
|
19843
|
-
*/
|
19844
|
-
function insertStylesheets(stylesheets, document, el) {
|
19845
|
-
stylesheets.forEach((href) => {
|
19846
|
-
const link = document.createElement('link');
|
19847
|
-
link.type = 'text/css';
|
19848
|
-
link.rel = 'stylesheet';
|
19849
|
-
link.href = href;
|
19850
|
-
link.dataset.cy = 'injected-stylesheet';
|
19851
|
-
document.body.insertBefore(link, el);
|
19852
|
-
});
|
19853
|
-
}
|
19854
|
-
/**
|
19855
|
-
* Inserts a single stylesheet element
|
19856
|
-
*/
|
19857
|
-
function insertStyles(styles, document, el) {
|
19858
|
-
styles.forEach((style) => {
|
19859
|
-
const styleElement = document.createElement('style');
|
19860
|
-
styleElement.dataset.cy = 'injected-style-tag';
|
19861
|
-
styleElement.appendChild(document.createTextNode(style));
|
19862
|
-
document.body.insertBefore(styleElement, el);
|
19863
|
-
});
|
19864
|
-
}
|
19865
|
-
function insertSingleCssFile(cssFilename, document, el, log) {
|
19866
|
-
return cy.readFile(cssFilename, { log }).then((css) => {
|
19867
|
-
const style = document.createElement('style');
|
19868
|
-
style.appendChild(document.createTextNode(css));
|
19869
|
-
document.body.insertBefore(style, el);
|
19870
|
-
});
|
19871
|
-
}
|
19872
|
-
/**
|
19873
|
-
* Reads the given CSS file from local file system
|
19874
|
-
* and adds the loaded style text as an element.
|
19875
|
-
*/
|
19876
|
-
function insertLocalCssFiles(cssFilenames, document, el, log) {
|
19877
|
-
return Cypress.Promise.mapSeries(cssFilenames, (cssFilename) => {
|
19878
|
-
return insertSingleCssFile(cssFilename, document, el, log);
|
19879
|
-
});
|
19801
|
+
}
|
19880
19802
|
}
|
19881
19803
|
/**
|
19882
|
-
*
|
19883
|
-
*
|
19804
|
+
* Utility function to register CT side effects and run cleanup code during the "test:before:run" Cypress hook
|
19805
|
+
* @param optionalCallback Callback to be called before the next test runs
|
19884
19806
|
*/
|
19885
|
-
const injectStylesBeforeElement = (options, document, el) => {
|
19886
|
-
if (!el)
|
19887
|
-
return;
|
19888
|
-
// first insert all stylesheets as Link elements
|
19889
|
-
let stylesheets = [];
|
19890
|
-
if (typeof options.stylesheet === 'string') {
|
19891
|
-
stylesheets.push(options.stylesheet);
|
19892
|
-
}
|
19893
|
-
else if (Array.isArray(options.stylesheet)) {
|
19894
|
-
stylesheets = stylesheets.concat(options.stylesheet);
|
19895
|
-
}
|
19896
|
-
if (typeof options.stylesheets === 'string') {
|
19897
|
-
options.stylesheets = [options.stylesheets];
|
19898
|
-
}
|
19899
|
-
if (options.stylesheets) {
|
19900
|
-
stylesheets = stylesheets.concat(options.stylesheets);
|
19901
|
-
}
|
19902
|
-
insertStylesheets(stylesheets, document, el);
|
19903
|
-
// insert any styles as <style>...</style> elements
|
19904
|
-
let styles = [];
|
19905
|
-
if (typeof options.style === 'string') {
|
19906
|
-
styles.push(options.style);
|
19907
|
-
}
|
19908
|
-
else if (Array.isArray(options.style)) {
|
19909
|
-
styles = styles.concat(options.style);
|
19910
|
-
}
|
19911
|
-
if (typeof options.styles === 'string') {
|
19912
|
-
styles.push(options.styles);
|
19913
|
-
}
|
19914
|
-
else if (Array.isArray(options.styles)) {
|
19915
|
-
styles = styles.concat(options.styles);
|
19916
|
-
}
|
19917
|
-
insertStyles(styles, document, el);
|
19918
|
-
// now load any css files by path and add their content
|
19919
|
-
// as <style>...</style> elements
|
19920
|
-
let cssFiles = [];
|
19921
|
-
if (typeof options.cssFile === 'string') {
|
19922
|
-
cssFiles.push(options.cssFile);
|
19923
|
-
}
|
19924
|
-
else if (Array.isArray(options.cssFile)) {
|
19925
|
-
cssFiles = cssFiles.concat(options.cssFile);
|
19926
|
-
}
|
19927
|
-
if (typeof options.cssFiles === 'string') {
|
19928
|
-
cssFiles.push(options.cssFiles);
|
19929
|
-
}
|
19930
|
-
else if (Array.isArray(options.cssFiles)) {
|
19931
|
-
cssFiles = cssFiles.concat(options.cssFiles);
|
19932
|
-
}
|
19933
|
-
return insertLocalCssFiles(cssFiles, document, el, options.log);
|
19934
|
-
};
|
19935
19807
|
function setupHooks(optionalCallback) {
|
19936
|
-
//
|
19937
|
-
// file that is imported by e2e and component support files by default. We don't want CT side effects to run when e2e
|
19808
|
+
// We don't want CT side effects to run when e2e
|
19938
19809
|
// testing so we early return.
|
19939
19810
|
// System test to verify CT side effects do not pollute e2e: system-tests/test/e2e_with_mount_import_spec.ts
|
19940
19811
|
if (Cypress.testingType !== 'component') {
|
@@ -19949,10 +19820,10 @@ function setupHooks(optionalCallback) {
|
|
19949
19820
|
// @ts-ignore
|
19950
19821
|
Cypress.on('test:before:run', () => {
|
19951
19822
|
optionalCallback === null || optionalCallback === void 0 ? void 0 : optionalCallback();
|
19952
|
-
cleanupStyles();
|
19953
19823
|
});
|
19954
19824
|
}
|
19955
19825
|
|
19826
|
+
/// <reference types="cypress" />
|
19956
19827
|
const defaultOptions = [
|
19957
19828
|
'vue',
|
19958
19829
|
'extensions',
|
@@ -20019,6 +19890,10 @@ const resetStoreVM = (Vue, { store }) => {
|
|
20019
19890
|
});
|
20020
19891
|
return store;
|
20021
19892
|
};
|
19893
|
+
const cleanup = () => {
|
19894
|
+
var _a;
|
19895
|
+
(_a = Cypress.vueWrapper) === null || _a === void 0 ? void 0 : _a.destroy();
|
19896
|
+
};
|
20022
19897
|
/**
|
20023
19898
|
* Direct Vue errors to the top error handler
|
20024
19899
|
* where they will fail Cypress test
|
@@ -20032,15 +19907,6 @@ function failTestOnVueError(err, vm, info) {
|
|
20032
19907
|
throw err;
|
20033
19908
|
});
|
20034
19909
|
}
|
20035
|
-
function registerAutoDestroy($destroy) {
|
20036
|
-
Cypress.on('test:before:run', () => {
|
20037
|
-
$destroy();
|
20038
|
-
});
|
20039
|
-
}
|
20040
|
-
enableAutoDestroy_1(registerAutoDestroy);
|
20041
|
-
const injectStyles = (options) => {
|
20042
|
-
return injectStylesBeforeElement(options, document, getContainerEl());
|
20043
|
-
};
|
20044
19910
|
/**
|
20045
19911
|
* Extract the component name from the object passed to mount
|
20046
19912
|
* @param componentOptions the compoennt passed to mount
|
@@ -20063,18 +19929,25 @@ function getComponentDisplayName(componentOptions) {
|
|
20063
19929
|
}
|
20064
19930
|
/**
|
20065
19931
|
* Mounts a Vue component inside Cypress browser.
|
20066
|
-
* @param {
|
19932
|
+
* @param {VueComponent} component imported from Vue file
|
19933
|
+
* @param {MountOptionsArgument} optionsOrProps used to pass options to component being mounted
|
19934
|
+
* @returns {Cypress.Chainable<{wrapper: Wrapper<T>, component: T}
|
20067
19935
|
* @example
|
20068
|
-
*
|
20069
|
-
*
|
20070
|
-
*
|
20071
|
-
*
|
20072
|
-
*
|
20073
|
-
*
|
20074
|
-
*
|
20075
|
-
*
|
19936
|
+
* import { mount } from '@cypress/vue'
|
19937
|
+
* import { Stepper } from './Stepper.vue'
|
19938
|
+
*
|
19939
|
+
* it('mounts', () => {
|
19940
|
+
* cy.mount(Stepper)
|
19941
|
+
* cy.get('[data-cy=increment]').click()
|
19942
|
+
* cy.get('[data-cy=counter]').should('have.text', '1')
|
19943
|
+
* })
|
19944
|
+
* @see {@link https://on.cypress.io/mounting-vue} for more details.
|
19945
|
+
*
|
20076
19946
|
*/
|
20077
19947
|
const mount = (component, optionsOrProps = {}) => {
|
19948
|
+
checkForRemovedStyleOptions(optionsOrProps);
|
19949
|
+
// Remove last mounted component if cy.mount is called more than once in a test
|
19950
|
+
cleanup();
|
20078
19951
|
const options = Cypress._.pick(optionsOrProps, defaultOptions);
|
20079
19952
|
const props = Cypress._.omit(optionsOrProps, defaultOptions);
|
20080
19953
|
const componentName = getComponentDisplayName(component);
|
@@ -20082,26 +19955,9 @@ const mount = (component, optionsOrProps = {}) => {
|
|
20082
19955
|
return cy
|
20083
19956
|
.window({
|
20084
19957
|
log: false,
|
20085
|
-
})
|
20086
|
-
.then(() => {
|
20087
|
-
const { style, stylesheets, stylesheet, styles, cssFiles, cssFile } = optionsOrProps;
|
20088
|
-
injectStyles({
|
20089
|
-
style,
|
20090
|
-
stylesheets,
|
20091
|
-
stylesheet,
|
20092
|
-
styles,
|
20093
|
-
cssFiles,
|
20094
|
-
cssFile,
|
20095
|
-
});
|
20096
19958
|
})
|
20097
19959
|
.then((win) => {
|
20098
|
-
|
20099
|
-
Cypress.log({
|
20100
|
-
name: 'mount',
|
20101
|
-
message: [message],
|
20102
|
-
}).snapshot('mounted').end();
|
20103
|
-
}
|
20104
|
-
const localVue = createLocalVue_1();
|
19960
|
+
const localVue = createLocalVue();
|
20105
19961
|
// @ts-ignore
|
20106
19962
|
win.Vue = localVue;
|
20107
19963
|
localVue.config.errorHandler = failTestOnVueError;
|
@@ -20127,9 +19983,23 @@ const mount = (component, optionsOrProps = {}) => {
|
|
20127
19983
|
registerGlobalComponents(localVue, options);
|
20128
19984
|
props.attachTo = componentNode;
|
20129
19985
|
const wrapper = localVue.extend(component);
|
20130
|
-
const VTUWrapper =
|
19986
|
+
const VTUWrapper = mount$1(wrapper, Object.assign({ localVue }, props));
|
20131
19987
|
Cypress.vue = VTUWrapper.vm;
|
20132
19988
|
Cypress.vueWrapper = VTUWrapper;
|
19989
|
+
return {
|
19990
|
+
wrapper: VTUWrapper,
|
19991
|
+
component: VTUWrapper.vm,
|
19992
|
+
};
|
19993
|
+
})
|
19994
|
+
.then(() => {
|
19995
|
+
if (optionsOrProps.log !== false) {
|
19996
|
+
return Vue.nextTick(() => {
|
19997
|
+
Cypress.log({
|
19998
|
+
name: 'mount',
|
19999
|
+
message: [message],
|
20000
|
+
});
|
20001
|
+
});
|
20002
|
+
}
|
20133
20003
|
});
|
20134
20004
|
};
|
20135
20005
|
/**
|
@@ -20137,9 +20007,15 @@ const mount = (component, optionsOrProps = {}) => {
|
|
20137
20007
|
* @example
|
20138
20008
|
* import {mountCallback} from '@cypress/vue2'
|
20139
20009
|
* beforeEach(mountVue(component, options))
|
20010
|
+
*
|
20011
|
+
* Removed as of Cypress 11.0.0.
|
20012
|
+
* @see https://on.cypress.io/migration-11-0-0-component-testing-updates
|
20140
20013
|
*/
|
20141
20014
|
const mountCallback = (component, options) => {
|
20142
|
-
return () =>
|
20015
|
+
return () => {
|
20016
|
+
// @ts-expect-error - undocumented API
|
20017
|
+
Cypress.utils.throwErrByPath('mount.mount_callback');
|
20018
|
+
};
|
20143
20019
|
};
|
20144
20020
|
// Side effects from "import { mount } from '@cypress/<my-framework>'" are annoying, we should avoid doing this
|
20145
20021
|
// by creating an explicit function/import that the user can register in their 'component.js' support file,
|
@@ -20149,6 +20025,6 @@ const mountCallback = (component, options) => {
|
|
20149
20025
|
// import { registerCT } from 'cypress/<my-framework>'
|
20150
20026
|
// registerCT()
|
20151
20027
|
// Note: This would be a breaking change
|
20152
|
-
setupHooks();
|
20028
|
+
setupHooks(cleanup);
|
20153
20029
|
|
20154
20030
|
export { mount, mountCallback };
|