From 760f8c30fcb8703a2c59447c023dfe845b2fe733 Mon Sep 17 00:00:00 2001 From: Tiago Melo Date: Thu, 29 Aug 2019 18:19:56 +0000 Subject: [PATCH] mgr/dashboard: Extract delete method into page-helper Signed-off-by: Tiago Melo --- .../frontend/e2e/block/images.e2e-spec.ts | 8 +++---- .../dashboard/frontend/e2e/block/images.po.ts | 16 ------------- .../frontend/e2e/block/mirroring.e2e-spec.ts | 2 -- .../frontend/e2e/cluster/logs.e2e-spec.ts | 3 --- .../dashboard/frontend/e2e/page-helper.po.ts | 24 +++++++++++++++++++ .../frontend/e2e/pools/pools.e2e-spec.ts | 4 +--- .../dashboard/frontend/e2e/pools/pools.po.ts | 11 --------- .../frontend/e2e/rgw/buckets.e2e-spec.ts | 1 - .../dashboard/frontend/e2e/rgw/buckets.po.ts | 19 +-------------- .../frontend/e2e/rgw/users.e2e-spec.ts | 1 - .../dashboard/frontend/e2e/rgw/users.po.ts | 21 ++-------------- .../frontend/e2e/ui/role-mgmt.e2e-spec.ts | 1 + .../dashboard/frontend/e2e/ui/role-mgmt.po.ts | 15 +----------- .../frontend/e2e/ui/user-mgmt.e2e-spec.ts | 3 ++- .../dashboard/frontend/e2e/ui/user-mgmt.po.ts | 15 +----------- 15 files changed, 36 insertions(+), 108 deletions(-) diff --git a/src/pybind/mgr/dashboard/frontend/e2e/block/images.e2e-spec.ts b/src/pybind/mgr/dashboard/frontend/e2e/block/images.e2e-spec.ts index 93b37627cb6..aee484a21a4 100644 --- a/src/pybind/mgr/dashboard/frontend/e2e/block/images.e2e-spec.ts +++ b/src/pybind/mgr/dashboard/frontend/e2e/block/images.e2e-spec.ts @@ -59,15 +59,13 @@ describe('Images page', () => { }); it('should delete image', async () => { - await images.deleteImage(newImageName); - await expect(images.getTableCell(newImageName).isPresent()).toBe(false); + await images.navigateTo(); + await images.delete(newImageName); }); afterAll(async () => { - await pools.navigateTo(); // Deletes images test pool - await pools.delete(poolName); await pools.navigateTo(); - await pools.exist(poolName, false); + await pools.delete(poolName); }); }); diff --git a/src/pybind/mgr/dashboard/frontend/e2e/block/images.po.ts b/src/pybind/mgr/dashboard/frontend/e2e/block/images.po.ts index 52cb7b497b8..cebdf526348 100644 --- a/src/pybind/mgr/dashboard/frontend/e2e/block/images.po.ts +++ b/src/pybind/mgr/dashboard/frontend/e2e/block/images.po.ts @@ -60,22 +60,6 @@ export class ImagesPageHelper extends PageHelper { ).toMatch(newSize); } - // Deletes RBD image from table and checks that it is not present - async deleteImage(name) { - await this.navigateTo(); - - // wait for table to load - await this.waitClickable(this.getTableCell(name)); - await this.getTableCell(name).click(); // click on the image you want to delete in the table - await $$('.table-actions button.dropdown-toggle') - .first() - .click(); // click toggle menu - await $('li.delete.ng-star-inserted').click(); // click delete - await this.clickCheckbox($('.custom-control-label')); - await element(by.cssContainingText('button', 'Delete RBD')).click(); - await this.waitStaleness(this.getTableCell(name)); - } - // Selects RBD image and moves it to the trash, checks that it is present in the // trash table async moveToTrash(name) { diff --git a/src/pybind/mgr/dashboard/frontend/e2e/block/mirroring.e2e-spec.ts b/src/pybind/mgr/dashboard/frontend/e2e/block/mirroring.e2e-spec.ts index 51d7dba110d..6daddf93173 100644 --- a/src/pybind/mgr/dashboard/frontend/e2e/block/mirroring.e2e-spec.ts +++ b/src/pybind/mgr/dashboard/frontend/e2e/block/mirroring.e2e-spec.ts @@ -59,8 +59,6 @@ describe('Mirroring page', () => { afterAll(async () => { await pools.navigateTo(); await pools.delete(poolName); - await pools.navigateTo(); - await pools.exist(poolName, false); }); }); }); diff --git a/src/pybind/mgr/dashboard/frontend/e2e/cluster/logs.e2e-spec.ts b/src/pybind/mgr/dashboard/frontend/e2e/cluster/logs.e2e-spec.ts index 71127f4a3a2..bd4ac4484e5 100644 --- a/src/pybind/mgr/dashboard/frontend/e2e/cluster/logs.e2e-spec.ts +++ b/src/pybind/mgr/dashboard/frontend/e2e/cluster/logs.e2e-spec.ts @@ -64,9 +64,6 @@ describe('Logs page', () => { await pools.navigateTo(); await pools.delete(poolname); - await pools.navigateTo(); - await pools.exist(poolname, false); - await logs.navigateTo(); await logs.checkAuditForPoolFunction(poolname, 'delete', hour, minute); }); diff --git a/src/pybind/mgr/dashboard/frontend/e2e/page-helper.po.ts b/src/pybind/mgr/dashboard/frontend/e2e/page-helper.po.ts index 6ef40b3e80d..c3dc9aaf336 100644 --- a/src/pybind/mgr/dashboard/frontend/e2e/page-helper.po.ts +++ b/src/pybind/mgr/dashboard/frontend/e2e/page-helper.po.ts @@ -283,4 +283,28 @@ export abstract class PageHelper { getFirstCell(): ElementFinder { return $$('.datatable-body-cell-label').first(); } + + /** + * This is a generic method to delete table rows. + * It will select the first row that contains the provided name and delete it. + * After that it will wait until the row is no longer displayed. + */ + async delete(name: string): Promise { + // Selects row + await this.waitClickable(this.getTableCell(name)); + await this.getTableCell(name).click(); + + // Clicks on table Delete button + await $$('.table-actions button.dropdown-toggle') + .first() + .click(); // open submenu + await $('li.delete a').click(); // click on "delete" menu item + + // Confirms deletion + await this.clickCheckbox($('.custom-control-label')); + await element(by.cssContainingText('button', 'Delete')).click(); + + // Waits for item to be removed from table + return this.waitStaleness(this.getTableCell(name)); + } } diff --git a/src/pybind/mgr/dashboard/frontend/e2e/pools/pools.e2e-spec.ts b/src/pybind/mgr/dashboard/frontend/e2e/pools/pools.e2e-spec.ts index e98101ed54b..83176962227 100644 --- a/src/pybind/mgr/dashboard/frontend/e2e/pools/pools.e2e-spec.ts +++ b/src/pybind/mgr/dashboard/frontend/e2e/pools/pools.e2e-spec.ts @@ -47,9 +47,7 @@ describe('Pools page', () => { }); it('should delete a pool', async () => { - await pools.exist(poolName); - await pools.delete(poolName); await pools.navigateTo(); - await pools.exist(poolName, false); + await pools.delete(poolName); }); }); diff --git a/src/pybind/mgr/dashboard/frontend/e2e/pools/pools.po.ts b/src/pybind/mgr/dashboard/frontend/e2e/pools/pools.po.ts index c5c59daac39..36a000a3fdf 100644 --- a/src/pybind/mgr/dashboard/frontend/e2e/pools/pools.po.ts +++ b/src/pybind/mgr/dashboard/frontend/e2e/pools/pools.po.ts @@ -82,15 +82,4 @@ export class PoolPageHelper extends PageHelper { async (app) => await element(by.cssContainingText('.select-menu-item-content', app)).click() ); } - - @PageHelper.restrictTo(pages.index) - async delete(name: string): Promise { - await this.waitClickable(this.getTableCell(name)); - await this.getTableCell(name).click(); - await $('.table-actions button.dropdown-toggle').click(); // open submenu - await $('li.delete a').click(); // click on "delete" menu item - await this.clickCheckbox($('.custom-control-label')); - await element(by.cssContainingText('button', 'Delete Pool')).click(); - return this.waitStaleness(this.getTableCell(name)); - } } diff --git a/src/pybind/mgr/dashboard/frontend/e2e/rgw/buckets.e2e-spec.ts b/src/pybind/mgr/dashboard/frontend/e2e/rgw/buckets.e2e-spec.ts index 3930ea50756..a6ef61ac743 100644 --- a/src/pybind/mgr/dashboard/frontend/e2e/rgw/buckets.e2e-spec.ts +++ b/src/pybind/mgr/dashboard/frontend/e2e/rgw/buckets.e2e-spec.ts @@ -37,7 +37,6 @@ describe('RGW buckets page', () => { it('should delete bucket', async () => { await buckets.navigateTo(); await buckets.delete('000test'); - await expect(buckets.getTableCell('000test').isPresent()).toBe(false); }); describe('Invalid Input in Create and Edit tests', () => { diff --git a/src/pybind/mgr/dashboard/frontend/e2e/rgw/buckets.po.ts b/src/pybind/mgr/dashboard/frontend/e2e/rgw/buckets.po.ts index ab902d2d2ca..9a90818cd7c 100644 --- a/src/pybind/mgr/dashboard/frontend/e2e/rgw/buckets.po.ts +++ b/src/pybind/mgr/dashboard/frontend/e2e/rgw/buckets.po.ts @@ -1,4 +1,4 @@ -import { $, by, element } from 'protractor'; +import { by, element } from 'protractor'; import { PageHelper } from '../page-helper.po'; const pages = { @@ -64,23 +64,6 @@ export class BucketsPageHelper extends PageHelper { return promise; } - @PageHelper.restrictTo(pages.index) - async delete(name) { - // wait for table to load - await this.waitClickable(this.getTableCell(name)); - - await this.getTableCell(name).click(); // click on the bucket you want to delete in the table - await $('.table-actions button.dropdown-toggle').click(); // click toggle menu - await $('li.delete a').click(); // click delete - // wait for pop-up to be visible (checks for title of pop-up) - await this.waitVisibility($('.modal-title.float-left')); - await this.waitVisibility($('.custom-control-label')); - await $('.custom-control-label').click(); - await element(by.cssContainingText('button', 'Delete bucket')).click(); - await this.navigateTo(); - return this.waitStaleness(this.getTableCell(name)); - } - async testInvalidCreate() { await this.navigateTo('create'); const nameInputField = element(by.id('bid')); // Grabs name box field diff --git a/src/pybind/mgr/dashboard/frontend/e2e/rgw/users.e2e-spec.ts b/src/pybind/mgr/dashboard/frontend/e2e/rgw/users.e2e-spec.ts index 2afea64b5d7..12cc327a35f 100644 --- a/src/pybind/mgr/dashboard/frontend/e2e/rgw/users.e2e-spec.ts +++ b/src/pybind/mgr/dashboard/frontend/e2e/rgw/users.e2e-spec.ts @@ -40,7 +40,6 @@ describe('RGW users page', () => { it('should delete user', async () => { await users.delete(user_name); - await expect(users.getTableCell(user_name).isPresent()).toBe(false); }); }); diff --git a/src/pybind/mgr/dashboard/frontend/e2e/rgw/users.po.ts b/src/pybind/mgr/dashboard/frontend/e2e/rgw/users.po.ts index cf880d6f338..fbef4aba968 100644 --- a/src/pybind/mgr/dashboard/frontend/e2e/rgw/users.po.ts +++ b/src/pybind/mgr/dashboard/frontend/e2e/rgw/users.po.ts @@ -66,25 +66,6 @@ export class UsersPageHelper extends PageHelper { await expect($('.active.tab-pane').getText()).toMatch(new_maxbuckets); // check max buckets was changed } - async delete(name) { - await this.navigateTo(); - - // wait for table to load - const my_user = this.getFirstTableCellWithText(name); - await this.waitClickable(my_user); - - await my_user.click(); // click on the user you want to delete in the table - await $('.table-actions button.dropdown-toggle').click(); // click toggle menu - await $('li.delete a').click(); // click delete - - // wait for pop-up to be visible (checks for title of pop-up) - await this.waitVisibility($('.modal-title.float-left')); - await this.waitVisibility($('.custom-control-label')); - await $('.custom-control-label').click(); // click confirmation checkbox - await element(by.cssContainingText('button', 'Delete user')).click(); - await this.waitStaleness(this.getFirstTableCellWithText(name)); - } - async invalidCreate() { const uname = '000invalid_create_user'; // creating this user in order to check that you can't give two users the same name @@ -151,6 +132,7 @@ export class UsersPageHelper extends PageHelper { 'The entered value must be >= 0.' ); + await this.navigateTo(); await this.delete(uname); } @@ -201,6 +183,7 @@ export class UsersPageHelper extends PageHelper { 'The entered value must be >= 0.' ); + await this.navigateTo(); await this.delete(uname); } } diff --git a/src/pybind/mgr/dashboard/frontend/e2e/ui/role-mgmt.e2e-spec.ts b/src/pybind/mgr/dashboard/frontend/e2e/ui/role-mgmt.e2e-spec.ts index a689a76f9fc..0bff2733058 100644 --- a/src/pybind/mgr/dashboard/frontend/e2e/ui/role-mgmt.e2e-spec.ts +++ b/src/pybind/mgr/dashboard/frontend/e2e/ui/role-mgmt.e2e-spec.ts @@ -35,6 +35,7 @@ describe('Role Management page', () => { }); it('should delete a role', async () => { + await roleMgmt.navigateTo(); await roleMgmt.delete(role_name); }); }); diff --git a/src/pybind/mgr/dashboard/frontend/e2e/ui/role-mgmt.po.ts b/src/pybind/mgr/dashboard/frontend/e2e/ui/role-mgmt.po.ts index ca8d569b3c0..998fa7edced 100644 --- a/src/pybind/mgr/dashboard/frontend/e2e/ui/role-mgmt.po.ts +++ b/src/pybind/mgr/dashboard/frontend/e2e/ui/role-mgmt.po.ts @@ -1,4 +1,4 @@ -import { $, by, element } from 'protractor'; +import { by, element } from 'protractor'; import { PageHelper } from '../page-helper.po'; export class RoleMgmtPageHelper extends PageHelper { @@ -38,17 +38,4 @@ export class RoleMgmtPageHelper extends PageHelper { await this.waitPresence(this.getTableCell(name)); await this.waitPresence(this.getTableCell(description)); } - - async delete(name) { - await this.navigateTo(); - - await this.getTableCell(name).click(); // select role from table - await $('.table-actions button.dropdown-toggle').click(); // click toggle menu - await $('li.delete a').click(); // click delete - - await this.waitVisibility($('.custom-control-label')); - await $('.custom-control-label').click(); // click confirmation checkbox - await element(by.cssContainingText('button', 'Delete Role')).click(); - await this.waitStaleness(this.getFirstTableCellWithText(name)); - } } diff --git a/src/pybind/mgr/dashboard/frontend/e2e/ui/user-mgmt.e2e-spec.ts b/src/pybind/mgr/dashboard/frontend/e2e/ui/user-mgmt.e2e-spec.ts index a0e24d9bea4..a0ae3f55c6e 100644 --- a/src/pybind/mgr/dashboard/frontend/e2e/ui/user-mgmt.e2e-spec.ts +++ b/src/pybind/mgr/dashboard/frontend/e2e/ui/user-mgmt.e2e-spec.ts @@ -35,7 +35,8 @@ describe('User Management page', () => { }); it('should delete a user', async () => { - await userMgmt.userDelete(user_name); + await userMgmt.navigateTo(); + await userMgmt.delete(user_name); }); }); }); diff --git a/src/pybind/mgr/dashboard/frontend/e2e/ui/user-mgmt.po.ts b/src/pybind/mgr/dashboard/frontend/e2e/ui/user-mgmt.po.ts index 57d90716067..a16dae56dbb 100644 --- a/src/pybind/mgr/dashboard/frontend/e2e/ui/user-mgmt.po.ts +++ b/src/pybind/mgr/dashboard/frontend/e2e/ui/user-mgmt.po.ts @@ -1,4 +1,4 @@ -import { $, by, element } from 'protractor'; +import { by, element } from 'protractor'; import { PageHelper } from '../page-helper.po'; export class UserMgmtPageHelper extends PageHelper { @@ -45,17 +45,4 @@ export class UserMgmtPageHelper extends PageHelper { await this.waitPresence(this.getTableCell(email)); await this.waitPresence(this.getTableCell(name)); } - - async userDelete(username): Promise { - await this.navigateTo(); - - await this.getTableCell(username).click(); // select user from table - await $('.table-actions button.dropdown-toggle').click(); // click toggle menu - await $('li.delete a').click(); // click delete - - await this.waitVisibility($('.custom-control-label')); - await $('.custom-control-label').click(); // click confirmation checkbox - await element(by.cssContainingText('button', 'Delete User')).click(); - await this.waitStaleness(this.getFirstTableCellWithText(username)); - } } -- 2.39.5