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 <pnawracay@suse.com>
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
~~~~~~~~~~~~
});
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');
});
});
});
-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' };
}
});
it('should open and show breadcrumb', () => {
- expect(Helper.getBreadcrumbText()).toEqual('Overview');
+ expect(IscsiPage.getBreadcrumbText()).toEqual('Overview');
});
});
});
-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' };
}
});
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');
});
});
});
-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' };
}
});
it('should open and show breadcrumb', () => {
- expect(Helper.getBreadcrumbText()).toEqual('Alerts');
+ expect(AlertsPage.getBreadcrumbText()).toEqual('Alerts');
});
});
});
-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' };
}
});
it('should open and show breadcrumb', () => {
- expect(Helper.getBreadcrumbText()).toEqual('Configuration');
+ expect(ConfigurationPage.getBreadcrumbText()).toEqual('Configuration');
});
});
});
-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' };
}
});
it('should open and show breadcrumb', () => {
- expect(Helper.getBreadcrumbText()).toEqual('CRUSH map');
+ expect(CrushMapPage.getBreadcrumbText()).toEqual('CRUSH map');
});
});
});
-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' };
}
});
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');
});
});
});
-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' };
}
});
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');
});
});
});
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' };
}
});
it('should open and show breadcrumb', () => {
- expect(Helper.getBreadcrumbText()).toEqual('Manager modules');
+ expect(ManagerModulesPage.getBreadcrumbText()).toEqual('Manager modules');
});
});
});
-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' };
}
});
it('should open and show breadcrumb', () => {
- expect(Helper.getBreadcrumbText()).toEqual('Monitors');
+ expect(MonitorsPage.getBreadcrumbText()).toEqual('Monitors');
});
});
});
-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' };
}
});
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');
});
});
});
-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' };
}
});
it('should open and show breadcrumb', () => {
- expect(Helper.getBreadcrumbText()).toEqual('Filesystems');
+ expect(FilesystemsPage.getBreadcrumbText()).toEqual('Filesystems');
});
});
});
-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' };
}
-import { $, $$, browser } from 'protractor';
+import { browser } from 'protractor';
export class Helper {
static EC = browser.ExpectedConditions;
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();
- }
}
});
it('should open and show breadcrumb', () => {
- expect(Helper.getBreadcrumbText()).toEqual('NFS');
+ expect(NfsPage.getBreadcrumbText()).toEqual('NFS');
});
});
});
-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' };
}
--- /dev/null
+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']);
+ }
+}
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(() => {
});
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');
});
});
});
-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'
+ };
}
});
it('should open and show breadcrumb', () => {
- expect(Helper.getBreadcrumbText()).toEqual('Buckets');
+ expect(BucketsPage.getBreadcrumbText()).toEqual('Buckets');
});
});
});
-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' };
}
});
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');
});
});
});
-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' };
}
});
it('should open and show breadcrumb', () => {
- expect(Helper.getBreadcrumbText()).toEqual('Users');
+ expect(UsersPage.getBreadcrumbText()).toEqual('Users');
});
});
});
-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' };
}