tlc-core-automation-framework-v3-wdio-v9
Version:
Background: - We are following multi-layer automation framework architecture using webdriver.io + cucumber + typescript This core framework has been implemented with generic utility functions and cucumber steps, which can be easily consumed by another fra
110 lines (92 loc) • 3.25 kB
text/typescript
import logger from "../reporting-helpers/logger";
export const randomInputTypes = ['email', 'password'] as const;
export type RandomInputType = typeof randomInputTypes[number];
// @ts-ignore
import faker from 'faker'
export class DataHelper {
public static getRandomFirstName() {
return faker.name.firstName();
}
public static getRandomLastName() {
return faker.name.lastName();
}
public static getRandomEmailAddress() {
return faker.internet.email();
}
public static getRandomData(dataType: string) {
let randomData: string = '';
switch (dataType.toLocaleLowerCase()) {
case 'email address':
randomData = DataHelper.getRandomEmailAddress();
break;
case 'first name':
randomData = DataHelper.getRandomFirstName();
break;
case 'last name':
randomData = DataHelper.getRandomLastName();
break;
default:
throw Error(`No case implemented for random ${dataType}`)
break;
}
return randomData;
}
public static getPostcodeByState(state: string) {
let postcode: string = '';
switch (state.toLocaleLowerCase()) {
case 'act':
postcode = '2900';
break;
case 'nsw':
postcode = '2000';
break;
case 'nt':
postcode = '0800';
break;
case 'sa':
postcode = '5018';
break;
case 'tas':
postcode = '7010';
break;
case 'nz':
postcode = '5022';
break;
case 'vic':
postcode = '3000';
break;
default:
postcode = '4000';
break;
}
return postcode;
}
public static getValueFromCollection(data: { [k: string]: any }, myKey: string): any {
if (this.isKeyExistsInMyCollection(data, myKey))
return data[myKey]
else
throw Error(`Key : "${myKey}" is NOT FOUND in the object "data"`)
}
public static addDataToCollection(data: { [k: string]: any }, myKey: string, myValue: any): void {
data[myKey] = myValue;
logger.info(`"${myKey}" = "${myValue}" is added to collection "${data}"`);
}
public static isKeyExistsInMyCollection(data: { [k: string]: any }, myKey: string): boolean {
return data[myKey];
}
public static cleanMyCollection(data: { [k: string]: any }): void {
data = {};
logger.info(`Collection "${data}" is CLEARED now`);
}
public static getDataFromSimpleObject(data: {}, expectedKey: string): string {
if (Object.keys(data).length === 0)
throw Error(`"${data}" is blank, no KEY found`);
else if (expectedKey in data)
return data[expectedKey]
else
throw Error(`Key "${expectedKey}" is NOT FOUND in "${data}"`)
}
public static isObjectEmpty(data: {}): boolean {
return (Object.keys(data).length === 0);
}
}