]> git.apps.os.sepia.ceph.com Git - ceph-ci.git/commitdiff
mgr/dashboard: Wait for breadcrumb text is present in e2e tests
authorVolker Theile <vtheile@suse.com>
Mon, 9 Sep 2019 14:43:13 +0000 (16:43 +0200)
committerVolker Theile <vtheile@suse.com>
Tue, 10 Sep 2019 08:35:52 +0000 (10:35 +0200)
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 <vtheile@suse.com>
24 files changed:
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

index e5adea06ffa115bf766d90d599e7af620cdcdd5c..93b37627cb69d033f37481d3cfa1741761151de3 100644 (file)
@@ -21,7 +21,7 @@ describe('Images page', () => {
     });
 
     it('should open and show breadcrumb', async () => {
-      await expect(images.getBreadcrumbText()).toEqual('Images');
+      await images.waitTextToBePresent(images.getBreadcrumb(), 'Images');
     });
 
     it('should show three tabs', async () => {
index 22ffb9261409393545d1b35d2ba3e5a4cd403dc6..f032c7657ca78b9a2ecd94c2dc37cfb6337f6b6c 100644 (file)
@@ -18,7 +18,7 @@ describe('Iscsi Page', () => {
     });
 
     it('should open and show breadcrumb', async () => {
-      await expect(iscsi.getBreadcrumbText()).toEqual('Overview');
+      await iscsi.waitTextToBePresent(iscsi.getBreadcrumb(), 'Overview');
     });
   });
 
index 0e59625365f979145bd9e921f00dd2fea937c5a8..51d7dba110d75a9e6a702e40d26f4b187da99983 100644 (file)
@@ -21,7 +21,7 @@ describe('Mirroring page', () => {
     });
 
     it('should open and show breadcrumb', async () => {
-      await expect(mirroring.getBreadcrumbText()).toEqual('Mirroring');
+      await mirroring.waitTextToBePresent(mirroring.getBreadcrumb(), 'Mirroring');
     });
 
     it('should show three tabs', async () => {
index a45c8a15f7356dd8a5f5d4de8eec38256d5a5808..e54f6dfca05d5deaf89ca08c3e6d4a9eaee94e75 100644 (file)
@@ -18,7 +18,7 @@ describe('Alerts page', () => {
     });
 
     it('should open and show breadcrumb', async () => {
-      await expect(alerts.getBreadcrumbText()).toEqual('Alerts');
+      await alerts.waitTextToBePresent(alerts.getBreadcrumb(), 'Alerts');
     });
   });
 });
index 05209f5b53762e8606f15e51510f3d0f31ec164f..d4e10e49136db3db20c5bd07be09b88de23a7fd3 100644 (file)
@@ -19,7 +19,7 @@ describe('Configuration page', () => {
     });
 
     it('should open and show breadcrumb', async () => {
-      await expect(configuration.getBreadcrumbText()).toEqual('Configuration');
+      await configuration.waitTextToBePresent(configuration.getBreadcrumb(), 'Configuration');
     });
   });
 
