cypress 13.11.0 → 13.13.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.
Files changed (62) hide show
  1. package/angular/angular/dist/index.d.ts +1 -2
  2. package/angular/angular/dist/index.js +239 -239
  3. package/angular/angular/package.json +1 -1
  4. package/angular/dist/index.d.ts +1 -2
  5. package/angular/dist/index.js +239 -239
  6. package/angular/package.json +1 -1
  7. package/angular-signals/README.md +11 -0
  8. package/angular-signals/angular-signals/README.md +11 -0
  9. package/angular-signals/angular-signals/dist/index.d.ts +136 -0
  10. package/angular-signals/angular-signals/dist/index.js +1861 -0
  11. package/angular-signals/angular-signals/package.json +74 -0
  12. package/angular-signals/dist/index.d.ts +136 -0
  13. package/angular-signals/dist/index.js +1861 -0
  14. package/angular-signals/package.json +74 -0
  15. package/lib/cli.js +0 -1
  16. package/lib/exec/xvfb.js +0 -1
  17. package/lib/logger.js +0 -3
  18. package/mount-utils/dist/index.d.ts +1 -1
  19. package/mount-utils/mount-utils/dist/index.d.ts +1 -1
  20. package/mount-utils/mount-utils/package.json +1 -1
  21. package/mount-utils/package.json +1 -1
  22. package/package.json +11 -5
  23. package/react/dist/cypress-react.cjs.js +237 -237
  24. package/react/dist/cypress-react.esm-bundler.js +237 -237
  25. package/react/dist/index.d.ts +1 -1
  26. package/react/package.json +3 -3
  27. package/react/react/dist/cypress-react.cjs.js +237 -237
  28. package/react/react/dist/cypress-react.esm-bundler.js +237 -237
  29. package/react/react/dist/index.d.ts +1 -1
  30. package/react/react/package.json +3 -3
  31. package/react18/dist/cypress-react.cjs.js +222 -222
  32. package/react18/dist/cypress-react.esm-bundler.js +222 -222
  33. package/react18/dist/index.d.ts +1 -1
  34. package/react18/package.json +1 -1
  35. package/react18/react18/dist/cypress-react.cjs.js +222 -222
  36. package/react18/react18/dist/cypress-react.esm-bundler.js +222 -222
  37. package/react18/react18/dist/index.d.ts +1 -1
  38. package/react18/react18/package.json +1 -1
  39. package/svelte/dist/cypress-svelte.cjs.js +61 -61
  40. package/svelte/dist/cypress-svelte.esm-bundler.js +61 -61
  41. package/svelte/dist/index.d.ts +2 -2
  42. package/svelte/package.json +1 -1
  43. package/svelte/svelte/dist/cypress-svelte.cjs.js +61 -61
  44. package/svelte/svelte/dist/cypress-svelte.esm-bundler.js +61 -61
  45. package/svelte/svelte/dist/index.d.ts +2 -2
  46. package/svelte/svelte/package.json +1 -1
  47. package/vue/dist/cypress-vue.cjs.js +128 -128
  48. package/vue/dist/cypress-vue.esm-bundler.js +128 -128
  49. package/vue/dist/index.d.ts +5 -5
  50. package/vue/package.json +5 -5
  51. package/vue/vue/dist/cypress-vue.cjs.js +128 -128
  52. package/vue/vue/dist/cypress-vue.esm-bundler.js +128 -128
  53. package/vue/vue/dist/index.d.ts +5 -5
  54. package/vue/vue/package.json +5 -5
  55. package/vue2/dist/cypress-vue2.cjs.js +211 -211
  56. package/vue2/dist/cypress-vue2.esm-bundler.js +211 -211
  57. package/vue2/dist/index.d.ts +11 -11
  58. package/vue2/package.json +1 -1
  59. package/vue2/vue2/dist/cypress-vue2.cjs.js +211 -211
  60. package/vue2/vue2/dist/cypress-vue2.esm-bundler.js +211 -211
  61. package/vue2/vue2/dist/index.d.ts +11 -11
  62. package/vue2/vue2/package.json +1 -1
@@ -8454,134 +8454,134 @@ var _VueTestUtils = /*#__PURE__*/Object.freeze({
8454
8454
  shallowMount: shallowMount$1
8455
8455
  });
8456
8456
 
