orphic-cypress
Version:
Set of utilities and typescript transformers to cover storybook stories with cypress component tests
50 lines (49 loc) • 1.84 kB
TypeScript
/**
* @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 {};