From 97b3847c91a20ffee30ca90feed115f681a72c95 Mon Sep 17 00:00:00 2001 From: Raju Udava <86527202+dstala@users.noreply.github.com> Date: Mon, 17 Oct 2022 11:24:24 +0530 Subject: [PATCH] test: enable share pwd, new content after share Signed-off-by: Raju Udava <86527202+dstala@users.noreply.github.com> --- .../pages/Dashboard/Grid/Toolbar/ShareView.ts | 15 ++- .../pages/Dashboard/Grid/Toolbar/index.ts | 6 + .../playwright/tests/gridViewShare.spec.ts | 120 +++++++++++++++++- 3 files changed, 134 insertions(+), 7 deletions(-) diff --git a/scripts/playwright/pages/Dashboard/Grid/Toolbar/ShareView.ts b/scripts/playwright/pages/Dashboard/Grid/Toolbar/ShareView.ts index e751a69ad3..78ac2842f9 100644 --- a/scripts/playwright/pages/Dashboard/Grid/Toolbar/ShareView.ts +++ b/scripts/playwright/pages/Dashboard/Grid/Toolbar/ShareView.ts @@ -13,10 +13,17 @@ export class ToolbarShareViewPage extends BasePage { return this.rootPage.locator(`.nc-modal-share-view`); } - async enablePassword() { + async enablePassword(pwd: string) { await this.get() - .locator(`[data-pw="nc-modal-share-view__with-password"`) + .locator(`[data-pw="nc-modal-share-view__with-password"]`) + .click(); + await this.get() + .locator(`[data-pw="nc-modal-share-view__password"]`) + .fill(pwd); + await this.get() + .locator(`[data-pw="nc-modal-share-view__save-password"]`) .click(); + await this.toastWait({ message: "Successfully updated" }); } async disablePassword() { @@ -36,4 +43,8 @@ export class ToolbarShareViewPage extends BasePage { .locator(`[data-pw="nc-modal-share-view__link"]`) .innerText(); } + + async close() { + await this.get().locator(`.ant-modal-close-x`).click(); + } } diff --git a/scripts/playwright/pages/Dashboard/Grid/Toolbar/index.ts b/scripts/playwright/pages/Dashboard/Grid/Toolbar/index.ts index 1cea218eeb..bc5e3c0cc0 100644 --- a/scripts/playwright/pages/Dashboard/Grid/Toolbar/index.ts +++ b/scripts/playwright/pages/Dashboard/Grid/Toolbar/index.ts @@ -87,4 +87,10 @@ export class ToolbarPage extends BasePage { const file = fs.readFileSync("./at.txt", "utf8"); await expect(file).toEqual(expectedData); } + + async verifyDownloadDisabled() { + await this.get() + .locator(`.nc-toolbar-btn.nc-actions-menu-btn`) + .waitFor({ state: "hidden" }); + } } diff --git a/scripts/playwright/tests/gridViewShare.spec.ts b/scripts/playwright/tests/gridViewShare.spec.ts index 10f0cffc0b..72894dcc6c 100644 --- a/scripts/playwright/tests/gridViewShare.spec.ts +++ b/scripts/playwright/tests/gridViewShare.spec.ts @@ -6,12 +6,26 @@ test.describe("Shared view", () => { let dashboard: DashboardPage; let context: any; + let mainPageLink: string; + let sharedLink: string; + test.beforeEach(async ({ page }) => { context = await setup({ page }); dashboard = new DashboardPage(page, context.project); }); - test("Grid share", async ({ page }) => { + test("Grid share ", async ({ page }) => { + /** + * 1. Create Shared view + * - hide column + * - add sort + * - add filter + * - enable download + * - disable password + * - generate shared view link + * - copy link + **/ + // close 'Team & Auth' tab await dashboard.closeTab({ title: "Team & Auth" }); await dashboard.treeView.openTable({ title: "Address" }); @@ -30,13 +44,21 @@ test.describe("Shared view", () => { opType: "is like", }); - const mainPageLink = page.url(); + mainPageLink = page.url(); // share with password disabled, download enabled await dashboard.grid.toolbar.clickShareView(); - let link = await dashboard.grid.toolbar.shareView.getShareLink(); + sharedLink = await dashboard.grid.toolbar.shareView.getShareLink(); + + /** + * 2. Access shared view: verify + * - access without password + * - column order + * - data order (sort & filter) + * - virtual columns (hm, bt) + **/ - await page.goto(link); + await page.goto(sharedLink); const sharedPage = new DashboardPage(page, context.project); let expectedColumns = [ @@ -78,6 +100,24 @@ test.describe("Shared view", () => { for (const record of expectedRecords) { await sharedPage.grid.cell.verify(record); } + const expectedVirtualRecords = [ + { index: 0, columnHeader: "Customer List", count: 1, value: ["2"] }, + { index: 1, columnHeader: "Customer List", count: 1, value: ["2"] }, + { index: 0, columnHeader: "City", count: 1, value: ["Kanchrapara"] }, + { index: 1, columnHeader: "City", count: 1, value: ["Tafuna"] }, + ]; + + // verify virtual records + for (const record of expectedVirtualRecords) { + await sharedPage.grid.cell.verifyVirtualCell(record); + } + + /** + * 3. Shared view: verify + * - new sort + * - new filter + * - new column hidden + **/ // create new sort & filter criteria in shared view await sharedPage.grid.toolbar.sort.addSort({ @@ -117,12 +157,82 @@ test.describe("Shared view", () => { await sharedPage.grid.cell.verify(record); } + /** + * 4. Download + * - Verify download data (order, filter, sort) + **/ + // verify download await sharedPage.grid.toolbar.clickDownload( "Download as CSV", "./expectedData.txt" ); - // await dashboard.closeTab({ title: "Address" }); + /** + * 5. Enable shared view password, disable download: verify + * - Incorrect password + * - Correct password + * - Download disabled + * - Add new record & column after shared view creation; verify + **/ + + // visit main page + await page.goto(mainPageLink); + await dashboard.closeTab({ title: "Address" }); + await dashboard.treeView.openTable({ title: "Country" }); + + // enable password & verify share link + await dashboard.grid.toolbar.clickShareView(); + await dashboard.grid.toolbar.shareView.enablePassword("p@ssword"); + // disable download + await dashboard.grid.toolbar.shareView.toggleDownload(); + + sharedLink = await dashboard.grid.toolbar.shareView.getShareLink(); + await dashboard.grid.toolbar.shareView.close(); + + // add new column, record after share view creation + await dashboard.grid.column.create({ + title: "New Column", + }); + await dashboard.grid.addNewRow({ + index: 25, + columnHeader: "Country", + value: "New Country", + }); + + await page.goto(sharedLink); + + // verify if password request modal exists + const sharedPage2 = new DashboardPage(page, context.project); + await sharedPage2.rootPage + .locator('input[placeholder="Enter password"]') + .fill("incorrect p@ssword"); + await sharedPage2.rootPage.click('button:has-text("Unlock")'); + await sharedPage2.toastWait({ message: "INVALID_SHARED_VIEW_PASSWORD" }); + + // correct password + await sharedPage2.rootPage + .locator('input[placeholder="Enter password"]') + .fill("p@ssword"); + await sharedPage2.rootPage.click('button:has-text("Unlock")'); + + // verify if download button is disabled + await sharedPage2.grid.toolbar.verifyDownloadDisabled(); + + // verify new column & record + await sharedPage2.grid.column.verify({ + title: "New Column", + isVisible: true, + }); + await sharedPage2.grid.toolbar.filter.addNew({ + columnTitle: "Country", + value: "New Country", + opType: "is like", + }); + await sharedPage2.grid.cell.verify({ + index: 0, + columnHeader: "Country", + value: "New Country", + }); }); });