index c0f6d930afd083cc34106ffa9e04cd28528382d8..c5fe25b2ef0447e7ffaf425179e0a873902b8bf8 100644 (file)
@@ -63,7 +63,7 @@ export class ConfigurationPageHelper extends PageHelper {
     await this.getTableCell(name).click(); // click on the config to edit
     await element(by.cssContainingText('button', 'Edit')).click(); // clicks button to edit
 
-    await expect(this.getBreadcrumbText()).toEqual('Edit');
+    await this.waitTextToBePresent(this.getBreadcrumb(), 'Edit');
 
     for (let i = 0, valtuple; (valtuple = values[i]); i++) {
       // Finds desired value based off given list
index 4761b6a2672c88d5272739b19443af53153191f2..315c5ed4a2928035f3976ba0b523111a88acede8 100644 (file)
@@ -19,7 +19,7 @@ describe('CRUSH map page', () => {
     });
 
     it('should open and show breadcrumb', async () => {
-      await expect(crushmap.getBreadcrumbText()).toEqual('CRUSH map');
+      await crushmap.waitTextToBePresent(crushmap.getBreadcrumb(), 'CRUSH map');
     });
   });
   describe('fields check', () => {
index 9d3aa031cefb7d3ffa24033ad52939560c879826..347ba502315daf6be154b2abc912f0c83c388cb1 100644 (file)
@@ -18,7 +18,7 @@ describe('Hosts page', () => {
     });
 
     it('should open and show breadcrumb', async () => {
-      await expect(hosts.getBreadcrumbText()).toEqual('Hosts');
+      await hosts.waitTextToBePresent(hosts.getBreadcrumb(), 'Hosts');
     });
 
     it('should show two tabs', async () => {
index bbc71207f74f28603cea1f54d5782b7815a30af1..7bb837449b2b1719b923feee36f0dae75d658ca0 100644 (file)
@@ -31,9 +31,9 @@ export class HostsPageHelper extends PageHelper {
       // click link, check it worked by looking for changed breadcrumb,
       // navigate back to hosts page, repeat until all links checked
       await links.get(i).click();
-      await expect(this.getBreadcrumbText()).toEqual('Performance Counters');
+      await this.waitTextToBePresent(this.getBreadcrumb(), 'Performance Counters');
       await this.navigateTo();
-      await expect(this.getBreadcrumbText()).toEqual('Hosts');
+      await this.waitTextToBePresent(this.getBreadcrumb(), 'Hosts');
       links_tested++;
     }
     // check if any links were actually tested
index d1b2dc81d78c470d9517ba1a5147d683be4a4dfe..71127f4a3a2795f87a31e859d6c889937def5bd1 100644 (file)
@@ -33,7 +33,7 @@ describe('Logs page', () => {
     });
 
     it('should open and show breadcrumb', async () => {
-      await expect(logs.getBreadcrumbText()).toEqual('Logs');
+      await logs.waitTextToBePresent(logs.getBreadcrumb(), 'Logs');
     });
 
     it('should show two tabs', async () => {
index 0790b127dfc18870f947e6bc6379d89121be2bc5..f86c8d2d5569c7070ca065a2131ca24f9398bdd9 100644 (file)
@@ -18,7 +18,7 @@ describe('Manager modules page', () => {
     });
 
     it('should open and show breadcrumb', async () => {
-      await expect(mgrmodules.getBreadcrumbText()).toEqual('Manager modules');
+      await mgrmodules.waitTextToBePresent(mgrmodules.getBreadcrumb(), 'Manager modules');
     });
   });
 
index d2f27793dbaa136646d52ade6d4f4c125db713ab..2eccd062c78833f3c3d86d933751f0ec916bfe99 100644 (file)
@@ -18,7 +18,7 @@ describe('Monitors page', () => {
     });
 
     it('should open and show breadcrumb', async () => {
-      await expect(monitors.getBreadcrumbText()).toEqual('Monitors');
+      await monitors.waitTextToBePresent(monitors.getBreadcrumb(), 'Monitors');
     });
   });
 
index 5ff7dd35d7e4d6c100ae9609fb51f7ecd20e44fb..85b3e9b0aadd29e6666adf70c958152e9d2cb1ef 100644 (file)
@@ -18,7 +18,7 @@ describe('OSDs page', () => {
     });
 
     it('should open and show breadcrumb', async () => {
-      await expect(osds.getBreadcrumbText()).toEqual('OSDs');
+      await osds.waitTextToBePresent(osds.getBreadcrumb(), 'OSDs');
     });
 
     it('should show two tabs', async () => {
index a5908163465cb475ecd88ecc7dd12f7fa788ceb4..f06c515926ef9a07280c0554101c0ebcf004a9a2 100644 (file)
@@ -50,7 +50,7 @@ describe('Dashboard Main Page', () => {
       for (const [linkText, breadcrumbText] of Object.entries(expectationMap)) {
         await expect(browser.getCurrentUrl()).toContain('/#/dashboard');
         await dashboard.clickInfoCardLink(linkText);
-        await expect(dashboard.getBreadcrumbText()).toEqual(breadcrumbText);
+        await dashboard.waitTextToBePresent(dashboard.getBreadcrumb(), breadcrumbText);
         await dashboard.navigateBack();
       }
     });
index 344afcd32458187a8cf9f23f56a635ea14f744cb..604b8075454af59763331aa22767ab7c1c2ea8c5 100644 (file)
@@ -18,7 +18,7 @@ describe('Filesystems page', () => {
     });
 
     it('should open and show breadcrumb', async () => {
-      await expect(filesystems.getBreadcrumbText()).toEqual('Filesystems');
+      await filesystems.waitTextToBePresent(filesystems.getBreadcrumb(), 'Filesystems');
     });
   });
 });
