|
|
|
@ -30,32 +30,32 @@ import { isXcdb, isPostgres } from "./page_objects/projectConstants";
|
|
|
|
|
require("@4tw/cypress-drag-drop"); |
|
|
|
|
|
|
|
|
|
// recursively gets an element, returning only after it's determined to be attached to the DOM for good
|
|
|
|
|
Cypress.Commands.add('getSettled', (selector, opts = {}) => { |
|
|
|
|
Cypress.Commands.add("getSettled", (selector, opts = {}) => { |
|
|
|
|
const retries = opts.retries || 3; |
|
|
|
|
const delay = opts.delay || 400; |
|
|
|
|
|
|
|
|
|
const isAttached = (resolve, count = 0) => { |
|
|
|
|
const el = Cypress.$(selector); |
|
|
|
|
const el = Cypress.$(selector); |
|
|
|
|
|
|
|
|
|
// is element attached to the DOM?
|
|
|
|
|
count = Cypress.dom.isAttached(el) ? count + 1 : 0; |
|
|
|
|
// is element attached to the DOM?
|
|
|
|
|
count = Cypress.dom.isAttached(el) ? count + 1 : 0; |
|
|
|
|
|
|
|
|
|
// hit our base case, return the element
|
|
|
|
|
if (count >= retries) { |
|
|
|
|
return resolve(el); |
|
|
|
|
} |
|
|
|
|
// hit our base case, return the element
|
|
|
|
|
if (count >= retries) { |
|
|
|
|
return resolve(el); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
// retry after a bit of a delay
|
|
|
|
|
setTimeout(() => isAttached(resolve, count), delay); |
|
|
|
|
// retry after a bit of a delay
|
|
|
|
|
setTimeout(() => isAttached(resolve, count), delay); |
|
|
|
|
}; |
|
|
|
|
|
|
|
|
|
// wrap, so we can chain cypress commands off the result
|
|
|
|
|
return cy.wrap(null).then(() => { |
|
|
|
|
return new Cypress.Promise((resolve) => { |
|
|
|
|
return isAttached(resolve, 0); |
|
|
|
|
}).then((el) => { |
|
|
|
|
return cy.wrap(el); |
|
|
|
|
}); |
|
|
|
|
return new Cypress.Promise((resolve) => { |
|
|
|
|
return isAttached(resolve, 0); |
|
|
|
|
}).then((el) => { |
|
|
|
|
return cy.wrap(el); |
|
|
|
|
}); |
|
|
|
|
}); |
|
|
|
|
}); |
|
|
|
|
|
|
|
|
@ -179,7 +179,7 @@ Cypress.Commands.add("openTableTab", (tn, rc) => {
|
|
|
|
|
// for some tables, linked records are not available immediately
|
|
|
|
|
cy.wait(1000); |
|
|
|
|
|
|
|
|
|
cy.get(".xc-row-table.nc-grid").should("exist"); |
|
|
|
|
cy.get(".xc-row-table.nc-grid", { timeout: 30000 }).should("exist"); |
|
|
|
|
|
|
|
|
|
// wait for page rendering to complete
|
|
|
|
|
if (rc != 0) { |
|
|
|
|