8457
- const {
8458
- // We do not expose the `mount` from VueTestUtils, instead, we wrap it and expose a
8459
- // Cypress-compatible `mount` API.
8460
- mount: VTUmount,
8461
- // We do not expose shallowMount. It doesn't make much sense in the context of Cypress.
8462
- // It might be useful for people who like to migrate some Test Utils tests to Cypress,
8463
- // so if we decide it is useful to expose, just remove the next line, and it will be
8464
- // available on the `VueTestUtils` import.
8465
- shallowMount } = _VueTestUtils, VueTestUtils = __rest(_VueTestUtils, ["mount", "shallowMount"]);
8466
- const DEFAULT_COMP_NAME = 'unknown';
8467
- const VUE_ROOT = '__cy_vue_root';
8468
- const cleanup = () => {
8469
- var _a;
8470
- (_a = Cypress.vueWrapper) === null || _a === void 0 ? void 0 : _a.unmount();
8471
- Cypress.$(`#${VUE_ROOT}`).remove();
8472
- Cypress.vueWrapper = null;
8473
- Cypress.vue = null;
8474
- };
8475
- /**
8476
- * Mounts a component and returns an object containing the component and VueWrapper
8477
- * @param componentOptions
8478
- * @param options
8479
- * @returns {Cypress.Chainable<{wrapper: VueWrapper<T>, component: T}>}
8480
- * @see {@link https://on.cypress.io/mounting-vue} for more details.
8481
- * @example
8482
- * import { mount } from '@cypress/vue'
8483
- * import { Stepper } from './Stepper.vue'
8484
- *
8485
- * it('mounts', () => {
8486
- * cy.mount(Stepper)
8487
- * cy.get('[data-cy=increment]').click()
8488
- * cy.get('[data-cy=counter]').should('have.text', '1')
8489
- * })
8490
- */
8491
- function mount(componentOptions, options = {}) {
8492
- checkForRemovedStyleOptions(options);
8493
- // Remove last mounted component if cy.mount is called more than once in a test
8494
- cleanup();
8495
- // then wait for cypress to load
8496
- return cy.then(() => {
8497
- var _a, _b;
8498
- // @ts-ignore
8499
- const document = cy.state('document');
8500
- const el = getContainerEl();
8501
- // merge the extensions with global
8502
- if (options.extensions) {
8503
- options.extensions.plugins = (_a = []) === null || _a === void 0 ? void 0 : _a.concat(options.extensions.plugins || [], options.extensions.use || []);
8504
- options.extensions.mixins = (_b = []) === null || _b === void 0 ? void 0 : _b.concat(options.extensions.mixins || [], options.extensions.mixin || []);
8505
- options.global = Object.assign(Object.assign({}, options.extensions), options.global);
8506
- }
8507
- const componentNode = document.createElement('div');
8508
- componentNode.id = VUE_ROOT;
8509
- el.append(componentNode);
8510
- // mount the component using VTU and return the wrapper in Cypress.VueWrapper
8511
- const wrapper = VTUmount(componentOptions, Object.assign({ attachTo: componentNode }, options));
8512
- Cypress.vueWrapper = wrapper;
8513
- Cypress.vue = wrapper.vm;
8514
- return cy
8515
- .wait(1, { log: false })
8516
- .then(() => {
8517
- if (options.log !== false) {
8518
- // TODO: get the real displayName and props from VTU shallowMount
8519
- const message = `<${getComponentDisplayName(componentOptions)} ... />`;
8520
- Cypress.log({
8521
- name: 'mount',
8522
- message: [message],
8523
- });
8524
- }
8525
- const returnVal = {
8526
- wrapper,
8527
- component: wrapper.vm,
8528
- };
8529
- return new Proxy(Object.create(returnVal), {
8530
- get(obj, prop) {
8531
- // throw an error if it looks like the caller is trying to call a method on the VueWrapper that was originally returned
8532
- if (Reflect.get(wrapper, prop)) {
8533
- // @ts-expect-error - internal API
8534
- Cypress.utils.throwErrByPath('mount.vue_yielded_value');
8535
- }
8536
- return Reflect.get(obj, prop);
8537
- },
8538
- });
8539
- });
8540
- });
8541
- }
8542
- /**
8543
- * Extract the component name from the object passed to mount
8544
- * @param componentOptions the component passed to mount
8545
- * @returns name of the component
8546
- */
8547
- function getComponentDisplayName(componentOptions) {
8548
- var _a;
8549
- if (componentOptions.name) {
8550
- return componentOptions.name;
8551
- }
8552
- if (componentOptions.__file) {
8553
- const filepathSplit = componentOptions.__file.split('/');
8554
- const fileName = (_a = filepathSplit[filepathSplit.length - 1]) !== null && _a !== void 0 ? _a : DEFAULT_COMP_NAME;
8555
- // remove the extension .js, .ts or .vue from the filename to get the name of the component
8556
- const baseFileName = fileName.replace(/\.(js|ts|vue)?$/, '');
8557
- // if the filename is index, then we can use the direct parent foldername, else use the name itself
8558
- return (baseFileName === 'index' ? filepathSplit[filepathSplit.length - 2] : baseFileName);
8559
- }
8560
- return DEFAULT_COMP_NAME;
8561
- }
8562
- /**
8563
- * Helper function for mounting a component quickly in test hooks.
8564
- * @example
8565
- * import {mountCallback} from '@cypress/vue'
8566
- * beforeEach(mountVue(component, options))
8567
- *
8568
- * Removed as of Cypress 11.0.0.
8569
- * @see https://on.cypress.io/migration-11-0-0-component-testing-updates
8570
- */
8571
- function mountCallback(component, options = {}) {
8572
- return () => {
8573
- // @ts-expect-error - undocumented API
8574
- Cypress.utils.throwErrByPath('mount.mount_callback');
8575
- };
8576
- }
8577
- // Side effects from "import { mount } from '@cypress/<my-framework>'" are annoying, we should avoid doing this
8578
- // by creating an explicit function/import that the user can register in their 'component.js' support file,
8579
- // such as:
8580
- // import 'cypress/<my-framework>/support'
8581
- // or
8582
- // import { registerCT } from 'cypress/<my-framework>'
8583
- // registerCT()
8584
- // Note: This would be a breaking change
8457
+ const {
8458
+ // We do not expose the `mount` from VueTestUtils, instead, we wrap it and expose a
8459
+ // Cypress-compatible `mount` API.
8460
+ mount: VTUmount,
8461
+ // We do not expose shallowMount. It doesn't make much sense in the context of Cypress.
8462
+ // It might be useful for people who like to migrate some Test Utils tests to Cypress,
8463
+ // so if we decide it is useful to expose, just remove the next line, and it will be
8464
+ // available on the `VueTestUtils` import.
8465
+ shallowMount } = _VueTestUtils, VueTestUtils = __rest(_VueTestUtils, ["mount", "shallowMount"]);
8466
+ const DEFAULT_COMP_NAME = 'unknown';
8467
+ const VUE_ROOT = '__cy_vue_root';
8468
+ const cleanup = () => {
8469
+ var _a;
8470
+ (_a = Cypress.vueWrapper) === null || _a === void 0 ? void 0 : _a.unmount();
8471
+ Cypress.$(`#${VUE_ROOT}`).remove();
8472
+ Cypress.vueWrapper = null;
8473
+ Cypress.vue = null;
8474
+ };
8475
+ /**
8476
+ * Mounts a component and returns an object containing the component and VueWrapper
8477
+ * @param componentOptions
8478
+ * @param options
8479
+ * @returns {Cypress.Chainable<{wrapper: VueWrapper<T>, component: T}>}
8480
+ * @see {@link https://on.cypress.io/mounting-vue} for more details.
8481
+ * @example
8482
+ * import { mount } from '@cypress/vue'
8483
+ * import { Stepper } from './Stepper.vue'
8484
+ *
8485
+ * it('mounts', () => {
8486
+ * cy.mount(Stepper)
8487
+ * cy.get('[data-cy=increment]').click()
8488
+ * cy.get('[data-cy=counter]').should('have.text', '1')
8489
+ * })
8490
+ */
8491
+ function mount(componentOptions, options = {}) {
8492
+ checkForRemovedStyleOptions(options);
8493
+ // Remove last mounted component if cy.mount is called more than once in a test
8494
+ cleanup();
8495
+ // then wait for cypress to load
8496
+ return cy.then(() => {
8497
+ var _a, _b;
8498
+ // @ts-ignore
8499
+ const document = cy.state('document');
8500
+ const el = getContainerEl();
8501
+ // merge the extensions with global
8502
+ if (options.extensions) {
8503
+ options.extensions.plugins = (_a = []) === null || _a === void 0 ? void 0 : _a.concat(options.extensions.plugins || [], options.extensions.use || []);
8504
+ options.extensions.mixins = (_b = []) === null || _b === void 0 ? void 0 : _b.concat(options.extensions.mixins || [], options.extensions.mixin || []);
8505
+ options.global = Object.assign(Object.assign({}, options.extensions), options.global);
8506
+ }
8507
+ const componentNode = document.createElement('div');
8508
+ componentNode.id = VUE_ROOT;
8509
+ el.append(componentNode);
8510
+ // mount the component using VTU and return the wrapper in Cypress.VueWrapper
8511
+ const wrapper = VTUmount(componentOptions, Object.assign({ attachTo: componentNode }, options));
8512
+ Cypress.vueWrapper = wrapper;
8513
+ Cypress.vue = wrapper.vm;
8514
+ return cy
8515
+ .wait(1, { log: false })
8516
+ .then(() => {
8517
+ if (options.log !== false) {
8518
+ // TODO: get the real displayName and props from VTU shallowMount
8519
+ const message = `<${getComponentDisplayName(componentOptions)} ... />`;
8520
+ Cypress.log({
8521
+ name: 'mount',
8522
+ message: [message],
8523
+ });
8524
+ }
8525
+ const returnVal = {
8526
+ wrapper,
8527
+ component: wrapper.vm,
8528
+ };
8529
+ return new Proxy(Object.create(returnVal), {
8530
+ get(obj, prop) {
8531
+ // throw an error if it looks like the caller is trying to call a method on the VueWrapper that was originally returned
8532
+ if (Reflect.get(wrapper, prop)) {
8533
+ // @ts-expect-error - internal API
8534
+ Cypress.utils.throwErrByPath('mount.vue_yielded_value');
8535
+ }
8536
+ return Reflect.get(obj, prop);
8537
+ },
8538
+ });
8539
+ });
8540
+ });
8541
+ }
8542
+ /**
8543
+ * Extract the component name from the object passed to mount
8544
+ * @param componentOptions the component passed to mount
8545
+ * @returns name of the component
8546
+ */
8547
+ function getComponentDisplayName(componentOptions) {
8548
+ var _a;
8549
+ if (componentOptions.name) {
8550
+ return componentOptions.name;
8551
+ }
8552
+ if (componentOptions.__file) {
8553
+ const filepathSplit = componentOptions.__file.split('/');
8554
+ const fileName = (_a = filepathSplit[filepathSplit.length - 1]) !== null && _a !== void 0 ? _a : DEFAULT_COMP_NAME;
8555
+ // remove the extension .js, .ts or .vue from the filename to get the name of the component
8556
+ const baseFileName = fileName.replace(/\.(js|ts|vue)?$/, '');
8557
+ // if the filename is index, then we can use the direct parent foldername, else use the name itself
8558
+ return (baseFileName === 'index' ? filepathSplit[filepathSplit.length - 2] : baseFileName);
8559
+ }
8560
+ return DEFAULT_COMP_NAME;
8561
+ }
8562
+ /**
8563
+ * Helper function for mounting a component quickly in test hooks.
8564
+ * @example
8565
+ * import {mountCallback} from '@cypress/vue'
8566
+ * beforeEach(mountVue(component, options))
8567
+ *
8568
+ * Removed as of Cypress 11.0.0.
8569
+ * @see https://on.cypress.io/migration-11-0-0-component-testing-updates
8570
+ */
8571
+ function mountCallback(component, options = {}) {
8572
+ return () => {
8573
+ // @ts-expect-error - undocumented API
8574
+ Cypress.utils.throwErrByPath('mount.mount_callback');
8575
+ };
8576
+ }
8577
+ // Side effects from "import { mount } from '@cypress/<my-framework>'" are annoying, we should avoid doing this
8578
+ // by creating an explicit function/import that the user can register in their 'component.js' support file,
8579
+ // such as:
8580
+ // import 'cypress/<my-framework>/support'
8581
+ // or
8582
+ // import { registerCT } from 'cypress/<my-framework>'
8583
+ // registerCT()
8584
+ // Note: This would be a breaking change
8585
8585
  setupHooks(cleanup);
