enhanced-crs
Version:
cypress plugin to locate react elements by component, props and state
114 lines (105 loc) • 2.99 kB
TypeScript
/// <reference types="cypress" />
declare namespace Cypress {
interface RESQNode {
name: string;
node: HTMLElement | null;
isFragment: boolean;
state: string | boolean | any[] | {};
props: {};
children: RESQNode[];
}
interface reactOpts {
props: {};
state: {};
root: string;
}
interface Chainable {
/**
* Wait until the React's component tree is loaded. Call `cy.waitForReact()` in your test's `before` hook.
* @example
* before(() => {
* cy.visit('http://localhost:3000/myApp');
* cy.waitForReact();
* });
*
* @param timeout
* @param reactRoot
*/
waitForReact(timeout?: number, reactRoot?: string): void;
/**
* Wait until the React's component tree is loaded in the player web. Call `cy.waitForReactPlayerWeb()` in your test's `before` hook.
* @example
* before(() => {
* cy.visit('http://localhost:3000/myApp');
* cy.waitForReactPlayerWeb();
* });
*
* @param timeout
*/
waitForReactPlayerWeb(timeout?: number): void;
/**
* Get react elements by component, props and states
* @see https://github.com/abhinaba-ghosh/cypress-react-selector/blob/master/cypress/integration/react-selector.spec.js
* @example
* cy.react(`MyComponent`).should('have.length', 10)
* cy.react('MyComponent',{name:'Bill'}).should('have.length', 1)
*/
react<E extends Node = HTMLElement>(
component: string,
reactOpts?: {
props?: object;
state?: object;
exact?: boolean;
root?: string;
options?: Partial<Loggable & Timeoutable>;
}
): Chainable<JQuery<E>>;
/**
* Get React Node by component, props and state
*
* @example
* cy.getReact('MyComponent')
* cy.getReact('MyComponent',{name:'Bill'})
* @param component
* @param props
* @param state
*/
getReact(
component: string,
reactOpts?: {
props?: object;
state?: object;
exact?: boolean;
root?: string;
options?: Partial<Loggable & Timeoutable>;
}
): Chainable<RESQNode>;
/**
* Get prop value from React Node.
* @note
* This method should always be used with getReact() method
* @param propName
*
* @example
* cy.getReact('MyForm',{name:'email'}).getProps('value').should('eq','john.doe@cypress.com')
*
* to get all props
* cy.getReact('MyForm',{name:'email'}).getProps()
*/
getProps(propName?: string): Chainable<any>;
/**
* Get current state from React Node.
* @note
* This method should always be used with getReact() method
*/
getCurrentState(): Chainable<any>;
/**
* Get the nthNode using index
* @param index
*
* @example
* cy.getReact('Product').nthNode(0).getProps('name').should('eq', 'First item');
*/
nthNode(index: number): Chainable<any>;
}
}