cypress-skip-test icon indicating copy to clipboard operation
cypress-skip-test copied to clipboard

Typescript: Cannot both import onlyOn and use cy.onlyOn

Open samueldmeyer opened this issue 3 years ago • 5 comments

In v2.6.0, Typescript threw errors when onlyOn was imported, but worked correctly for cy.onlyOn. Now in v2.6.1 (after https://github.com/cypress-io/cypress-skip-test/pull/143), Typescript correctly types the onlyOn import, but cy.onlyOn does not have a type.

Is there any way to get both of these to work with Typescript?

import { onlyOn } from '@cypress/skip-test'; // error here in 2.6.0: File '.../node_modules/@cypress/skip-test/index.d.ts' is not a module.
onlyOn('integration', () => {
  describe('stuff', () => {
    cy.onlyOn('mac'); // Error here in 2.6.1: Property 'onlyOn' does not exist on type 'cy & EventEmitter'
  })
});

samueldmeyer avatar Jun 22 '21 16:06 samueldmeyer

+1, I'm getting this error as well:

image

any idea? thanks!

estefafdez avatar Jul 13 '21 11:07 estefafdez

Looks like the types aren't being added to the global scope. The types in index.d.ts need to be updated from:

declare namespace Cypress {   
  // ... type definitions
}

To this:

declare global {
  declare namespace Cypress {
    // ... type definitions
  }
}

rdadoune avatar Aug 03 '21 19:08 rdadoune

Any update on this? thanks!

estefafdez avatar Aug 24 '21 08:08 estefafdez

I was able to successfully import both by exporting the global scope in my support/index.d.ts.

Try the following:

export {};

declare global {
  namespace Cypress {
    // ... type definitions
  }
}

You can also find a minimal reproducible example here: https://github.com/conversaShawn/using-cypress-skip-test-plugin/tree/onlyOn

conversayShawn avatar Oct 17 '21 23:10 conversayShawn

Add to your cypress.d.ts file

export {}

declare global {
  namespace Cypress {
    interface Chainable<Subject> {
      /// plugins ///

      // the cypress skip-test plugin has an open issue with types, that is  we have declare these here
      // https://github.com/cypress-io/cypress-skip-test/issues/164
      /** https://www.npmjs.com/package/@cypress/skip-test
       * `cy.skipOn('sandbox')`
       */
      skipOn(
        nameOrFlag: string | boolean | (() => boolean),
        cb?: () => void,
      ): Chainable<Subject>
      /** https://www.npmjs.com/package/@cypress/skip-test
       * `cy.onlyOn('sandbox')`
       */
      onlyOn(
        nameOrFlag: string | boolean | (() => boolean),
        cb?: () => void,
      ): Chainable<Subject>

    }
  }
}

muratkeremozcan avatar Dec 29 '22 13:12 muratkeremozcan