UNPKG

gantt-source_management

Version:

Gantt, Schedule,

176 lines (169 loc) 4.77 kB
// *********************************************** // 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) => { ... }) const horizontalScrollBarSelector = '.gstc__scroll-bar-inner--horizontal'; const verticalScrollBarSelector = '.gstc__scroll-bar-inner--vertical'; Cypress.Commands.add('load', (url: string) => { let loaded = false; function next(_cy) { return loaded ? _cy.wait(1) : _cy.wait(100).then(() => { return next(_cy); }); } function waitForElement(win) { let parent = win.document.getElementById('gstc'); if (!parent) parent = win.document.getElementById('app'); if (!parent) { return setTimeout(() => { waitForElement(win); }, 10); } parent.addEventListener('gstc-loaded', (ev) => { loaded = true; }); setTimeout(() => { if (!loaded) { loaded = true; } }, 2000); } return cy .visit(url, { onBeforeLoad: (win) => { waitForElement(win); }, }) .wait(10) .then(() => { return loaded ? cy : next(cy); }); }); Cypress.Commands.add('scrollH', (movementX) => { const coordinates = { screenX: 0, screenY: 0 }; return cy .get(horizontalScrollBarSelector) .then(($el) => { const offset = $el.offset(); const width = $el.width(); const height = $el.height(); coordinates.screenX += Math.floor(offset.left + width / 2); coordinates.screenY += Math.floor(offset.top + height / 2); }) .get(horizontalScrollBarSelector) .trigger('pointerdown', coordinates) .then(() => { coordinates.screenX += +movementX; }) .trigger('pointermove', coordinates) .trigger('pointerup', coordinates) .wait(Cypress.env('wait')) .then(() => { cy.log('scrollH finished'); }); }); Cypress.Commands.add('scrollV', (movementY) => { const coordinates = { screenX: 10, screenY: 10, }; return cy .get(verticalScrollBarSelector) .then(($el) => { const offset = $el.offset(); const width = $el.width(); const height = $el.height(); coordinates.screenX += Math.floor(offset.left + width / 2); coordinates.screenY += Math.floor(offset.top + height / 2); }) .get(verticalScrollBarSelector) .trigger('pointerdown', coordinates) .then(() => { coordinates.screenY += movementY; }) .trigger('pointermove', coordinates) .trigger('pointerup', coordinates) .wait(Cypress.env('wait')) .then(() => { cy.log('scrollH finished'); }); }); Cypress.Commands.add('move', (selector, movementX, movementY) => { const coordinates = { x: 0, y: 0, }; return cy .get(selector) .then(($el) => { const offset = $el.offset(); const width = $el.width(); const height = $el.height(); coordinates.x += Math.floor(offset.left + width / 2); coordinates.y += Math.floor(offset.top + height / 2); }) .get(selector) .get('body') .trigger('pointerdown', coordinates) .trigger('pointermove', coordinates) .then(() => { coordinates.x += movementX; coordinates.y += movementY; }) .trigger('pointermove', coordinates) .trigger('pointerup', coordinates) .wait(Cypress.env('wait')) .then(() => { cy.log('move finished'); }); }); Cypress.Commands.add('moveDirect', (selector, movementX, movementY) => { const coordinates = { x: 0, y: 0, }; return cy .get(selector) .then(($el) => { const width = $el.width(); const height = $el.height(); coordinates.x += Math.floor(width / 2); coordinates.y += Math.floor(height / 2); }) .get(selector) .trigger('pointerdown', coordinates) .trigger('pointermove', coordinates) .then(() => { coordinates.x += movementX; coordinates.y += movementY; }) .trigger('pointermove', coordinates) .trigger('pointerup', coordinates) .wait(Cypress.env('wait')) .then(() => { cy.log('move finished'); }); });