UNPKG

orphic-cypress

Version:

Set of utilities and typescript transformers to cover storybook stories with cypress component tests

50 lines (49 loc) 1.84 kB
/** * @module cypress */ /// <reference types="cypress" /> type CyOptions = Partial<Cypress.Loggable & Cypress.Timeoutable & Cypress.Withinable & Cypress.Shadow>; type DataCyWithSubject = (subject: Cypress.JQueryWithSelector<HTMLElement> | HTMLElement | undefined, selector: string, children?: string | null, options?: CyOptions) => Cypress.Chainable<Cypress.JQueryWithSelector<HTMLElement>>; type DataCy = DataCyWithSubject & { (selector: string, children?: string | null, options?: CyOptions, never?: never): Cypress.Chainable<Cypress.JQueryWithSelector<HTMLElement>>; commandOptions?: { prevSubject: "optional"; }; }; /** * Select an html element by its data-cy attribute. * * ```ts * cy.dataCy('something').click() // -> cy.get("[data-cy='something']").click() * ``` * * Accepts children which will then become further selectors * * ```ts * cy.dataCy('something', '.nested').click() * // -> cy.get("[data-cy='something'] .nested").click() * ``` * * And is chainable such that it will use the previous element as its scope * * ```ts * cy.dataCy('something').dataCy("other").click() * // -> cy.get("[data-cy='something']").within(() => cy.get("[data-cy='other']").click()) * cy.get('.top').dataCy('something') // same idea as above * ``` * * Finally, it supports taking the first signature literally and passing in * a subject directly. That's very likely an unnecessary step and convention/obvious errors * would prevent it, but going for complete here * * ```ts * cy.get(".first-selector").then(($first) => * cy.dataCy($first, "second-selector").should("contain", 0) * ); * ``` * * Note: this is not added to cypress commands by default. Pass to {@link addCommands} * or a custom function this should be added as a cypress command. */ export declare const dataCy: DataCy; export {};