From 4e2edd59ce9dd5af9e329305ba8fd6c7c54dc048 Mon Sep 17 00:00:00 2001 From: Volker Theile Date: Mon, 9 Sep 2019 16:43:13 +0200 Subject: [PATCH] mgr/dashboard: Wait for breadcrumb text is present in e2e tests When the cluster is busy it might take some time until the tested component has loaded it's data and is rendered in the browser. Waiting for the breadcrumb text to be present might help to fix errors in the e2e tests. Signed-off-by: Volker Theile (cherry picked from commit e28d7287bd109b5c1682dc832c4a77ea47505165) Conflicts: src/pybind/mgr/dashboard/frontend/e2e/block/images.e2e-spec.ts src/pybind/mgr/dashboard/frontend/e2e/block/iscsi.e2e-spec.ts src/pybind/mgr/dashboard/frontend/e2e/block/mirroring.e2e-spec.ts src/pybind/mgr/dashboard/frontend/e2e/cluster/alerts.e2e-spec.ts src/pybind/mgr/dashboard/frontend/e2e/cluster/configuration.e2e-spec.ts src/pybind/mgr/dashboard/frontend/e2e/cluster/configuration.po.ts src/pybind/mgr/dashboard/frontend/e2e/cluster/crush-map.e2e-spec.ts src/pybind/mgr/dashboard/frontend/e2e/cluster/hosts.e2e-spec.ts src/pybind/mgr/dashboard/frontend/e2e/cluster/hosts.po.ts src/pybind/mgr/dashboard/frontend/e2e/cluster/logs.e2e-spec.ts src/pybind/mgr/dashboard/frontend/e2e/cluster/mgr-modules.e2e-spec.ts src/pybind/mgr/dashboard/frontend/e2e/cluster/monitors.e2e-spec.ts src/pybind/mgr/dashboard/frontend/e2e/cluster/osds.e2e-spec.ts src/pybind/mgr/dashboard/frontend/e2e/dashboard.e2e-spec.ts src/pybind/mgr/dashboard/frontend/e2e/filesystems/filesystems.e2e-spec.ts src/pybind/mgr/dashboard/frontend/e2e/nfs/nfs.e2e-spec.ts src/pybind/mgr/dashboard/frontend/e2e/page-helper.po.ts src/pybind/mgr/dashboard/frontend/e2e/pools/pools.e2e-spec.ts src/pybind/mgr/dashboard/frontend/e2e/pools/pools.po.ts src/pybind/mgr/dashboard/frontend/e2e/rgw/buckets.po.ts src/pybind/mgr/dashboard/frontend/e2e/rgw/daemons.e2e-spec.ts src/pybind/mgr/dashboard/frontend/e2e/rgw/users.e2e-spec.ts src/pybind/mgr/dashboard/frontend/e2e/rgw/users.po.ts src/pybind/mgr/dashboard/frontend/e2e/user-mgmt.e2e-spec.ts Conflicts are caused by E2E refactoring in master branch. --- .../dashboard/frontend/e2e/block/images.e2e-spec.ts | 2 +- .../mgr/dashboard/frontend/e2e/block/iscsi.e2e-spec.ts | 2 +- .../dashboard/frontend/e2e/block/mirroring.e2e-spec.ts | 2 +- .../dashboard/frontend/e2e/cluster/alerts.e2e-spec.ts | 2 +- .../frontend/e2e/cluster/configuration.e2e-spec.ts | 2 +- .../frontend/e2e/cluster/crush-map.e2e-spec.ts | 2 +- .../dashboard/frontend/e2e/cluster/hosts.e2e-spec.ts | 2 +- .../dashboard/frontend/e2e/cluster/logs.e2e-spec.ts | 2 +- .../frontend/e2e/cluster/mgr-modules.e2e-spec.ts | 2 +- .../frontend/e2e/cluster/monitors.e2e-spec.ts | 2 +- .../dashboard/frontend/e2e/cluster/osds.e2e-spec.ts | 2 +- .../frontend/e2e/filesystems/filesystems.e2e-spec.ts | 2 +- src/pybind/mgr/dashboard/frontend/e2e/helper.po.ts | 10 +++++++--- .../mgr/dashboard/frontend/e2e/nfs/nfs.e2e-spec.ts | 2 +- .../mgr/dashboard/frontend/e2e/pools/pools.e2e-spec.ts | 2 +- 15 files changed, 21 insertions(+), 17 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 f962258f502..10d71fccb70 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 @@ -18,7 +18,7 @@ describe('Images page', () => { }); it('should open and show breadcrumb', () => { - expect(Helper.getBreadcrumbText()).toEqual('Images'); + Helper.waitTextToBePresent(Helper.getBreadcrumb(), 'Images'); }); it('should show three tabs', () => { diff --git a/src/pybind/mgr/dashboard/frontend/e2e/block/iscsi.e2e-spec.ts b/src/pybind/mgr/dashboard/frontend/e2e/block/iscsi.e2e-spec.ts index 8a3a03b0637..b3227fe9c35 100644 --- a/src/pybind/mgr/dashboard/frontend/e2e/block/iscsi.e2e-spec.ts +++ b/src/pybind/mgr/dashboard/frontend/e2e/block/iscsi.e2e-spec.ts @@ -14,6 +14,6 @@ describe('Iscsi Page', () => { it('should open and show breadcrumb', () => { page.navigateTo(); - expect(Helper.getBreadcrumbText()).toEqual('Overview'); + Helper.waitTextToBePresent(Helper.getBreadcrumb(), 'Overview'); }); }); 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 a8f819cc874..e15cb53efba 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 @@ -18,7 +18,7 @@ describe('Mirroring page', () => { }); it('should open and show breadcrumb', () => { - expect(Helper.getBreadcrumbText()).toEqual('Mirroring'); + Helper.waitTextToBePresent(Helper.getBreadcrumb(), 'Mirroring'); }); it('should show three tabs', () => { diff --git a/src/pybind/mgr/dashboard/frontend/e2e/cluster/alerts.e2e-spec.ts b/src/pybind/mgr/dashboard/frontend/e2e/cluster/alerts.e2e-spec.ts index 2600a83ab84..2f438f8dd20 100644 --- a/src/pybind/mgr/dashboard/frontend/e2e/cluster/alerts.e2e-spec.ts +++ b/src/pybind/mgr/dashboard/frontend/e2e/cluster/alerts.e2e-spec.ts @@ -18,7 +18,7 @@ describe('Alerts page', () => { }); it('should open and show breadcrumb', () => { - expect(Helper.getBreadcrumbText()).toEqual('Alerts'); + Helper.waitTextToBePresent(Helper.getBreadcrumb(), 'Alerts'); }); }); }); diff --git a/src/pybind/mgr/dashboard/frontend/e2e/cluster/configuration.e2e-spec.ts b/src/pybind/mgr/dashboard/frontend/e2e/cluster/configuration.e2e-spec.ts index 9afe5405ab0..91303fb3e27 100644 --- a/src/pybind/mgr/dashboard/frontend/e2e/cluster/configuration.e2e-spec.ts +++ b/src/pybind/mgr/dashboard/frontend/e2e/cluster/configuration.e2e-spec.ts @@ -14,6 +14,6 @@ describe('Configuration page', () => { it('should open and show breadcrumb', () => { page.navigateTo(); - expect(Helper.getBreadcrumbText()).toEqual('Configuration'); + Helper.waitTextToBePresent(Helper.getBreadcrumb(), 'Configuration'); }); }); diff --git a/src/pybind/mgr/dashboard/frontend/e2e/cluster/crush-map.e2e-spec.ts b/src/pybind/mgr/dashboard/frontend/e2e/cluster/crush-map.e2e-spec.ts index c4335ff6219..d64fdee5527 100644 --- a/src/pybind/mgr/dashboard/frontend/e2e/cluster/crush-map.e2e-spec.ts +++ b/src/pybind/mgr/dashboard/frontend/e2e/cluster/crush-map.e2e-spec.ts @@ -14,6 +14,6 @@ describe('CRUSH map page', () => { it('should open and show breadcrumb', () => { page.navigateTo(); - expect(Helper.getBreadcrumbText()).toEqual('CRUSH map'); + Helper.waitTextToBePresent(Helper.getBreadcrumb(), 'CRUSH map'); }); }); diff --git a/src/pybind/mgr/dashboard/frontend/e2e/cluster/hosts.e2e-spec.ts b/src/pybind/mgr/dashboard/frontend/e2e/cluster/hosts.e2e-spec.ts index 605b63d4d96..913d01bfa98 100644 --- a/src/pybind/mgr/dashboard/frontend/e2e/cluster/hosts.e2e-spec.ts +++ b/src/pybind/mgr/dashboard/frontend/e2e/cluster/hosts.e2e-spec.ts @@ -14,7 +14,7 @@ describe('Hosts page', () => { it('should open and show breadcrumb', () => { page.navigateTo(); - expect(Helper.getBreadcrumbText()).toEqual('Hosts'); + Helper.waitTextToBePresent(Helper.getBreadcrumb(), 'Hosts'); }); it('should show two tabs', () => { 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 243582ee0ce..13658619d03 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 @@ -14,7 +14,7 @@ describe('Logs page', () => { it('should open and show breadcrumb', () => { page.navigateTo(); - expect(Helper.getBreadcrumbText()).toEqual('Logs'); + Helper.waitTextToBePresent(Helper.getBreadcrumb(), 'Logs'); }); it('should show two tabs', () => { diff --git a/src/pybind/mgr/dashboard/frontend/e2e/cluster/mgr-modules.e2e-spec.ts b/src/pybind/mgr/dashboard/frontend/e2e/cluster/mgr-modules.e2e-spec.ts index 6bc71747b28..629b791f621 100644 --- a/src/pybind/mgr/dashboard/frontend/e2e/cluster/mgr-modules.e2e-spec.ts +++ b/src/pybind/mgr/dashboard/frontend/e2e/cluster/mgr-modules.e2e-spec.ts @@ -18,7 +18,7 @@ describe('Manager modules page', () => { }); it('should open and show breadcrumb', () => { - expect(Helper.getBreadcrumbText()).toEqual('Manager modules'); + Helper.waitTextToBePresent(Helper.getBreadcrumb(), 'Manager modules'); }); }); }); diff --git a/src/pybind/mgr/dashboard/frontend/e2e/cluster/monitors.e2e-spec.ts b/src/pybind/mgr/dashboard/frontend/e2e/cluster/monitors.e2e-spec.ts index 7eb19f2ecd0..529763b6be2 100644 --- a/src/pybind/mgr/dashboard/frontend/e2e/cluster/monitors.e2e-spec.ts +++ b/src/pybind/mgr/dashboard/frontend/e2e/cluster/monitors.e2e-spec.ts @@ -14,6 +14,6 @@ describe('Monitors page', () => { it('should open and show breadcrumb', () => { page.navigateTo(); - expect(Helper.getBreadcrumbText()).toEqual('Monitors'); + Helper.waitTextToBePresent(Helper.getBreadcrumb(), 'Monitors'); }); }); diff --git a/src/pybind/mgr/dashboard/frontend/e2e/cluster/osds.e2e-spec.ts b/src/pybind/mgr/dashboard/frontend/e2e/cluster/osds.e2e-spec.ts index 41fd52f346e..33010010418 100644 --- a/src/pybind/mgr/dashboard/frontend/e2e/cluster/osds.e2e-spec.ts +++ b/src/pybind/mgr/dashboard/frontend/e2e/cluster/osds.e2e-spec.ts @@ -14,7 +14,7 @@ describe('OSDs page', () => { it('should open and show breadcrumb', () => { page.navigateTo(); - expect(Helper.getBreadcrumbText()).toEqual('OSDs'); + Helper.waitTextToBePresent(Helper.getBreadcrumb(), 'OSDs'); }); it('should show two tabs', () => { diff --git a/src/pybind/mgr/dashboard/frontend/e2e/filesystems/filesystems.e2e-spec.ts b/src/pybind/mgr/dashboard/frontend/e2e/filesystems/filesystems.e2e-spec.ts index d5306858423..9c39a925b6b 100644 --- a/src/pybind/mgr/dashboard/frontend/e2e/filesystems/filesystems.e2e-spec.ts +++ b/src/pybind/mgr/dashboard/frontend/e2e/filesystems/filesystems.e2e-spec.ts @@ -18,7 +18,7 @@ describe('Filesystems page', () => { }); it('should open and show breadcrumb', () => { - expect(Helper.getBreadcrumbText()).toEqual('Filesystems'); + Helper.waitTextToBePresent(Helper.getBreadcrumb(), 'Filesystems'); }); }); }); diff --git a/src/pybind/mgr/dashboard/frontend/e2e/helper.po.ts b/src/pybind/mgr/dashboard/frontend/e2e/helper.po.ts index 7ff26b315b9..cd6b8f67338 100644 --- a/src/pybind/mgr/dashboard/frontend/e2e/helper.po.ts +++ b/src/pybind/mgr/dashboard/frontend/e2e/helper.po.ts @@ -1,4 +1,4 @@ -import { $, $$, browser } from 'protractor'; +import { $, $$, browser, ElementFinder } from 'protractor'; export class Helper { static EC = browser.ExpectedConditions; @@ -28,8 +28,8 @@ export class Helper { }); } - static getBreadcrumbText() { - return $('.breadcrumb-item.active').getText(); + static getBreadcrumb() { + return $('.breadcrumb-item.active'); } static getTabText(idx) { @@ -41,4 +41,8 @@ export class Helper { static getTabsCount() { return $$('.nav.nav-tabs li').count(); } + + static waitTextToBePresent(elem: ElementFinder, text: string, message?: string) { + return browser.wait(Helper.EC.textToBePresentInElement(elem, text), Helper.TIMEOUT, message); + } } diff --git a/src/pybind/mgr/dashboard/frontend/e2e/nfs/nfs.e2e-spec.ts b/src/pybind/mgr/dashboard/frontend/e2e/nfs/nfs.e2e-spec.ts index de45daf0a51..988737a6793 100644 --- a/src/pybind/mgr/dashboard/frontend/e2e/nfs/nfs.e2e-spec.ts +++ b/src/pybind/mgr/dashboard/frontend/e2e/nfs/nfs.e2e-spec.ts @@ -18,7 +18,7 @@ describe('Nfs page', () => { }); it('should open and show breadcrumb', () => { - expect(Helper.getBreadcrumbText()).toEqual('NFS'); + Helper.waitTextToBePresent(Helper.getBreadcrumb(), 'NFS'); }); }); }); 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 3b826eb8583..7ce4c81dce0 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 @@ -14,7 +14,7 @@ describe('Pools page', () => { it('should open and show breadcrumb', () => { page.navigateTo(); - expect(Helper.getBreadcrumbText()).toEqual('Pools'); + Helper.waitTextToBePresent(Helper.getBreadcrumb(), 'Pools'); }); it('should show two tabs', () => { -- 2.47.3