8586
8586
 
8587
8587
  exports.VueTestUtils = VueTestUtils;
@@ -8434,134 +8434,134 @@ var _VueTestUtils = /*#__PURE__*/Object.freeze({
8434
8434
  shallowMount: shallowMount$1
8435
8435
  });
8436
8436
 
8437
- const {
8438
- // We do not expose the `mount` from VueTestUtils, instead, we wrap it and expose a
8439
- // Cypress-compatible `mount` API.
8440
- mount: VTUmount,
8441
- // We do not expose shallowMount. It doesn't make much sense in the context of Cypress.
8442
- // It might be useful for people who like to migrate some Test Utils tests to Cypress,
8443
- // so if we decide it is useful to expose, just remove the next line, and it will be
8444
- // available on the `VueTestUtils` import.
8445
- shallowMount } = _VueTestUtils, VueTestUtils = __rest(_VueTestUtils, ["mount", "shallowMount"]);
8446
- const DEFAULT_COMP_NAME = 'unknown';
8447
- const VUE_ROOT = '__cy_vue_root';
8448
- const cleanup = () => {
8449
- var _a;
8450
- (_a = Cypress.vueWrapper) === null || _a === void 0 ? void 0 : _a.unmount();
8451
- Cypress.$(`#${VUE_ROOT}`).remove();
8452
- Cypress.vueWrapper = null;
8453
- Cypress.vue = null;
8454
- };
8455
- /**
8456
- * Mounts a component and returns an object containing the component and VueWrapper
8457
- * @param componentOptions
8458
- * @param options
8459
- * @returns {Cypress.Chainable<{wrapper: VueWrapper<T>, component: T}>}
8460
- * @see {@link https://on.cypress.io/mounting-vue} for more details.
8461
- * @example
8462
- * import { mount } from '@cypress/vue'
8463
- * import { Stepper } from './Stepper.vue'
8464
- *
8465
- * it('mounts', () => {
8466
- * cy.mount(Stepper)
8467
- * cy.get('[data-cy=increment]').click()
8468
- * cy.get('[data-cy=counter]').should('have.text', '1')
8469
- * })
8470
- */
8471
- function mount(componentOptions, options = {}) {
8472
- checkForRemovedStyleOptions(options);
8473
- // Remove last mounted component if cy.mount is called more than once in a test
8474
- cleanup();
8475
- // then wait for cypress to load
8476
- return cy.then(() => {
8477
- var _a, _b;
8478
- // @ts-ignore
8479
- const document = cy.state('document');
8480
- const el = getContainerEl();
8481
- // merge the extensions with global
8482
- if (options.extensions) {
8483
- options.extensions.plugins = (_a = []) === null || _a === void 0 ? void 0 : _a.concat(options.extensions.plugins || [], options.extensions.use || []);
8484
- options.extensions.mixins = (_b = []) === null || _b === void 0 ? void 0 : _b.concat(options.extensions.mixins || [], options.extensions.mixin || []);
8485
- options.global = Object.assign(Object.assign({}, options.extensions), options.global);
8486
- }
8487
- const componentNode = document.createElement('div');
8488
- componentNode.id = VUE_ROOT;
8489
- el.append(componentNode);
8490
- // mount the component using VTU and return the wrapper in Cypress.VueWrapper
8491
- const wrapper = VTUmount(componentOptions, Object.assign({ attachTo: componentNode }, options));
8492
- Cypress.vueWrapper = wrapper;
8493
- Cypress.vue = wrapper.vm;
8494
- return cy
8495
- .wait(1, { log: false })
8496
- .then(() => {
8497
- if (options.log !== false) {
8498
- // TODO: get the real displayName and props from VTU shallowMount
8499
- const message = `<${getComponentDisplayName(componentOptions)} ... />`;
8500
- Cypress.log({
8501
- name: 'mount',
8502
- message: [message],
8503
- });
8504
- }
8505
- const returnVal = {
8506
- wrapper,
8507
- component: wrapper.vm,
8508
- };
8509
- return new Proxy(Object.create(returnVal), {
8510
- get(obj, prop) {
8511
- // throw an error if it looks like the caller is trying to call a method on the VueWrapper that was originally returned
8512
- if (Reflect.get(wrapper, prop)) {
8513
- // @ts-expect-error - internal API
8514
- Cypress.utils.throwErrByPath('mount.vue_yielded_value');
8515
- }
8516
- return Reflect.get(obj, prop);
8517
- },
8518
- });
8519
- });
8520
- });
8521
- }
8522
- /**
8523
- * Extract the component name from the object passed to mount
8524
- * @param componentOptions the component passed to mount
8525
- * @returns name of the component
8526
- */
8527
- function getComponentDisplayName(componentOptions) {
8528
- var _a;
8529
- if (componentOptions.name) {
8530
- return componentOptions.name;
8531
- }
8532
- if (componentOptions.__file) {
8533
- const filepathSplit = componentOptions.__file.split('/');
8534
- const fileName = (_a = filepathSplit[filepathSplit.length - 1]) !== null && _a !== void 0 ? _a : DEFAULT_COMP_NAME;
8535
- // remove the extension .js, .ts or .vue from the filename to get the name of the component
8536
- const baseFileName = fileName.replace(/\.(js|ts|vue)?$/, '');
8537
- // if the filename is index, then we can use the direct parent foldername, else use the name itself
8538
- return (baseFileName === 'index' ? filepathSplit[filepathSplit.length - 2] : baseFileName);
8539
- }
8540
- return DEFAULT_COMP_NAME;
8541
- }
8542
- /**
8543
- * Helper function for mounting a component quickly in test hooks.
8544
- * @example
8545
- * import {mountCallback} from '@cypress/vue'
8546
- * beforeEach(mountVue(component, options))
8547
- *
8548
- * Removed as of Cypress 11.0.0.
8549
- * @see https://on.cypress.io/migration-11-0-0-component-testing-updates
8550
- */
8551
- function mountCallback(component, options = {}) {
8552
- return () => {
8553
- // @ts-expect-error - undocumented API
8554
- Cypress.utils.throwErrByPath('mount.mount_callback');
8555
- };
8556
- }
8557
- // Side effects from "import { mount } from '@cypress/<my-framework>'" are annoying, we should avoid doing this
8558
- // by creating an explicit function/import that the user can register in their 'component.js' support file,
8559
- // such as:
8560
- // import 'cypress/<my-framework>/support'
8561
- // or
8562
- // import { registerCT } from 'cypress/<my-framework>'
8563
- // registerCT()
8564
- // Note: This would be a breaking change
8437
+ const {
8438
+ // We do not expose the `mount` from VueTestUtils, instead, we wrap it and expose a
8439
+ // Cypress-compatible `mount` API.
8440
+ mount: VTUmount,
8441
+ // We do not expose shallowMount. It doesn't make much sense in the context of Cypress.
8442
+ // It might be useful for people who like to migrate some Test Utils tests to Cypress,
8443
+ // so if we decide it is useful to expose, just remove the next line, and it will be
8444
+ // available on the `VueTestUtils` import.
8445
+ shallowMount } = _VueTestUtils, VueTestUtils = __rest(_VueTestUtils, ["mount", "shallowMount"]);
8446
+ const DEFAULT_COMP_NAME = 'unknown';
8447
+ const VUE_ROOT = '__cy_vue_root';
8448
+ const cleanup = () => {
8449
+ var _a;
8450
+ (_a = Cypress.vueWrapper) === null || _a === void 0 ? void 0 : _a.unmount();
8451
+ Cypress.$(`#${VUE_ROOT}`).remove();
8452
+ Cypress.vueWrapper = null;
8453
+ Cypress.vue = null;
8454
+ };
8455
+ /**
8456
+ * Mounts a component and returns an object containing the component and VueWrapper
8457
+ * @param componentOptions
8458
+ * @param options
8459
+ * @returns {Cypress.Chainable<{wrapper: VueWrapper<T>, component: T}>}
8460
+ * @see {@link https://on.cypress.io/mounting-vue} for more details.
8461
+ * @example
8462
+ * import { mount } from '@cypress/vue'
8463
+ * import { Stepper } from './Stepper.vue'
8464
+ *
8465
+ * it('mounts', () => {
8466
+ * cy.mount(Stepper)
8467
+ * cy.get('[data-cy=increment]').click()
8468
+ * cy.get('[data-cy=counter]').should('have.text', '1')
8469
+ * })
8470
+ */
8471
+ function mount(componentOptions, options = {}) {
8472
+ checkForRemovedStyleOptions(options);
8473
+ // Remove last mounted component if cy.mount is called more than once in a test
8474
+ cleanup();
8475
+ // then wait for cypress to load
8476
+ return cy.then(() => {
8477
+ var _a, _b;
8478
+ // @ts-ignore
8479
+ const document = cy.state('document');
8480
+ const el = getContainerEl();
8481
+ // merge the extensions with global
8482
+ if (options.extensions) {
8483
+ options.extensions.plugins = (_a = []) === null || _a === void 0 ? void 0 : _a.concat(options.extensions.plugins || [], options.extensions.use || []);
8484
+ options.extensions.mixins = (_b = []) === null || _b === void 0 ? void 0 : _b.concat(options.extensions.mixins || [], options.extensions.mixin || []);
8485
+ options.global = Object.assign(Object.assign({}, options.extensions), options.global);
8486
+ }
8487
+ const componentNode = document.createElement('div');
8488
+ componentNode.id = VUE_ROOT;
8489
+ el.append(componentNode);
8490
+ // mount the component using VTU and return the wrapper in Cypress.VueWrapper
8491
+ const wrapper = VTUmount(componentOptions, Object.assign({ attachTo: componentNode }, options));
8492
+ Cypress.vueWrapper = wrapper;
8493
+ Cypress.vue = wrapper.vm;
8494
+ return cy
8495
+ .wait(1, { log: false })
8496
+ .then(() => {
8497
+ if (options.log !== false) {
8498
+ // TODO: get the real displayName and props from VTU shallowMount
8499
+ const message = `<${getComponentDisplayName(componentOptions)} ... />`;
8500
+ Cypress.log({
8501
+ name: 'mount',
8502
+ message: [message],
8503
+ });
8504
+ }
8505
+ const returnVal = {
8506
+ wrapper,
8507
+ component: wrapper.vm,
8508
+ };
8509
+ return new Proxy(Object.create(returnVal), {
8510
+ get(obj, prop) {
8511
+ // throw an error if it looks like the caller is trying to call a method on the VueWrapper that was originally returned
8512
+ if (Reflect.get(wrapper, prop)) {
8513
+ // @ts-expect-error - internal API
8514
+ Cypress.utils.throwErrByPath('mount.vue_yielded_value');
8515
+ }
8516
+ return Reflect.get(obj, prop);
8517
+ },
8518
+ });
8519
+ });
8520
+ });
8521
+ }
8522
+ /**
8523
+ * Extract the component name from the object passed to mount
8524
+ * @param componentOptions the component passed to mount
8525
+ * @returns name of the component
8526
+ */
8527
+ function getComponentDisplayName(componentOptions) {
8528
+ var _a;
8529
+ if (componentOptions.name) {
8530
+ return componentOptions.name;
8531
+ }
8532
+ if (componentOptions.__file) {
8533
+ const filepathSplit = componentOptions.__file.split('/');
8534
+ const fileName = (_a = filepathSplit[filepathSplit.length - 1]) !== null && _a !== void 0 ? _a : DEFAULT_COMP_NAME;
8535
+ // remove the extension .js, .ts or .vue from the filename to get the name of the component
8536
+ const baseFileName = fileName.replace(/\.(js|ts|vue)?$/, '');
8537
+ // if the filename is index, then we can use the direct parent foldername, else use the name itself
8538
+ return (baseFileName === 'index' ? filepathSplit[filepathSplit.length - 2] : baseFileName);
8539
+ }
8540
+ return DEFAULT_COMP_NAME;
8541
+ }
8542
+ /**
8543
+ * Helper function for mounting a component quickly in test hooks.
8544
+ * @example
8545
+ * import {mountCallback} from '@cypress/vue'
8546
+ * beforeEach(mountVue(component, options))
8547
+ *
8548
+ * Removed as of Cypress 11.0.0.
8549
+ * @see https://on.cypress.io/migration-11-0-0-component-testing-updates
8550
+ */
8551
+ function mountCallback(component, options = {}) {
8552
+ return () => {
8553
+ // @ts-expect-error - undocumented API
8554
+ Cypress.utils.throwErrByPath('mount.mount_callback');
8555
+ };
8556
+ }
8557
+ // Side effects from "import { mount } from '@cypress/<my-framework>'" are annoying, we should avoid doing this
8558
+ // by creating an explicit function/import that the user can register in their 'component.js' support file,
8559
+ // such as:
8560
+ // import 'cypress/<my-framework>/support'
8561
+ // or
8562
+ // import { registerCT } from 'cypress/<my-framework>'
8563
+ // registerCT()
8564
+ // Note: This would be a breaking change
8565
8565
  setupHooks(cleanup);
