From b559d8309742bab05124306dd03295c529e83439 Mon Sep 17 00:00:00 2001 From: Raju Udava <86527202+dstala@users.noreply.github.com> Date: Fri, 30 Sep 2022 07:53:24 +0530 Subject: [PATCH] test: pg grid view share Signed-off-by: Raju Udava <86527202+dstala@users.noreply.github.com> --- .../common/4f_pg_grid_view_share.js | 220 ++++++++++-------- 1 file changed, 122 insertions(+), 98 deletions(-) diff --git a/scripts/cypress/integration/common/4f_pg_grid_view_share.js b/scripts/cypress/integration/common/4f_pg_grid_view_share.js index 58ac85b625..a127117f9b 100644 --- a/scripts/cypress/integration/common/4f_pg_grid_view_share.js +++ b/scripts/cypress/integration/common/4f_pg_grid_view_share.js @@ -1,5 +1,6 @@ import { isTestSuiteActive } from "../../support/page_objects/projectConstants"; import { mainPage } from "../../support/page_objects/mainPage"; +import { loginPage } from "../../support/page_objects/navigation"; let storedURL = ""; @@ -15,12 +16,9 @@ export const genTest = (apiType, dbType) => { if (!isTestSuiteActive(apiType, dbType)) return; const generateViewLink = (viewName) => { - // click on share view - // cy.get(".v-navigation-drawer__content > .container") - // .find(".v-list > .v-list-item") - // .contains("Share View") - // .click(); - mainPage.shareView().click({ force: true }); + mainPage.shareView().click(); + + cy.wait(1000); // wait, as URL initially will be /undefined cy.getActiveModal(".nc-modal-share-view") @@ -37,19 +35,21 @@ export const genTest = (apiType, dbType) => { // viewURL.push($obj.text()) viewURL[viewName] = $obj.text().trim(); }); + + cy.getActiveModal(".nc-modal-share-view").should("not.be.visible"); }; + let clear; + describe(`${apiType.toUpperCase()} api - GRID view (Share)`, () => { // Run once before test- create project (rest/graphql) // before(() => { - cy.fileHook(); - mainPage.tabReset(); - // open a table to work on views - // + cy.restoreLocalStorage(); cy.openTableTab("Address", 25); - cy.saveLocalStorage(); + clear = Cypress.LocalStorage.clear; + Cypress.LocalStorage.clear = () => {}; }); beforeEach(() => { @@ -63,7 +63,11 @@ export const genTest = (apiType, dbType) => { after(() => { // close table // mainPage.deleteCreatedViews() + cy.restoreLocalStorage(); cy.closeTableTab("Address"); + cy.saveLocalStorage(); + + Cypress.LocalStorage.clear = clear; }); // Common routine to create/edit/delete GRID & GALLERY view @@ -85,14 +89,22 @@ export const genTest = (apiType, dbType) => { }); it(`Share ${viewType.toUpperCase()} hide, sort, filter & verify`, () => { + cy.intercept("/api/v1/db/meta/audits/comments/**").as( + "waitForPageLoad" + ); + cy.get(`.nc-view-item.nc-${viewType}-view-item`) - .contains("Address1") + .contains("Grid-1") .click(); mainPage.hideField("Address2"); mainPage.sortField("Address", "Z → A"); mainPage.filterField("Address", "is like", "Ab"); generateViewLink("combined"); cy.log(viewURL["combined"]); + + cy.wait(["@waitForPageLoad"]); + // kludge: additional wait to ensure page load is completed + cy.wait(2000); }); it(`Share GRID view : ensure we have only one link even if shared multiple times`, () => { @@ -101,16 +113,8 @@ export const genTest = (apiType, dbType) => { generateViewLink("combined"); // verify if only one link exists in table - // cy.get(".v-navigation-drawer__content > .container") - // .find(".v-list > .v-list-item") - // .contains("Share View") - // .parent() - // .find("button.mdi-dots-vertical") - // .click(); mainPage.shareViewList().click(); - // cy.getActiveMenu().find(".v-list-item").contains("Views List").click(); - cy.get('th:contains("View Link")').should("exist"); cy.get('th:contains("View Link")') @@ -121,12 +125,10 @@ export const genTest = (apiType, dbType) => { .its("length") .should("eq", 1) .then(() => { - // cy.get(".v-overlay__content > .d-flex > .v-icon").click(); - // close modal (fix me! add a close button to share view list modal) - cy.get(".v-overlay--active > .v-overlay__scrim").click({ - force: true, - }); + cy.get("button.ant-modal-close:visible").click(); }); + + cy.signOut(); }); it(`Share ${viewType.toUpperCase()} view : Visit URL, Verify title`, () => { @@ -134,19 +136,20 @@ export const genTest = (apiType, dbType) => { cy.visit(viewURL["combined"], { baseUrl: null, }); + cy.wait(5000); // wait for page rendering to complete cy.get(".nc-grid-row").should("have.length", 18); // verify title - cy.get("div.model-name").contains("Address1").should("exist"); + cy.get(".nc-shared-view-title").contains("Grid-1").should("exist"); }); it(`Share ${viewType.toUpperCase()} view : verify fields hidden/open`, () => { // verify column headers - cy.get('[data-col="Address"]').should("exist"); - cy.get('[data-col="Address2"]').should("not.exist"); - cy.get('[data-col="District"]').should("exist"); + cy.get('[data-title="Address"]').should("exist"); + cy.get('[data-title="Address2"]').should("not.exist"); + cy.get('[data-title="District"]').should("exist"); }); it(`Share ${viewType.toUpperCase()} view : verify fields sort/ filter`, () => { @@ -187,7 +190,10 @@ export const genTest = (apiType, dbType) => { }; // download & verify - mainPage.downloadAndVerifyCsv(`Address_exported_1.csv`, verifyCsv); + mainPage.downloadAndVerifyCsvFromSharedView( + `Address_exported_1.csv`, + verifyCsv + ); mainPage.unhideField("LastUpdate"); }); @@ -196,9 +202,7 @@ export const genTest = (apiType, dbType) => { mainPage.clearSort(); mainPage .getCell("Address", 1) - //ncv2@fixme .contains("669 Firozabad Loop") - //.contains("217 Botshabelo Place") .should("exist"); }); @@ -258,21 +262,21 @@ export const genTest = (apiType, dbType) => { it(`Share GRID view : Virtual column validation > has many`, () => { // verify column headers - cy.get('[data-col="Customer List"]').should("exist"); - cy.get('[data-col="Staff List"]').should("exist"); - cy.get('[data-col="City"]').should("exist"); - cy.get('[data-col="Staff List"]').should("exist"); + cy.get('[data-title="Customer List"]').should("exist"); + cy.get('[data-title="Staff List"]').should("exist"); + cy.get('[data-title="City"]').should("exist"); + cy.get('[data-title="Staff List"]').should("exist"); // has many field validation mainPage .getCell("Customer List", 3) .click() - .find("button.mdi-close-thick") + .find(".nc-icon.nc-unlink-icon") .should("not.exist"); mainPage .getCell("Customer List", 3) .click() - .find("button.mdi-plus") + .find(".nc-icon.nc-action-icon.nc-plus") .should("not.exist"); mainPage .getCell("Customer List", 3) @@ -303,17 +307,17 @@ export const genTest = (apiType, dbType) => { mainPage .getCell("City", 1) .click() - .find("button.mdi-close-thick") + .find(".nc-icon.nc-unlink-icon") .should("not.exist"); mainPage .getCell("City", 1) .click() - .find("button.mdi-arrow-expand") + .find(".nc-icon.nc-action-icon.nc-arrow-expand") .should("not.exist"); mainPage .getCell("City", 1) - .find(".v-chip") - .contains("al-Ayn") + .find(".chips") + .contains("Kanchrapara") .should("exist"); }); @@ -322,39 +326,42 @@ export const genTest = (apiType, dbType) => { mainPage .getCell("Staff List", 1) .click() - .find("button.mdi-close-thick") + .find(".nc-icon.nc-unlink-icon") .should("not.exist"); mainPage .getCell("Staff List", 1) .click() - .find("button.mdi-plus") + .find(".nc-icon.nc-action-icon.nc-plus") .should("not.exist"); + mainPage .getCell("Staff List", 1) .click() - .find("button.mdi-arrow-expand") - .click(); - - cy.getActiveModal(".nc-modal-child-list") - .find("button.mdi-reload") - .should("exist"); - cy.getActiveModal(".nc-modal-child-list") - .find("button") - .contains("Link to") - .should("not.exist"); - cy.get("body").type("{esc}"); + .find(".nc-icon.nc-action-icon.nc-arrow-expand") + .click({ force: true }); + + // // reload button + // Fix me : ncv2@fixme + // cy.getActiveModal().find(".nc-icon").should("exist"); + // cy.getActiveModal() + // .find("button") + // .contains("Link to") + // .should("not.exist"); + // cy.get('button.ant-modal-close:visible').last().click(); }); it(`Delete ${viewType.toUpperCase()} view`, () => { // go back to base page - cy.visit(storedURL, { - baseUrl: null, - }); + loginPage.loginAndOpenProject(apiType, dbType); + cy.openTableTab("Address", 25); // number of view entries should be 2 before we delete cy.get(".nc-view-item").its("length").should("eq", 2); cy.get(".nc-view-delete-icon").eq(0).click({ force: true }); + cy.getActiveModal(".nc-modal-view-delete") + .find(".ant-btn-dangerous") + .click(); cy.toastWait("View deleted successfully"); // confirm if the number of veiw entries is reduced by 1 @@ -368,11 +375,11 @@ export const genTest = (apiType, dbType) => { describe(`${apiType.toUpperCase()} api - Grid view/ row-column update verification`, () => { before(() => { - cy.fileHook(); + cy.restoreLocalStorage(); + // Address table has belongs to, has many & many-to-many cy.openTableTab("Country", 25); - cy.saveLocalStorage(); // store base URL- to re-visit and delete form view later cy.url().then((url) => { storedURL = url; @@ -380,60 +387,52 @@ export const genTest = (apiType, dbType) => { }); }); - after(() => { - // close table + beforeEach(() => { cy.restoreLocalStorage(); - cy.visit(storedURL, { - baseUrl: null, - }); - - // delete row - mainPage.getPagination(5).click(); - - // wait for page rendering to complete - cy.get(".nc-grid-row").should("have.length", 10); - mainPage - .getRow(10) - .find(".mdi-checkbox-blank-outline") - .click({ force: true }); - mainPage.getCell("Country", 10).rightclick(); - cy.getActiveMenu(".nc-dropdown-grid-context-menu") - .contains("Delete Selected Row") - .click(); - - // delete column - cy.get(`th:contains('dummy') .mdi-menu-down`) - .trigger("mouseover") - .click(); - cy.get(".nc-column-delete").click(); - cy.get("button:contains(Confirm)").click(); - - cy.toastWait("Update table successful"); + }); - mainPage.deleteCreatedViews(); + afterEach(() => { + cy.saveLocalStorage(); + }); - // close table + after(() => { + cy.restoreLocalStorage(); cy.closeTableTab("Country"); + cy.saveLocalStorage(); }); it(`Generate default Shared GRID view URL`, () => { // add row cy.get(".nc-add-new-row-btn").click(); - cy.get("#data-table-form-Country > input").first().click().type("a"); - cy.contains("Save row").filter("button").click({ force: true }); + cy.get(".nc-expand-col-Country") + .find(".nc-cell > input") + .should("exist") + .first() + .clear({ force: true }) + .type("a"); + cy.getActiveDrawer(".nc-drawer-expanded-form") + .find("button") + .contains("Save row") + .should("exist") + .click(); cy.toastWait("updated successfully"); - + cy.getActiveDrawer(".nc-drawer-expanded-form") + .find("button") + .contains("Cancel") + .should("exist") + .click(); // add column mainPage.addColumn("dummy", "Country"); + cy.signOut(); + // visit public view cy.log(viewURL["rowColUpdate"]); - cy.restoreLocalStorage(); cy.visit(viewURL["rowColUpdate"], { baseUrl: null, }); + cy.wait(5000); - //5 // wait for public view page to load! // wait for page rendering to complete cy.get(".nc-grid-row").should("have.length", 25); @@ -441,15 +440,40 @@ export const genTest = (apiType, dbType) => { it(`Share GRID view : new row visible`, () => { // verify row - cy.get(`.v-pagination > li:contains('5') button`).click(); + // cy.get(`.v-pagination > li:contains('5') button`).click(); + cy.get( + `.nc-pagination > .ant-pagination-item.ant-pagination-item-5` + ).click(); // wait for page rendering to complete cy.get(".nc-grid-row").should("have.length", 10); mainPage.getCell("Country", 10).contains("a").should("exist"); }); - it.skip(`Share GRID view : new column visible`, () => { + it(`Share GRID view : new column visible`, () => { // verify column headers - cy.get('[data-col="dummy"]').should("exist"); + cy.get('[data-title="dummy"]').should("exist"); + }); + + it(`Clean up`, () => { + loginPage.loginAndOpenProject(apiType, dbType); + cy.openTableTab("Country", 25); + + // delete row + mainPage.getPagination(5).click(); + // kludge: flicker on load + cy.wait(3000); + + // wait for page rendering to complete + cy.get(".nc-grid-row").should("have.length", 10); + mainPage.getCell("Country", 10).rightclick(); + cy.getActiveMenu(".nc-dropdown-grid-context-menu") + .find('.ant-dropdown-menu-item:contains("Delete Row")') + .first() + .click(); + + // delete column + mainPage.deleteColumn("dummy"); + mainPage.deleteCreatedViews(); }); }); };