aboutsummaryrefslogtreecommitdiffstats
path: root/cypress/support/component.ts
diff options
context:
space:
mode:
Diffstat (limited to 'cypress/support/component.ts')
-rw-r--r--cypress/support/component.ts34
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')
+ })
+})