diff options
Diffstat (limited to 'cypress/support/component.ts')
-rw-r--r-- | cypress/support/component.ts | 34 |
1 files changed, 28 insertions, 6 deletions
diff --git a/cypress/support/component.ts b/cypress/support/component.ts index b23ea62fb5b..be4b8c94b1b 100644 --- a/cypress/support/component.ts +++ b/cypress/support/component.ts @@ -21,15 +21,37 @@ */ import { mount } from 'cypress/vue2' -type MountParams = Parameters<typeof mount>; -type OptionsParam = MountParams[1]; - +// Augment the Cypress namespace to include type definitions for +// your custom command. +// Alternatively, can be defined in cypress/support/component.d.ts +// with a <reference path="./component" /> at the top of your spec. declare global { + // eslint-disable-next-line @typescript-eslint/no-namespace namespace Cypress { - interface Chainable<Subject = any> { - mount: typeof mount; + interface Chainable { + mount: typeof mount } } } -Cypress.Commands.add('mount', mount); +// Example use: +// cy.mount(MyComponent) +Cypress.Commands.add('mount', (component, optionsOrProps) => { + let instance = null + const oldMounted = component?.mounted || false + + // Override the mounted method to expose + // the component instance to cypress + component.mounted = function() { + // eslint-disable-next-line + instance = this + if (oldMounted) { + oldMounted() + } + } + + // Expose the component with cy.get('@component') + return mount(component, optionsOrProps).then(() => { + return cy.wrap(instance).as('component') + }) +}) |