diff --git a/scripts/cypress/integration/common/00_pre_configurations.js b/scripts/cypress/integration/common/00_pre_configurations.js index baff649a0d..a600f7e275 100644 --- a/scripts/cypress/integration/common/00_pre_configurations.js +++ b/scripts/cypress/integration/common/00_pre_configurations.js @@ -243,12 +243,7 @@ export const genTest = (apiType, dbType) => { // wait for tab to be rendered completely cy.wait(2000); - - cy.getSettled("button.ant-tabs-tab-remove") - .should("be.visible") - .click(); - cy.get("button.ant-tabs-tab-remove").should("not.exist"); - cy.wait(2000); + cy.closeTableTab(); // first instance of updating local storage information cy.saveLocalStorage(); diff --git a/scripts/cypress/integration/common/1b_table_column_operations.js b/scripts/cypress/integration/common/1b_table_column_operations.js index f1d53f0895..e01b1a97a4 100644 --- a/scripts/cypress/integration/common/1b_table_column_operations.js +++ b/scripts/cypress/integration/common/1b_table_column_operations.js @@ -75,9 +75,7 @@ export const genTest = (apiType, dbType) => { .find(".nc-column-edit") .click(); - // fix me! wait till the modal rendering (input highlight) is completed - // focus shifts back to the input field to select text after the dropdown is rendered - cy.wait(500); + cy.inputHighlightRenderWait(); // change column type and verify // cy.get(".nc-column-type-input").last().click(); diff --git a/scripts/cypress/integration/common/3c_lookup_column.js b/scripts/cypress/integration/common/3c_lookup_column.js index 7980380009..6f76e89c6f 100644 --- a/scripts/cypress/integration/common/3c_lookup_column.js +++ b/scripts/cypress/integration/common/3c_lookup_column.js @@ -11,18 +11,7 @@ export const genTest = (apiType, dbType) => { cy.get("label").contains(label).parents(".ant-row").click(); }; - // Run once before test- create project (rest/graphql) - // // before(() => { - // cy.fileHook(); - // mainPage.tabReset(); - // // open a table to work on views - // // - // - // // // close team & auth tab - // // cy.get('button.ant-tabs-tab-remove').should('exist').click(); - // - // cy.openTableTab("City", 25); // }); beforeEach(() => { @@ -60,9 +49,7 @@ export const genTest = (apiType, dbType) => { .contains("Lookup") .click(); - // fix me! wait till the modal rendering (input highlight) is completed - // focus shifts back to the input field to select text after the dropdown is rendered - cy.wait(500); + cy.inputHighlightRenderWait(); // Configure Child table & column names fetchParentFromLabel("Child table"); diff --git a/scripts/cypress/integration/common/3d_rollup_column.js b/scripts/cypress/integration/common/3d_rollup_column.js index 30d35e5ce9..28af98540d 100644 --- a/scripts/cypress/integration/common/3d_rollup_column.js +++ b/scripts/cypress/integration/common/3d_rollup_column.js @@ -11,17 +11,7 @@ export const genTest = (apiType, dbType) => { cy.get("label").contains(label).parents(".ant-row").click(); }; - // Run once before test- create project (rest/graphql) - // // before(() => { - // cy.fileHook(); - // mainPage.tabReset(); - // - // // // close team & auth tab - // // cy.get('button.ant-tabs-tab-remove').should('exist').click(); - // // open a table to work on views - // // - // cy.openTableTab("Country", 25); // }); beforeEach(() => { @@ -64,9 +54,7 @@ export const genTest = (apiType, dbType) => { .contains("Rollup") .click(); - // fix me! wait till the modal rendering (input highlight) is completed - // focus shifts back to the input field to select text after the dropdown is rendered - cy.wait(500); + cy.inputHighlightRenderWait(); // Configure Child table & column names fetchParentFromLabel("Child table"); diff --git a/scripts/cypress/integration/common/3e_duration_column.js b/scripts/cypress/integration/common/3e_duration_column.js index ce7691d5ca..8824b1eaf0 100644 --- a/scripts/cypress/integration/common/3e_duration_column.js +++ b/scripts/cypress/integration/common/3e_duration_column.js @@ -57,9 +57,7 @@ export const genTest = (apiType, dbType) => { .contains("Duration") .click(); - // fix me! wait till the modal rendering (input highlight) is completed - // focus shifts back to the input field to select text after the dropdown is rendered - cy.wait(500); + cy.inputHighlightRenderWait(); // Configure Duration format fetchParentFromLabel("Duration Format"); @@ -101,9 +99,7 @@ export const genTest = (apiType, dbType) => { .clear() .type(newName); - // fix me! wait till the modal rendering (input highlight) is completed - // focus shifts back to the input field to select text after the dropdown is rendered - cy.wait(500); + cy.inputHighlightRenderWait(); // Configure Duration format fetchParentFromLabel("Duration Format"); diff --git a/scripts/cypress/integration/common/3f_link_to_another_record.js b/scripts/cypress/integration/common/3f_link_to_another_record.js index 8e072ee185..7414773786 100644 --- a/scripts/cypress/integration/common/3f_link_to_another_record.js +++ b/scripts/cypress/integration/common/3f_link_to_another_record.js @@ -6,7 +6,7 @@ export const genTest = (apiType, dbType) => { if (!isTestSuiteActive(apiType, dbType)) return; // tbd: this needs a proper fix - let waitTime = 2000; + let waitTime = 0; let clear; describe(`${apiType.toUpperCase()} api - Link to another record`, () => { @@ -185,7 +185,6 @@ export const genTest = (apiType, dbType) => { // Click on `Add new row` button cy.get(".nc-add-new-row-btn:visible").should("exist"); cy.get(".nc-add-new-row-btn").click(); - cy.wait(waitTime); // Title cy.get(".nc-expand-col-Title") @@ -205,32 +204,26 @@ export const genTest = (apiType, dbType) => { .find(".nc-action-icon") .should("exist") .click({ force: true }); - cy.wait(waitTime); cy.wait("@waitForCardLoad"); cy.getActiveModal(".nc-modal-link-record") .find(".ant-card") .should("exist") .eq(0) .click(); - cy.wait(waitTime); // MM cy.get(".nc-expand-col-Sheet1.List").find(".ant-btn-primary").click(); - cy.wait(waitTime); cy.wait("@waitForCardLoad"); cy.getActiveModal(".nc-modal-link-record") .find(".ant-card") .should("exist") .eq(0) .click(); - cy.wait(waitTime); // HM cy.get(".nc-expand-col-Link2-1hm").find(".ant-btn-primary").click(); - cy.wait(waitTime); cy.wait("@waitForCardLoad"); cy.getActiveModal().find(".ant-card").should("exist").eq(0).click(); - cy.wait(waitTime); // Save row cy.getActiveDrawer(".nc-drawer-expanded-form") @@ -256,13 +249,11 @@ export const genTest = (apiType, dbType) => { .getCell("Sheet1", 2) .find(".nc-action-icon") .click({ force: true }); - cy.wait(waitTime); cy.getActiveModal(".nc-modal-link-record") .find(".ant-card") .should("exist") .eq(1) .click(); - cy.wait(waitTime); // MM mainPage @@ -270,13 +261,11 @@ export const genTest = (apiType, dbType) => { .find(".nc-action-icon") .last() .click({ force: true }); - cy.wait(waitTime); cy.getActiveModal(".nc-modal-link-record") .find(".ant-card") .should("exist") .eq(1) .click(); - cy.wait(waitTime); // HM mainPage @@ -284,13 +273,11 @@ export const genTest = (apiType, dbType) => { .find(".nc-action-icon") .last() .click({ force: true }); - cy.wait(waitTime); cy.getActiveModal(".nc-modal-link-record") .find(".ant-card") .should("exist") .eq(1) .click(); - cy.wait(waitTime); }); // Existing row, expand record @@ -300,49 +287,37 @@ export const genTest = (apiType, dbType) => { addRow(3, "2c"); - cy.wait(waitTime); cy.get(".nc-row-expand").eq(2).click({ force: true }); - cy.wait(waitTime); // wait for page render to complete cy.get('button:contains("Save row"):visible').should("exist"); // BT - cy.wait(waitTime); cy.get(".nc-expand-col-Sheet1") .find(".nc-action-icon") .should("exist") .click({ force: true }); - cy.wait(waitTime); - // cy.wait("@waitForCardLoad"); cy.getActiveModal(".nc-modal-link-record") .find(".ant-card") .should("exist") .eq(2) .click(); - cy.wait(waitTime); // MM cy.get(".nc-expand-col-Sheet1.List").find(".ant-btn-primary").click(); - cy.wait(waitTime); - // cy.wait("@waitForCardLoad"); cy.getActiveModal(".nc-modal-link-record") .find(".ant-card") .should("exist") .eq(2) .click(); - cy.wait(waitTime); // HM cy.get(".nc-expand-col-Link2-1hm").find(".ant-btn-primary").click(); - cy.wait(waitTime); - // cy.wait("@waitForCardLoad"); cy.getActiveModal(".nc-modal-link-record") .find(".ant-card") .should("exist") .eq(2) .click(); - cy.wait(waitTime); cy.getActiveDrawer(".nc-drawer-expanded-form") .find("button") diff --git a/scripts/cypress/integration/common/5a_user_role.js b/scripts/cypress/integration/common/5a_user_role.js index 85d0a48b8f..336fc0a28a 100644 --- a/scripts/cypress/integration/common/5a_user_role.js +++ b/scripts/cypress/integration/common/5a_user_role.js @@ -145,14 +145,7 @@ export const genTest = (apiType, dbType) => { } if (roleType === "creator") { - // kludge: wait for page load to finish - // close team & auth tab - // cy.wait(500); - // cy.get("button.ant-tabs-tab-remove").should("exist").click(); - cy.getSettled("button.ant-tabs-tab-remove") - .should("be.visible") - .click(); - cy.wait(2000); + cy.closeTableTab(); } cy.saveLocalStorage(); diff --git a/scripts/cypress/integration/common/9a_QuickTest.js b/scripts/cypress/integration/common/9a_QuickTest.js index 6487b4c297..97af0e9666 100644 --- a/scripts/cypress/integration/common/9a_QuickTest.js +++ b/scripts/cypress/integration/common/9a_QuickTest.js @@ -113,9 +113,7 @@ export const genTest = (apiType, dbType, testMode) => { // kludge: wait for page load to finish cy.wait(2000); - // close team & auth tab - cy.get("button.ant-tabs-tab-remove").should("exist").click(); - cy.wait(2000); + cy.closeTableTab(); } else { cy.restoreLocalStorage(); } diff --git a/scripts/cypress/support/commands.js b/scripts/cypress/support/commands.js index 2c32a5d676..a1734a933a 100644 --- a/scripts/cypress/support/commands.js +++ b/scripts/cypress/support/commands.js @@ -189,17 +189,24 @@ Cypress.Commands.add("openTableTab", (tn, rc) => { Cypress.Commands.add("closeTableTab", (tn) => { cy.task("log", `[closeTableTab] ${tn}`); - cy.get(".ant-tabs-tab-btn") - .contains(tn) - .should("exist") - .parent() - .parent() - .parent() - .find("button") - .click(); + if (tn) { + // request to close specific tab + cy.get(".ant-tabs-tab-btn") + .contains(tn) + .should("exist") + .parent() + .parent() + .parent() + .find("button") + .click(); + } else { + // lone tab active; close it + cy.getSettled("button.ant-tabs-tab-remove").should("be.visible").click(); + cy.get("button.ant-tabs-tab-remove").should("not.exist"); + } // subsequent tab open commands will fail if tab is not closed completely - cy.wait(2000) + cy.wait(2000); }); Cypress.Commands.add("openOrCreateGqlProject", (_args) => { @@ -403,6 +410,12 @@ Cypress.Commands.add("toastWait", (msg) => { ); }); +Cypress.Commands.add("inputHighlightRenderWait", (selector) => { + // fix me! wait till the modal rendering (input highlight) is completed + // focus shifts back to the input field to select text after the dropdown is rendered + cy.wait(500); +}); + // vn: view name // rc: expected row count. validate row count if rc!=0 Cypress.Commands.add("openViewsTab", (vn, rc) => { diff --git a/scripts/cypress/support/page_objects/mainPage.js b/scripts/cypress/support/page_objects/mainPage.js index 0d0eef2833..ab4f9f0692 100644 --- a/scripts/cypress/support/page_objects/mainPage.js +++ b/scripts/cypress/support/page_objects/mainPage.js @@ -615,17 +615,7 @@ export class _mainPage { }); } - tabReset() { - // temporary disable (kludge) - // mainPage.toolBarTopLeft(mainPage.HOME).click({ force: true }); - // cy.get(".project-row").should("exist").click({ force: true }); - // projectsPage.waitHomePageLoad(); - // option-2 - // cy.openTableTab("Country", 0); - // cy.get(".mdi-close").click({ multiple: true }); - // cy.get("button.ant-tabs-tab-remove").click({ multiple: true }); - // cy.get('.ant-tabs-tab-remove').should('not.exist') - } + tabReset() {} toggleRightSidebar() { cy.get(".nc-toggle-right-navbar").should("exist").click(); diff --git a/scripts/cypress/support/page_objects/navigation.js b/scripts/cypress/support/page_objects/navigation.js index 0437237500..938350a238 100644 --- a/scripts/cypress/support/page_objects/navigation.js +++ b/scripts/cypress/support/page_objects/navigation.js @@ -70,16 +70,6 @@ export class _loginPage { loginAndOpenProject(apiType, dbType) { loginPage.signIn(roles.owner.credentials); projectsPage.openConfiguredProject(apiType, dbType); - // if (dbType === "mysql") { - // projectsPage.openProject(staticProjects.externalREST.basic.name); - // } else if (dbType === "xcdb") { - // projectsPage.openProject(staticProjects.sampleREST.basic.name); - // } else if (dbType === "postgres") { - // projectsPage.openProject(staticProjects.pgExternalREST.basic.name); - // } - // - // // close team & auth tab - // cy.get('button.ant-tabs-tab-remove').should('exist').click(); } } @@ -108,9 +98,7 @@ export class _projectsPage { cy.wait("@waitForPageLoad"); // close team & auth tab - cy.getSettled("button.ant-tabs-tab-remove").should("be.visible").click(); - cy.get("button.ant-tabs-tab-remove").should("not.exist"); - cy.wait(2000); + cy.closeTableTab(); } // Open existing project @@ -151,9 +139,7 @@ export class _projectsPage { cy.get(".nc-metadb-project-name").should("exist"); cy.contains("button", "Create").should("exist"); - // fix me! wait till the modal rendering (input highlight) is completed - // focus shifts back to the input field to select text after the dropdown is rendered - cy.wait(1000); + cy.inputHighlightRenderWait(); // feed project name cy.get(".nc-metadb-project-name", { timeout: 20000 }) @@ -183,9 +169,7 @@ export class _projectsPage { cy.get(".nc-extdb-proj-name").should("exist"); cy.get(".nc-extdb-btn-test-connection").should("exist"); - // fix me! wait till the modal rendering (input highlight) is completed - // focus shifts back to the input field to select text after the dropdown is rendered - cy.wait(1000); + cy.inputHighlightRenderWait(); cy.get(".nc-extdb-proj-name").clear().type(projectName);