1 import { $, $$, by, ElementFinder } from 'protractor';
2 import { PageHelper } from '../page-helper.po';
4 export class DashboardPageHelper extends PageHelper {
9 async infoGroupTitle(index: number): Promise<string> {
10 return $$('.info-group-title')
15 async clickInfoCardLink(cardName: string): Promise<void> {
16 await $(`cd-info-card[cardtitle="${cardName}"]`)
17 .element(by.linkText(cardName))
21 async infoCard(indexOrTitle: number | string): Promise<ElementFinder> {
22 let infoCards = $$('cd-info-card');
23 if (typeof indexOrTitle === 'number') {
24 if ((await infoCards.count()) <= indexOrTitle) {
25 return Promise.reject(
26 `No element found for index ${indexOrTitle}. Elements array has ` +
27 `only ${await infoCards.count()} elements.`
30 return infoCards.get(indexOrTitle);
31 } else if (typeof indexOrTitle === 'string') {
32 infoCards = infoCards.filter(
33 async (e) => (await e.$('.card-title').getText()) === indexOrTitle
35 if ((await infoCards.count()) === 0) {
36 return Promise.reject(`No element found for title "${indexOrTitle}"`);
38 return infoCards.first();
42 async infoCardBodyText(
43 infoCard: ElementFinder | Promise<ElementFinder> | string
45 let _infoCard: ElementFinder;
46 if (typeof infoCard === 'string') {
47 _infoCard = await this.infoCard(infoCard);
49 _infoCard = typeof infoCard.then === 'function' ? await infoCard : infoCard;
51 return _infoCard.$('.card-text').getText();