index d51aeaef7cf97661bf3afcbc61eeff7210b9b888..5addf779a9602d905a35da836404392af6ef688e 100644 (file)
@@ -18,7 +18,7 @@ describe('Nfs page', () => {
     });
 
     it('should open and show breadcrumb', async () => {
-      await expect(nfs.getBreadcrumbText()).toEqual('NFS');
+      await nfs.waitTextToBePresent(nfs.getBreadcrumb(), 'NFS');
     });
   });
 });
index df5fbf2cfb54f922518bf2fc3420ab97686f2366..ba16c8482388fd7341662ecef7eaef1dd0bbd71e 100644 (file)
@@ -78,8 +78,11 @@ export abstract class PageHelper {
     };
   }
 
-  async getBreadcrumbText(): Promise<string> {
-    return $('.breadcrumb-item.active').getText();
+  /**
+   * Get the active breadcrumb item.
+   */
+  getBreadcrumb(): ElementFinder {
+    return $('.breadcrumb-item.active');
   }
 
   async getTabText(index): Promise<string> {
index b747adf2295d88b02834fa89609cbfb9c69e485d..e98101ed54beca574f5b975f711a230c38d81d0c 100644 (file)
@@ -16,7 +16,7 @@ describe('Pools page', () => {
 
   describe('breadcrumb and tab tests', () => {
     it('should open and show breadcrumb', async () => {
-      await expect(pools.getBreadcrumbText()).toEqual('Pools');
+      await pools.waitTextToBePresent(pools.getBreadcrumb(), 'Pools');
     });
 
     it('should show two tabs', async () => {
index c563a52fec5550e5575932209f6b00f77467fe17..5510bf21cd66845f713eefa9957d4f147c802f5d 100644 (file)
@@ -60,7 +60,7 @@ export class PoolPageHelper extends PageHelper {
     const elem = await this.getTableCellByContent(name);
     await elem.click(); // select pool from the table
     await element(by.cssContainingText('button', 'Edit')).click(); // click edit button
-    await expect(this.getBreadcrumbText()).toEqual('Edit'); // verify we are now on edit page
+    await this.waitTextToBePresent(this.getBreadcrumb(), 'Edit'); // verify we are now on edit page
     await $('input[name=pgNum]').sendKeys(protractor.Key.CONTROL, 'a', protractor.Key.NULL, new_pg);
     await element(by.css('cd-submit-button')).click();
     const str = `${new_pg} active+clean`;
index 57d9041819de7d04463c1106dfdf9954adc03cec..ab902d2d2ca55113ccc3eecb8198c80b7fe16bb8 100644 (file)
@@ -41,7 +41,7 @@ export class BucketsPageHelper extends PageHelper {
   async edit(name: string, new_owner: string) {
     await this.getTableCell(name).click(); // click on the bucket you want to edit in the table
     await element(by.cssContainingText('button', 'Edit')).click(); // click button to move to edit page
-    await expect(this.getBreadcrumbText()).toEqual('Edit');
+    await this.waitTextToBePresent(this.getBreadcrumb(), 'Edit');
     await expect(element(by.css('input[name=placement-target]')).getAttribute('value')).toBe(
       'default-placement'
     );
@@ -144,7 +144,7 @@ export class BucketsPageHelper extends PageHelper {
     // Clicks the Create Bucket button but the page doesn't move. Done by testing
     // for the breadcrumb
     await element(by.cssContainingText('button', 'Create Bucket')).click(); // Clicks Create Bucket button
-    await expect(this.getBreadcrumbText()).toEqual('Create');
+    await this.waitTextToBePresent(this.getBreadcrumb(), 'Create');
     // content in fields seems to subsist through tests if not cleared, so it is cleared
     await nameInputField.clear();
     return element(by.cssContainingText('button', 'Cancel')).click();
@@ -160,7 +160,7 @@ export class BucketsPageHelper extends PageHelper {
     await this.getTableCell(name).click(); // click on the bucket you want to edit in the table
     await element(by.cssContainingText('button', 'Edit')).click(); // click button to move to edit page
 
-    await expect(this.getBreadcrumbText()).toEqual('Edit');
+    await this.waitTextToBePresent(this.getBreadcrumb(), 'Edit');
 
     // Chooses 'Select a user' rather than a valid owner on Edit Bucket page
     // and checks if it's an invalid input
@@ -183,6 +183,6 @@ export class BucketsPageHelper extends PageHelper {
       'This field is required.'
     );
 
-    await expect(this.getBreadcrumbText()).toEqual('Edit');
+    await this.waitTextToBePresent(this.getBreadcrumb(), 'Edit');
   }
 }
index 24b982d7cc7efa125f28e7b1211fa436f4e8d775..a396ad76c748852b416aca7c2bc4b26a80371c7e 100644 (file)
@@ -18,7 +18,7 @@ describe('RGW daemons page', () => {
     });
 
     it('should open and show breadcrumb', async () => {
-      await expect(daemons.getBreadcrumbText()).toEqual('Daemons');
+      await daemons.waitTextToBePresent(daemons.getBreadcrumb(), 'Daemons');
     });
 
     it('should show two tabs', async () => {
index c36f16fb821205f1b47d189fba7c5056f193de78..2afea64b5d74ae049d89e1d47d96c5a71f13c422 100644 (file)
@@ -19,7 +19,7 @@ describe('RGW users page', () => {
     });
 
     it('should open and show breadcrumb', async () => {
-      await expect(users.getBreadcrumbText()).toEqual('Users');
+      await users.waitTextToBePresent(users.getBreadcrumb(), 'Users');
     });
   });
 
index ff988b10661eb7f76e32416f31dc2d15757fd410..cf880d6f338be510a656242187b770cb50f98c1d 100644 (file)
@@ -39,7 +39,7 @@ export class UsersPageHelper extends PageHelper {
     await this.getTableCell(name).click(); // click on the bucket you want to edit in the table
     await element(by.cssContainingText('button', 'Edit')).click(); // click button to move to edit page
 
-    await expect(this.getBreadcrumbText()).toEqual('Edit');
+    await this.waitTextToBePresent(this.getBreadcrumb(), 'Edit');
 
     // Change the full name field
     await element(by.id('display_name')).click();
@@ -165,7 +165,7 @@ export class UsersPageHelper extends PageHelper {
     await this.getTableCell(uname).click(); // click on the bucket you want to edit in the table
     await element(by.cssContainingText('button', 'Edit')).click(); // click button to move to edit page
 
-    await expect(this.getBreadcrumbText()).toEqual('Edit');
+    await this.waitTextToBePresent(this.getBreadcrumb(), 'Edit');
 
     // put invalid email to make field invalid
     await element(by.id('email')).click();
index 3f72e3ce673677b47fee67bff5348616f32910b9..410b7b62aa5cabe9df3146a679d270d5a1b70f97 100644 (file)
@@ -17,22 +17,22 @@ describe('User Management page', () => {
   describe('breadcrumb tests', () => {
     it('should check breadcrumb on users tab of user management page', async () => {
       await userManagement.navigateTo('users');
-      await expect(userManagement.getBreadcrumbText()).toEqual('Users');
+      await userManagement.waitTextToBePresent(userManagement.getBreadcrumb(), 'Users');
     });
 
     it('should check breadcrumb on roles tab of user management page', async () => {
       await userManagement.navigateTo('roles');
-      await expect(userManagement.getBreadcrumbText()).toEqual('Roles');
+      await userManagement.waitTextToBePresent(userManagement.getBreadcrumb(), 'Roles');
     });
 
     it('should check breadcrumb on user creation page', async () => {
       await userManagement.navigateTo('userCreate');
-      await expect(userManagement.getBreadcrumbText()).toEqual('Create');
+      await userManagement.waitTextToBePresent(userManagement.getBreadcrumb(), 'Create');
     });
 
     it('should check breadcrumb on role creation page', async () => {
       await userManagement.navigateTo('roleCreate');
-      await expect(userManagement.getBreadcrumbText()).toEqual('Create');
+      await userManagement.waitTextToBePresent(userManagement.getBreadcrumb(), 'Create');
     });
   });