8566
8566
 
8567
8567
  export { VueTestUtils, mount, mountCallback };
@@ -1287,7 +1287,7 @@ declare const VueTestUtils: {
1287
1287
  createWrapperError: typeof createWrapperError;
1288
1288
  };
1289
1289
 
1290
- declare type GlobalMountOptions = Required<MountingOptions$1<any>>['global'];
1290
+ type GlobalMountOptions = Required<MountingOptions$1<any>>['global'];
1291
1291
  declare global {
1292
1292
  namespace Cypress {
1293
1293
  interface Cypress {
@@ -1296,7 +1296,7 @@ declare global {
1296
1296
  }
1297
1297
  }
1298
1298
  }
1299
- declare type MountingOptions<Props, Data = {}> = Omit<MountingOptions$1<Props, Data>, 'attachTo'> & {
1299
+ type MountingOptions<Props, Data = {}> = Omit<MountingOptions$1<Props, Data>, 'attachTo'> & {
1300
1300
  log?: boolean;
1301
1301
  /**
1302
1302
  * @deprecated use vue-test-utils `global` instead
@@ -1306,7 +1306,7 @@ declare type MountingOptions<Props, Data = {}> = Omit<MountingOptions$1<Props, D
1306
1306
  mixin?: GlobalMountOptions['mixins'];
1307
1307
  };
1308
1308
  };
1309
- declare type CyMountOptions<Props, Data = {}> = MountingOptions<Props, Data>;
1309
+ type CyMountOptions<Props, Data = {}> = MountingOptions<Props, Data>;
1310
1310
  /**
1311
1311
  * The types for mount have been copied directly from the VTU mount
1312
1312
  * https://github.com/vuejs/vue-test-utils-next/blob/master/src/mount.ts.
@@ -1318,8 +1318,8 @@ declare type CyMountOptions<Props, Data = {}> = MountingOptions<Props, Data>;
1318
1318
  * `MountOptions` are modifying, including some Cypress specific options like `styles`.
1319
1319
  * The return type is different. Instead of VueWrapper, it's Cypress.Chainable<VueWrapper<...>>.
1320
1320
  */
1321
- declare type PublicProps = VNodeProps & AllowedComponentProps & ComponentCustomProps;
1322
- declare type ComponentMountingOptions<T> = T extends DefineComponent<infer PropsOrPropOptions, any, infer D, any, any> ? MountingOptions<Partial<ExtractDefaultPropTypes<PropsOrPropOptions>> & Omit<Readonly<ExtractPropTypes<PropsOrPropOptions>> & PublicProps, keyof ExtractDefaultPropTypes<PropsOrPropOptions>>, D> & Record<string, any> : MountingOptions<any>;
1321
+ type PublicProps = VNodeProps & AllowedComponentProps & ComponentCustomProps;
1322
+ type ComponentMountingOptions<T> = T extends DefineComponent<infer PropsOrPropOptions, any, infer D, any, any> ? MountingOptions<Partial<ExtractDefaultPropTypes<PropsOrPropOptions>> & Omit<Readonly<ExtractPropTypes<PropsOrPropOptions>> & PublicProps, keyof ExtractDefaultPropTypes<PropsOrPropOptions>>, D> & Record<string, any> : MountingOptions<any>;
1323
1323
  declare function mount<V extends {}>(originalComponent: {
1324
1324
  new (...args: any[]): V;
1325
1325
  __vccOpts: any;
@@ -16,7 +16,7 @@
16
16
  },
17
17
  "devDependencies": {
18
18
  "@cypress/mount-utils": "0.0.0-development",
19
- "@vitejs/plugin-vue": "4.2.0",
19
+ "@vitejs/plugin-vue": "5.0.4",
20
20
  "@vue/compiler-sfc": "3.2.47",
21
21
  "@vue/test-utils": "2.3.2",
22
22
  "axios": "0.21.2",
@@ -24,12 +24,12 @@
24
24
  "debug": "^4.3.4",
25
25
  "globby": "^11.0.1",
26
26
  "tailwindcss": "1.1.4",
27
- "typescript": "^4.7.4",
28
- "vite": "4.5.2",
27
+ "typescript": "~5.4.5",
28
+ "vite": "5.2.11",
29
29
  "vue": "3.2.47",
30
- "vue-i18n": "9.0.0-rc.6",
30
+ "vue-i18n": "9.13.1",
31
31
  "vue-router": "^4.0.0",
32
- "vue-tsc": "^0.3.0",
32
+ "vue-tsc": "^2.0.19",
33
33
  "vuex": "^4.0.0"
34
34
  },
35
35
  "peerDependencies": {