// *********************************************** // This example commands.js shows you how to // create various custom commands and overwrite // existing commands. // // For more comprehensive examples of custom // commands please read more here: // https://on.cypress.io/custom-commands // *********************************************** // // // -- This is a parent command -- // Cypress.Commands.add("login", (email, password) => { ... }) // // // -- This is a child command -- // Cypress.Commands.add("drag", { prevSubject: 'element'}, (subject, options) => { ... }) // // // -- This is a dual command -- // Cypress.Commands.add("dismiss", { prevSubject: 'optional'}, (subject, options) => { ... }) // // // -- This will overwrite an existing command -- // Cypress.Commands.overwrite("visit", (originalFn, url, options) => { ... }) Cypress.Commands.add('clientLogin', () => { cy.visit('/client/login'); cy.get('#test_email') .invoke('val') .then(emailValue => { cy.get('#test_password') .invoke('val') .then(passwordValue => { cy.get('#email') .type(emailValue) .should('have.value', emailValue); cy.get('#password') .type(passwordValue) .should('have.value', passwordValue); cy.get('#loginBtn') .contains('Login') .click(); }); }); }); Cypress.Commands.add( 'iframeLoaded', {prevSubject: 'element'}, ($iframe) => { const contentWindow = $iframe.prop('contentWindow'); return new Promise(resolve => { if ( contentWindow ) { resolve(contentWindow) } else { $iframe.on('load', () => { resolve(contentWindow) }) } }) }); Cypress.Commands.add( 'getInDocument', {prevSubject: 'Permission denied to access property "document" on cross-origin object'}, (document, selector) => Cypress.$(selector, document) ); Cypress.Commands.add( 'getWithinIframe', (targetElement) => cy.get('iframe').iframeLoaded().its('document').getInDocument(targetElement) );