import { Dashboard } from '../e2elib/lib/src/pageobjects/dashboard/dashboard.component';
|
import { Gauge } from '../e2elib/lib/src/pageobjects/gauge.component';
|
import { ColorSOP } from './colorsop';
|
|
export interface GaugeProperties {
|
Value?: string;
|
Unit?: string;
|
ThresholdColor?: ColorSOP;
|
}
|
|
export class DashboardSOP extends Dashboard {
|
public constructor(componentPath: string) {
|
super(componentPath);
|
}
|
|
/**
|
* E2e lib throws error if gauge title not found thus very hard to use by scriptor as need try catch.
|
*
|
* @param gaugeTitle Gauge title to identify each gauge in the UI.
|
* @returns If found returns gauge, else returns undefined.
|
*/
|
public async getGaugeSOP(gaugeTitle?: string): Promise<Gauge | undefined> {
|
try {
|
const gauge = await this.getGauge(gaugeTitle);
|
return gauge;
|
} catch {
|
return undefined;
|
}
|
}
|
|
/**
|
* Verify if gauge exists.
|
*
|
* @param gaugeTitle Gauge title to identify each gauge in the UI.
|
*/
|
public async verifyGaugeExists(gaugeTitle: string): Promise<void> {
|
const gauge = await this.getGaugeSOP(gaugeTitle);
|
expect(gauge).toBeDefined(`Expected gauge "${gaugeTitle}" to exist.`);
|
}
|
|
/**
|
* Verify if gauge not exist.
|
*
|
* @param gaugeTitle Gauge title to identify each gauge in the UI.
|
*/
|
public async verifyGaugeNotExist(gaugeTitle: string): Promise<void> {
|
const gauge = await this.getGaugeSOP(gaugeTitle);
|
expect(gauge).toBeUndefined(`Expected gauge "${gaugeTitle}" to not exist.`);
|
}
|
|
/**
|
* Verify gauge properties such as value, unit and threshold color.
|
* Scriptor can specifiy one or more gauge properties to verify.
|
*
|
* @param gaugeTitle Gauge title to identify each gauge in the UI.
|
* @param gaugeProps Interface to define one or more gauge properties to verify.
|
*/
|
public async verifyGaugeProperties(gaugeTitle: string, gaugeProps: GaugeProperties): Promise<void> {
|
const gauge = await this.getGaugeSOP(gaugeTitle) as Gauge;
|
|
if (gaugeProps.Value) {
|
expect(await gauge.getValue()).toBe(gaugeProps.Value, `Verify fail for gauge "${gaugeTitle}" value.`);
|
}
|
|
if (gaugeProps.Unit) {
|
expect(await gauge.getUnit()).toBe(gaugeProps.Unit, `Verify fail for gauge "${gaugeTitle}" unit.`);
|
}
|
|
if (gaugeProps.ThresholdColor) {
|
expect(await gauge.getTresholdColor()).toBe(gaugeProps.ThresholdColor.Rgb, `Verify fail for gauge "${gaugeTitle}" threshold color.`);
|
}
|
}
|
}
|
|
// Step description to re-use in spec file to prevent scriptor re-write each time
|
const stepDashboard = {
|
verifyGaugeExists: (gaugeTitles: string[]): string => `Verify gauge "${gaugeTitles.join(', ')}" exists in dashboard.`,
|
verifyGaugeNotExist: (gaugeTitles: string[]): string => `Verify gauge "${gaugeTitles.join(', ')}" not exist in dashboard.`,
|
verifyGaugeProperties: (gaugeTitle: string, fields: any): string => {
|
const arr: string[] = [];
|
for (const [key, value] of Object.entries(fields)) {
|
if (typeof value === 'string') {
|
arr.push(`${key} = "${value}"`);
|
} else {
|
arr.push(`${key} = "${(value as ColorSOP).Color}"`);
|
}
|
}
|
|
return `Verify gauge "${gaugeTitle}": ${arr.join(', ')}.`;
|
},
|
};
|
|
export { stepDashboard as StepDashboard };
|