From: Patrick Nawracay Date: Mon, 17 Jun 2019 09:36:53 +0000 (+0200) Subject: mgr/dashboard: Ensure E2E tests can be run independently X-Git-Tag: v15.1.0~2427^2 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=0c64f40607f156ee7bdd3f76465ff92044af7398;p=ceph.git 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 --- diff --git a/src/pybind/mgr/dashboard/HACKING.rst b/src/pybind/mgr/dashboard/HACKING.rst index ca31aa62156a..8395ef3199ed 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 f962258f502d..8eb434120c41 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 b3fb2f1ea57c..6f9fb5aff9a4 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 aa7e034f9b17..194f87efb427 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 79eb94c44dec..9cba79b21eba 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 a8f819cc8744..536b0881f3b8 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 f4a8baebde11..875a51b1fc8c 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 2600a83ab849..bf139cb85566 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 076b15b69043..02cf70a429a7 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 e2c25a5bb6bf..56f4c293f8ad 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 b23a078aae44..47d000629fc5 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 77e8c06e8003..54243cafa6b7 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 e4d54c616f70..16992b84a9f4 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 806a6efeca2f..db5690cc0b7a 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 6a90ef7ff0e2..53c664019cfe 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 2e357b4c307b..5548eb1341b5 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 146779454cc3..9d61c8263853 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 6bc71747b280..a45baf8c4a08 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 208f30339920..72db6a429d97 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 54683ce1131d..7ff2e06e23cf 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 53159d30e4d5..256ddf77dea5 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 82e3388dec56..57ae67da268a 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 08e4143831fe..df84c8d490e7 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 d5306858423e..13266645d7e9 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 4f7638143b10..821cf00faf0c 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 7ff26b315b94..3e95ff8224e0 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 de45daf0a51d..23a29952772f 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 fe6f342ede4f..5909cafa42a6 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 000000000000..7212d6b764b4 --- /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 0ab2414dfdd2..69a626f64789 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 3682c671ea8d..4fa15b79c063 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 55b2c0723568..ee74217318b0 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 a9eca3d41ab6..5341f7520c4c 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 b673f6a39eaf..70553c9a06e4 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 d3fefabd2ba4..0f6c8363a5e0 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 757f0969c429..3c6487acd869 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 3f7f798c5e50..7c21688ccb01 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' }; }