From 0c64f40607f156ee7bdd3f76465ff92044af7398 Mon Sep 17 00:00:00 2001 From: Patrick Nawracay Date: Mon, 17 Jun 2019 11:36:53 +0200 Subject: [PATCH] mgr/dashboard: Ensure E2E tests can be run independently Introduces the PageHelper. - Reads class attributes from Helpers to reduce boilerplace code for navigation. - The PageHelper is supposed to be the new class for code that's reused across all Helpers for page related code. - The Helper class is by now meant to be used for non-page specific helper code, like used in the `checkConsole` method. - The Helper class will act as central registry to enable all other tests to use helper functions of all derived PageHelper tests. Example: `Helper.pools.create('foobar', ...);` Fixes: http://tracker.ceph.com/issues/40397 Signed-off-by: Patrick Nawracay --- src/pybind/mgr/dashboard/HACKING.rst | 23 ++++++++++++++++ .../frontend/e2e/block/images.e2e-spec.ts | 10 +++---- .../dashboard/frontend/e2e/block/images.po.ts | 8 +++--- .../frontend/e2e/block/iscsi.e2e-spec.ts | 2 +- .../dashboard/frontend/e2e/block/iscsi.po.ts | 8 +++--- .../frontend/e2e/block/mirroring.e2e-spec.ts | 10 +++---- .../frontend/e2e/block/mirroring.po.ts | 8 +++--- .../frontend/e2e/cluster/alerts.e2e-spec.ts | 2 +- .../frontend/e2e/cluster/alerts.po.ts | 8 +++--- .../e2e/cluster/configuration.e2e-spec.ts | 2 +- .../frontend/e2e/cluster/configuration.po.ts | 8 +++--- .../e2e/cluster/crush-map.e2e-spec.ts | 2 +- .../frontend/e2e/cluster/crush-map.po.ts | 8 +++--- .../frontend/e2e/cluster/hosts.e2e-spec.ts | 8 +++--- .../frontend/e2e/cluster/hosts.po.ts | 8 +++--- .../frontend/e2e/cluster/logs.e2e-spec.ts | 8 +++--- .../dashboard/frontend/e2e/cluster/logs.po.ts | 7 +++-- .../e2e/cluster/mgr-modules.e2e-spec.ts | 2 +- .../frontend/e2e/cluster/mgr-modules.po.ts | 8 +++--- .../frontend/e2e/cluster/monitors.e2e-spec.ts | 2 +- .../frontend/e2e/cluster/monitors.po.ts | 8 +++--- .../frontend/e2e/cluster/osds.e2e-spec.ts | 8 +++--- .../dashboard/frontend/e2e/cluster/osds.po.ts | 8 +++--- .../e2e/filesystems/filesystems.e2e-spec.ts | 2 +- .../e2e/filesystems/filesystems.po.ts | 8 +++--- .../mgr/dashboard/frontend/e2e/helper.po.ts | 16 +---------- .../frontend/e2e/nfs/nfs.e2e-spec.ts | 2 +- .../mgr/dashboard/frontend/e2e/nfs/nfs.po.ts | 8 +++--- .../dashboard/frontend/e2e/page-helper.po.ts | 27 +++++++++++++++++++ .../frontend/e2e/pools/pools.e2e-spec.ts | 14 +++++----- .../dashboard/frontend/e2e/pools/pools.po.ts | 11 ++++---- .../frontend/e2e/rgw/buckets.e2e-spec.ts | 2 +- .../dashboard/frontend/e2e/rgw/buckets.po.ts | 8 +++--- .../frontend/e2e/rgw/daemons.e2e-spec.ts | 8 +++--- .../dashboard/frontend/e2e/rgw/daemons.po.ts | 8 +++--- .../frontend/e2e/rgw/users.e2e-spec.ts | 2 +- .../dashboard/frontend/e2e/rgw/users.po.ts | 8 +++--- 37 files changed, 148 insertions(+), 142 deletions(-) create mode 100644 src/pybind/mgr/dashboard/frontend/e2e/page-helper.po.ts diff --git a/src/pybind/mgr/dashboard/HACKING.rst b/src/pybind/mgr/dashboard/HACKING.rst index ca31aa62156a2..8395ef3199ed6 100644 --- a/src/pybind/mgr/dashboard/HACKING.rst +++ b/src/pybind/mgr/dashboard/HACKING.rst @@ -184,6 +184,29 @@ Note:: In case you have a somewhat particular environment, you might need to adapt `protractor.conf.js` to point to the appropriate destination. +Making code reuseable +""""""""""""""""""""" + +In order to make some code reuseable, you just need to put it in a derived +class of the ``PageHelper``. If you create a new class derived from the +``PageHelper``, please also register it in the ``Helper`` class, so that it can +automatically be used by all other classes. To do so, you just need to create a +new attribute on the ``Helper`` class and ensure it's instantiated in the +constructor of the ``Helper`` class. + +.. code:: TypeScript + + class Helper { + // ... + pools: PoolPageHelper; + + constructor() { + this.pools = new PoolPageHelper(); + } + + // ... + } + Further Help ~~~~~~~~~~~~ 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 f962258f502d2..8eb434120c410 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,17 +18,17 @@ describe('Images page', () => { }); it('should open and show breadcrumb', () => { - expect(Helper.getBreadcrumbText()).toEqual('Images'); + expect(ImagesPage.getBreadcrumbText()).toEqual('Images'); }); it('should show three tabs', () => { - expect(Helper.getTabsCount()).toEqual(3); + expect(ImagesPage.getTabsCount()).toEqual(3); }); it('should show text for all tabs', () => { - expect(Helper.getTabText(0)).toEqual('Images'); - expect(Helper.getTabText(1)).toEqual('Trash'); - expect(Helper.getTabText(2)).toEqual('Overall Performance'); + expect(ImagesPage.getTabText(0)).toEqual('Images'); + expect(ImagesPage.getTabText(1)).toEqual('Trash'); + expect(ImagesPage.getTabText(2)).toEqual('Overall Performance'); }); }); }); 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 b3fb2f1ea57c8..6f9fb5aff9a49 100644 --- a/src/pybind/mgr/dashboard/frontend/e2e/block/images.po.ts +++ b/src/pybind/mgr/dashboard/frontend/e2e/block/images.po.ts @@ -1,7 +1,5 @@ -import { browser } from 'protractor'; +import { PageHelper } from '../page-helper.po'; -export class ImagesPage { - navigateTo() { - return browser.get('/#/block/rbd'); - } +export class ImagesPage extends PageHelper { + pages = { index: '/#/block/rbd' }; } 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 aa7e034f9b17d..194f87efb4277 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 @@ -18,7 +18,7 @@ describe('Iscsi Page', () => { }); it('should open and show breadcrumb', () => { - expect(Helper.getBreadcrumbText()).toEqual('Overview'); + expect(IscsiPage.getBreadcrumbText()).toEqual('Overview'); }); }); }); diff --git a/src/pybind/mgr/dashboard/frontend/e2e/block/iscsi.po.ts b/src/pybind/mgr/dashboard/frontend/e2e/block/iscsi.po.ts index 79eb94c44dec3..9cba79b21eba9 100644 --- a/src/pybind/mgr/dashboard/frontend/e2e/block/iscsi.po.ts +++ b/src/pybind/mgr/dashboard/frontend/e2e/block/iscsi.po.ts @@ -1,7 +1,5 @@ -import { browser } from 'protractor'; +import { PageHelper } from '../page-helper.po'; -export class IscsiPage { - navigateTo() { - return browser.get('/#/block/iscsi'); - } +export class IscsiPage extends PageHelper { + pages = { index: '/#/block/iscsi/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 a8f819cc87444..536b0881f3b8e 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,17 +18,17 @@ describe('Mirroring page', () => { }); it('should open and show breadcrumb', () => { - expect(Helper.getBreadcrumbText()).toEqual('Mirroring'); + expect(MirroringPage.getBreadcrumbText()).toEqual('Mirroring'); }); it('should show three tabs', () => { - expect(Helper.getTabsCount()).toEqual(3); + expect(MirroringPage.getTabsCount()).toEqual(3); }); it('should show text for all tabs', () => { - expect(Helper.getTabText(0)).toEqual('Issues'); - expect(Helper.getTabText(1)).toEqual('Syncing'); - expect(Helper.getTabText(2)).toEqual('Ready'); + expect(MirroringPage.getTabText(0)).toEqual('Issues'); + expect(MirroringPage.getTabText(1)).toEqual('Syncing'); + expect(MirroringPage.getTabText(2)).toEqual('Ready'); }); }); }); diff --git a/src/pybind/mgr/dashboard/frontend/e2e/block/mirroring.po.ts b/src/pybind/mgr/dashboard/frontend/e2e/block/mirroring.po.ts index f4a8baebde112..875a51b1fc8cd 100644 --- a/src/pybind/mgr/dashboard/frontend/e2e/block/mirroring.po.ts +++ b/src/pybind/mgr/dashboard/frontend/e2e/block/mirroring.po.ts @@ -1,7 +1,5 @@ -import { browser } from 'protractor'; +import { PageHelper } from '../page-helper.po'; -export class MirroringPage { - navigateTo() { - return browser.get('/#/block/mirroring'); - } +export class MirroringPage extends PageHelper { + pages = { index: '/#/block/mirroring' }; } 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 2600a83ab849d..bf139cb85566c 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'); + expect(AlertsPage.getBreadcrumbText()).toEqual('Alerts'); }); }); }); diff --git a/src/pybind/mgr/dashboard/frontend/e2e/cluster/alerts.po.ts b/src/pybind/mgr/dashboard/frontend/e2e/cluster/alerts.po.ts index 076b15b690439..02cf70a429a72 100644 --- a/src/pybind/mgr/dashboard/frontend/e2e/cluster/alerts.po.ts +++ b/src/pybind/mgr/dashboard/frontend/e2e/cluster/alerts.po.ts @@ -1,7 +1,5 @@ -import { browser } from 'protractor'; +import { PageHelper } from '../page-helper.po'; -export class AlertsPage { - navigateTo() { - return browser.get('/#/alerts'); - } +export class AlertsPage extends PageHelper { + pages = { index: '/#/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 e2c25a5bb6bf5..56f4c293f8ad4 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 @@ -18,7 +18,7 @@ describe('Configuration page', () => { }); it('should open and show breadcrumb', () => { - expect(Helper.getBreadcrumbText()).toEqual('Configuration'); + expect(ConfigurationPage.getBreadcrumbText()).toEqual('Configuration'); }); }); }); diff --git a/src/pybind/mgr/dashboard/frontend/e2e/cluster/configuration.po.ts b/src/pybind/mgr/dashboard/frontend/e2e/cluster/configuration.po.ts index b23a078aae441..47d000629fc54 100644 --- a/src/pybind/mgr/dashboard/frontend/e2e/cluster/configuration.po.ts +++ b/src/pybind/mgr/dashboard/frontend/e2e/cluster/configuration.po.ts @@ -1,7 +1,5 @@ -import { browser } from 'protractor'; +import { PageHelper } from '../page-helper.po'; -export class ConfigurationPage { - navigateTo() { - return browser.get('/#/configuration'); - } +export class ConfigurationPage extends PageHelper { + pages = { index: '/#/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 77e8c06e80030..54243cafa6b74 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 @@ -18,7 +18,7 @@ describe('CRUSH map page', () => { }); it('should open and show breadcrumb', () => { - expect(Helper.getBreadcrumbText()).toEqual('CRUSH map'); + expect(CrushMapPage.getBreadcrumbText()).toEqual('CRUSH map'); }); }); }); diff --git a/src/pybind/mgr/dashboard/frontend/e2e/cluster/crush-map.po.ts b/src/pybind/mgr/dashboard/frontend/e2e/cluster/crush-map.po.ts index e4d54c616f70c..16992b84a9f4f 100644 --- a/src/pybind/mgr/dashboard/frontend/e2e/cluster/crush-map.po.ts +++ b/src/pybind/mgr/dashboard/frontend/e2e/cluster/crush-map.po.ts @@ -1,7 +1,5 @@ -import { browser } from 'protractor'; +import { PageHelper } from '../page-helper.po'; -export class CrushMapPage { - navigateTo() { - return browser.get('/#/crush-map'); - } +export class CrushMapPage extends PageHelper { + pages = { index: '/#/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 806a6efeca2f0..db5690cc0b7a5 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 @@ -18,19 +18,19 @@ describe('Hosts page', () => { }); it('should open and show breadcrumb', () => { - expect(Helper.getBreadcrumbText()).toEqual('Hosts'); + expect(HostsPage.getBreadcrumbText()).toEqual('Hosts'); }); it('should show two tabs', () => { - expect(Helper.getTabsCount()).toEqual(2); + expect(HostsPage.getTabsCount()).toEqual(2); }); it('should show hosts list tab at first', () => { - expect(Helper.getTabText(0)).toEqual('Hosts List'); + expect(HostsPage.getTabText(0)).toEqual('Hosts List'); }); it('should show overall performance as a second tab', () => { - expect(Helper.getTabText(1)).toEqual('Overall Performance'); + expect(HostsPage.getTabText(1)).toEqual('Overall Performance'); }); }); }); diff --git a/src/pybind/mgr/dashboard/frontend/e2e/cluster/hosts.po.ts b/src/pybind/mgr/dashboard/frontend/e2e/cluster/hosts.po.ts index 6a90ef7ff0e2f..53c664019cfed 100644 --- a/src/pybind/mgr/dashboard/frontend/e2e/cluster/hosts.po.ts +++ b/src/pybind/mgr/dashboard/frontend/e2e/cluster/hosts.po.ts @@ -1,7 +1,5 @@ -import { browser } from 'protractor'; +import { PageHelper } from '../page-helper.po'; -export class HostsPage { - navigateTo() { - return browser.get('/#/hosts'); - } +export class HostsPage extends PageHelper { + pages = { index: '/#/hosts' }; } 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 2e357b4c307b2..5548eb1341b5f 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 @@ -18,19 +18,19 @@ describe('Logs page', () => { }); it('should open and show breadcrumb', () => { - expect(Helper.getBreadcrumbText()).toEqual('Logs'); + expect(LogsPage.getBreadcrumbText()).toEqual('Logs'); }); it('should show two tabs', () => { - expect(Helper.getTabsCount()).toEqual(2); + expect(LogsPage.getTabsCount()).toEqual(2); }); it('should show cluster logs tab at first', () => { - expect(Helper.getTabText(0)).toEqual('Cluster Logs'); + expect(LogsPage.getTabText(0)).toEqual('Cluster Logs'); }); it('should show audit logs as a second tab', () => { - expect(Helper.getTabText(1)).toEqual('Audit Logs'); + expect(LogsPage.getTabText(1)).toEqual('Audit Logs'); }); }); }); diff --git a/src/pybind/mgr/dashboard/frontend/e2e/cluster/logs.po.ts b/src/pybind/mgr/dashboard/frontend/e2e/cluster/logs.po.ts index 146779454cc35..9d61c8263853f 100644 --- a/src/pybind/mgr/dashboard/frontend/e2e/cluster/logs.po.ts +++ b/src/pybind/mgr/dashboard/frontend/e2e/cluster/logs.po.ts @@ -1,9 +1,8 @@ import { browser } from 'protractor'; +import { PageHelper } from '../page-helper.po'; browser.ignoreSynchronization = true; -export class LogsPage { - navigateTo() { - return browser.get('/#/logs'); - } +export class LogsPage extends PageHelper { + pages = { index: '/#/logs' }; } 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 6bc71747b280a..a45baf8c4a08a 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'); + expect(ManagerModulesPage.getBreadcrumbText()).toEqual('Manager modules'); }); }); }); diff --git a/src/pybind/mgr/dashboard/frontend/e2e/cluster/mgr-modules.po.ts b/src/pybind/mgr/dashboard/frontend/e2e/cluster/mgr-modules.po.ts index 208f30339920a..72db6a429d979 100644 --- a/src/pybind/mgr/dashboard/frontend/e2e/cluster/mgr-modules.po.ts +++ b/src/pybind/mgr/dashboard/frontend/e2e/cluster/mgr-modules.po.ts @@ -1,7 +1,5 @@ -import { browser } from 'protractor'; +import { PageHelper } from '../page-helper.po'; -export class ManagerModulesPage { - navigateTo() { - return browser.get('/#/mgr-modules'); - } +export class ManagerModulesPage extends PageHelper { + pages = { index: '/#/mgr-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 54683ce1131d8..7ff2e06e23cff 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 @@ -18,7 +18,7 @@ describe('Monitors page', () => { }); it('should open and show breadcrumb', () => { - expect(Helper.getBreadcrumbText()).toEqual('Monitors'); + expect(MonitorsPage.getBreadcrumbText()).toEqual('Monitors'); }); }); }); diff --git a/src/pybind/mgr/dashboard/frontend/e2e/cluster/monitors.po.ts b/src/pybind/mgr/dashboard/frontend/e2e/cluster/monitors.po.ts index 53159d30e4d57..256ddf77dea50 100644 --- a/src/pybind/mgr/dashboard/frontend/e2e/cluster/monitors.po.ts +++ b/src/pybind/mgr/dashboard/frontend/e2e/cluster/monitors.po.ts @@ -1,7 +1,5 @@ -import { browser } from 'protractor'; +import { PageHelper } from '../page-helper.po'; -export class MonitorsPage { - navigateTo() { - return browser.get('/#/monitor'); - } +export class MonitorsPage extends PageHelper { + pages = { index: '/#/monitor' }; } 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 82e3388dec560..57ae67da268ae 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 @@ -18,19 +18,19 @@ describe('OSDs page', () => { }); it('should open and show breadcrumb', () => { - expect(Helper.getBreadcrumbText()).toEqual('OSDs'); + expect(OSDsPage.getBreadcrumbText()).toEqual('OSDs'); }); it('should show two tabs', () => { - expect(Helper.getTabsCount()).toEqual(2); + expect(OSDsPage.getTabsCount()).toEqual(2); }); it('should show OSDs list tab at first', () => { - expect(Helper.getTabText(0)).toEqual('OSDs List'); + expect(OSDsPage.getTabText(0)).toEqual('OSDs List'); }); it('should show overall performance as a second tab', () => { - expect(Helper.getTabText(1)).toEqual('Overall Performance'); + expect(OSDsPage.getTabText(1)).toEqual('Overall Performance'); }); }); }); diff --git a/src/pybind/mgr/dashboard/frontend/e2e/cluster/osds.po.ts b/src/pybind/mgr/dashboard/frontend/e2e/cluster/osds.po.ts index 08e4143831fe7..df84c8d490e72 100644 --- a/src/pybind/mgr/dashboard/frontend/e2e/cluster/osds.po.ts +++ b/src/pybind/mgr/dashboard/frontend/e2e/cluster/osds.po.ts @@ -1,7 +1,5 @@ -import { browser } from 'protractor'; +import { PageHelper } from '../page-helper.po'; -export class OSDsPage { - navigateTo() { - return browser.get('/#/osd'); - } +export class OSDsPage extends PageHelper { + pages = { index: '/#/osd' }; } 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 d5306858423ef..13266645d7e9c 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'); + expect(FilesystemsPage.getBreadcrumbText()).toEqual('Filesystems'); }); }); }); diff --git a/src/pybind/mgr/dashboard/frontend/e2e/filesystems/filesystems.po.ts b/src/pybind/mgr/dashboard/frontend/e2e/filesystems/filesystems.po.ts index 4f7638143b107..821cf00faf0cc 100644 --- a/src/pybind/mgr/dashboard/frontend/e2e/filesystems/filesystems.po.ts +++ b/src/pybind/mgr/dashboard/frontend/e2e/filesystems/filesystems.po.ts @@ -1,7 +1,5 @@ -import { browser } from 'protractor'; +import { PageHelper } from '../page-helper.po'; -export class FilesystemsPage { - navigateTo() { - return browser.get('/#/cephfs'); - } +export class FilesystemsPage extends PageHelper { + pages = { index: '/#/cephfs' }; } diff --git a/src/pybind/mgr/dashboard/frontend/e2e/helper.po.ts b/src/pybind/mgr/dashboard/frontend/e2e/helper.po.ts index 7ff26b315b940..3e95ff8224e06 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 } from 'protractor'; export class Helper { static EC = browser.ExpectedConditions; @@ -27,18 +27,4 @@ export class Helper { expect(browserLog.length).toEqual(0); }); } - - static getBreadcrumbText() { - return $('.breadcrumb-item.active').getText(); - } - - static getTabText(idx) { - return $$('.nav.nav-tabs li') - .get(idx) - .getText(); - } - - static getTabsCount() { - return $$('.nav.nav-tabs li').count(); - } } 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 de45daf0a51dd..23a29952772f0 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'); + expect(NfsPage.getBreadcrumbText()).toEqual('NFS'); }); }); }); diff --git a/src/pybind/mgr/dashboard/frontend/e2e/nfs/nfs.po.ts b/src/pybind/mgr/dashboard/frontend/e2e/nfs/nfs.po.ts index fe6f342ede4fc..5909cafa42a6e 100644 --- a/src/pybind/mgr/dashboard/frontend/e2e/nfs/nfs.po.ts +++ b/src/pybind/mgr/dashboard/frontend/e2e/nfs/nfs.po.ts @@ -1,7 +1,5 @@ -import { browser } from 'protractor'; +import { PageHelper } from '../page-helper.po'; -export class NfsPage { - navigateTo() { - return browser.get('/#/nfs'); - } +export class NfsPage extends PageHelper { + pages = { index: '/#/nfs' }; } diff --git a/src/pybind/mgr/dashboard/frontend/e2e/page-helper.po.ts b/src/pybind/mgr/dashboard/frontend/e2e/page-helper.po.ts new file mode 100644 index 0000000000000..7212d6b764b4e --- /dev/null +++ b/src/pybind/mgr/dashboard/frontend/e2e/page-helper.po.ts @@ -0,0 +1,27 @@ +import { $, $$, browser } from 'protractor'; + +interface Pages { + index: string; +} + +export abstract class PageHelper { + pages: Pages; + + static getBreadcrumbText() { + return $('.breadcrumb-item.active').getText(); + } + + static getTabText(idx) { + return $$('.nav.nav-tabs li') + .get(idx) + .getText(); + } + + static getTabsCount() { + return $$('.nav.nav-tabs li').count(); + } + + navigateTo(page = null) { + return browser.get(this.pages[page || 'index']); + } +} 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 0ab2414dfdd2f..69a626f64789f 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 @@ -1,11 +1,11 @@ import { Helper } from '../helper.po'; -import { PoolsPage } from './pools.po'; +import { PoolPageHelper } from './pools.po'; describe('Pools page', () => { - let page: PoolsPage; + let page: PoolPageHelper; beforeAll(() => { - page = new PoolsPage(); + page = new PoolPageHelper(); }); afterEach(() => { @@ -18,19 +18,19 @@ describe('Pools page', () => { }); it('should open and show breadcrumb', () => { - expect(Helper.getBreadcrumbText()).toEqual('Pools'); + expect(PoolPageHelper.getBreadcrumbText()).toEqual('Pools'); }); it('should show two tabs', () => { - expect(Helper.getTabsCount()).toEqual(2); + expect(PoolPageHelper.getTabsCount()).toEqual(2); }); it('should show pools list tab at first', () => { - expect(Helper.getTabText(0)).toEqual('Pools List'); + expect(PoolPageHelper.getTabText(0)).toEqual('Pools List'); }); it('should show overall performance as a second tab', () => { - expect(Helper.getTabText(1)).toEqual('Overall Performance'); + expect(PoolPageHelper.getTabText(1)).toEqual('Overall Performance'); }); }); }); 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 3682c671ea8d3..4fa15b79c0636 100644 --- a/src/pybind/mgr/dashboard/frontend/e2e/pools/pools.po.ts +++ b/src/pybind/mgr/dashboard/frontend/e2e/pools/pools.po.ts @@ -1,7 +1,8 @@ -import { browser } from 'protractor'; +import { PageHelper } from '../page-helper.po'; -export class PoolsPage { - navigateTo() { - return browser.get('/#/pool'); - } +export class PoolPageHelper extends PageHelper { + pages = { + index: '/#/pool', + create: '/#/pool/create' + }; } 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 55b2c07235688..ee74217318b08 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 @@ -18,7 +18,7 @@ describe('RGW buckets page', () => { }); it('should open and show breadcrumb', () => { - expect(Helper.getBreadcrumbText()).toEqual('Buckets'); + expect(BucketsPage.getBreadcrumbText()).toEqual('Buckets'); }); }); }); 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 a9eca3d41ab6d..5341f7520c4ce 100644 --- a/src/pybind/mgr/dashboard/frontend/e2e/rgw/buckets.po.ts +++ b/src/pybind/mgr/dashboard/frontend/e2e/rgw/buckets.po.ts @@ -1,7 +1,5 @@ -import { browser } from 'protractor'; +import { PageHelper } from '../page-helper.po'; -export class BucketsPage { - navigateTo() { - return browser.get('/#/rgw/bucket'); - } +export class BucketsPage extends PageHelper { + pages = { index: '/#/rgw/bucket' }; } diff --git a/src/pybind/mgr/dashboard/frontend/e2e/rgw/daemons.e2e-spec.ts b/src/pybind/mgr/dashboard/frontend/e2e/rgw/daemons.e2e-spec.ts index b673f6a39eaff..70553c9a06e44 100644 --- a/src/pybind/mgr/dashboard/frontend/e2e/rgw/daemons.e2e-spec.ts +++ b/src/pybind/mgr/dashboard/frontend/e2e/rgw/daemons.e2e-spec.ts @@ -18,19 +18,19 @@ describe('RGW daemons page', () => { }); it('should open and show breadcrumb', () => { - expect(Helper.getBreadcrumbText()).toEqual('Daemons'); + expect(DaemonsPage.getBreadcrumbText()).toEqual('Daemons'); }); it('should show two tabs', () => { - expect(Helper.getTabsCount()).toEqual(2); + expect(DaemonsPage.getTabsCount()).toEqual(2); }); it('should show daemons list tab at first', () => { - expect(Helper.getTabText(0)).toEqual('Daemons List'); + expect(DaemonsPage.getTabText(0)).toEqual('Daemons List'); }); it('should show overall performance as a second tab', () => { - expect(Helper.getTabText(1)).toEqual('Overall Performance'); + expect(DaemonsPage.getTabText(1)).toEqual('Overall Performance'); }); }); }); diff --git a/src/pybind/mgr/dashboard/frontend/e2e/rgw/daemons.po.ts b/src/pybind/mgr/dashboard/frontend/e2e/rgw/daemons.po.ts index d3fefabd2ba47..0f6c8363a5e0c 100644 --- a/src/pybind/mgr/dashboard/frontend/e2e/rgw/daemons.po.ts +++ b/src/pybind/mgr/dashboard/frontend/e2e/rgw/daemons.po.ts @@ -1,7 +1,5 @@ -import { browser } from 'protractor'; +import { PageHelper } from '../page-helper.po'; -export class DaemonsPage { - navigateTo() { - return browser.get('/#/rgw/daemon'); - } +export class DaemonsPage extends PageHelper { + pages = { index: '/#/rgw/daemon' }; } 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 757f0969c429c..3c6487acd8696 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 @@ -18,7 +18,7 @@ describe('RGW users page', () => { }); it('should open and show breadcrumb', () => { - expect(Helper.getBreadcrumbText()).toEqual('Users'); + expect(UsersPage.getBreadcrumbText()).toEqual('Users'); }); }); }); 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 3f7f798c5e506..7c21688ccb01b 100644 --- a/src/pybind/mgr/dashboard/frontend/e2e/rgw/users.po.ts +++ b/src/pybind/mgr/dashboard/frontend/e2e/rgw/users.po.ts @@ -1,7 +1,5 @@ -import { browser } from 'protractor'; +import { PageHelper } from '../page-helper.po'; -export class UsersPage { - navigateTo() { - return browser.get('/#/rgw/user'); - } +export class UsersPage extends PageHelper { + pages = { index: '/#/rgw/user' }; } -- 2.39.5