diff --git a/cypress/e2e/tsconfig.json b/cypress/e2e/tsconfig.json new file mode 100644 index 0000000..9b781a9 --- /dev/null +++ b/cypress/e2e/tsconfig.json @@ -0,0 +1,17 @@ +{ + "extends": "@vue/tsconfig/tsconfig.web.json", + "include": [ + "./**/*", + "../fixtures/**/*", + "../support/commands.ts", + "../support/e2e.ts" + ], + "exclude": ["../../src"], + "compilerOptions": { + "baseUrl": "./", + "isolatedModules": false, + "target": "es5", + "lib": ["es5", "dom"], + "types": ["cypress", "@testing-library/cypress"] + } +} diff --git a/cypress/support/component.ts b/cypress/support/component.ts index 73fc58d..e61b0d2 100644 --- a/cypress/support/component.ts +++ b/cypress/support/component.ts @@ -16,17 +16,17 @@ // https://on.cypress.io/configuration // *********************************************************** import './commands' - -import type { CyMountOptions } from 'cypress/vue' +import type { StyleOptions } from '@cypress/mount-utils' +import type { MountingOptions } from '@vue/test-utils' import { mount } from 'cypress/vue' import registerGlobalComponents from 'src/plugins/global-components' import { routes } from 'src/router' import type { + ComponentOptionsWithArrayProps, ComponentOptionsWithObjectProps, + ComponentOptionsWithoutProps, ComponentPropsOptions, FunctionalComponent, DefineComponent, ExtractDefaultPropTypes, MethodOptions, AllowedComponentProps, ComponentCustomProps, VNodeProps, - ComponentOptionsMixin, - ComputedOptions, - EmitsOptions, ExtractPropTypes, + ComponentOptionsMixin, ComputedOptions, EmitsOptions, ExtractPropTypes, } from 'vue' import type { Router } from 'vue-router' import { createMemoryHistory, createRouter } from 'vue-router' @@ -34,10 +34,28 @@ import { createMemoryHistory, createRouter } from 'vue-router' type PublicProps = VNodeProps & AllowedComponentProps & ComponentCustomProps type RouterOptions = {router?: Router} -type Mount = , EE extends string = string, PP = PublicProps, Props = Readonly>, Defaults = ExtractDefaultPropTypes>( - component: DefineComponent, - options?: CyMountOptions & Omit, D> & RouterOptions, -) => Cypress.Chainable +export declare type CyMountOptions = + & Omit, 'attachTo'> + & { log?: boolean } + & Partial + & RouterOptions + +interface Mount { + (originalComponent: { + new (...args: any[]): V + registerHooks(keys: string[]): void + }, options?: MountingOptions): Cypress.Chainable + (originalComponent: { + new (...args: any[]): V + props(Props: P): any + registerHooks(keys: string[]): void + }, options?: CyMountOptions

): Cypress.Chainable + (originalComponent: FunctionalComponent, options?: CyMountOptions): Cypress.Chainable + , EE extends string = string, PP = PublicProps, Props = Readonly>, Defaults = ExtractDefaultPropTypes>(component: DefineComponent, options?: CyMountOptions & Omit, D>): Cypress.Chainable + (componentOptions: ComponentOptionsWithoutProps, options?: CyMountOptions): Cypress.Chainable + = {}, E extends EmitsOptions = Record, Mixin extends ComponentOptionsMixin = ComponentOptionsMixin, Extends extends ComponentOptionsMixin = ComponentOptionsMixin, EE extends string = string, Props extends Readonly<{ [key in PropNames]?: any; }> = Readonly<{ [key in PropNames]?: any; }>>(componentOptions: ComponentOptionsWithArrayProps, options?: CyMountOptions): Cypress.Chainable + , RawBindings, D, C extends ComputedOptions = {}, M extends Record = {}, E extends EmitsOptions = Record, Mixin extends ComponentOptionsMixin = ComponentOptionsMixin, Extends extends ComponentOptionsMixin = ComponentOptionsMixin, EE extends string = string>(componentOptions: ComponentOptionsWithObjectProps, options?: CyMountOptions & PublicProps, D>): Cypress.Chainable +} type MountParams = Parameters @@ -50,7 +68,7 @@ declare global { } } -Cypress.Commands.add('mount', (component: any, options: MountParams[1] = {}) => { +Cypress.Commands.add('mount', (component: MountParams[0], options: MountParams[1] = {}) => { options.global = options.global || {} options.global.plugins = options.global.plugins || [] diff --git a/cypress/support/e2e.ts b/cypress/support/e2e.ts index 8fb5ac7..6faf51a 100644 --- a/cypress/support/e2e.ts +++ b/cypress/support/e2e.ts @@ -15,10 +15,11 @@ import './commands' -import { ROUTES } from 'e2e/constant' +import { ROUTES } from '../e2e/constant' declare global { namespace Cypress { + // noinspection JSUnusedGlobalSymbols interface Chainable { login(): void } diff --git a/cypress/tsconfig.json b/cypress/tsconfig.json deleted file mode 100644 index 8157a51..0000000 --- a/cypress/tsconfig.json +++ /dev/null @@ -1,14 +0,0 @@ -{ - "extends": "@vue/tsconfig/tsconfig.web.json", - "include": ["./**/*.{ts,json}", ".eslintrc.js", "../src/router.ts", "../src/plugins/global-components.ts"], - "compilerOptions": { - "baseUrl": ".", - "isolatedModules": false, - "target": "es5", - "lib": ["es5", "dom"], - "types": ["cypress", "@testing-library/cypress"], - "paths": { - "src/*": ["../src/*"], - } - } -} diff --git a/tsconfig.cypress-ct.json b/tsconfig.cypress-ct.json index 135688e..19ccf27 100644 --- a/tsconfig.cypress-ct.json +++ b/tsconfig.cypress-ct.json @@ -1,6 +1,13 @@ { "extends": "./tsconfig.app.json", - "include": ["env.d.ts", "src/**/*", "src/**/*.vue", "cypress/support/component.*"], + "include": [ + "env.d.ts", + "src/**/*", + "src/**/*.vue", + "cypress/support/component.*", + "cypress/support/commands.ts", + "cypress/fixtures/**/*", + ], "exclude": [], "compilerOptions": { "composite": true,