Skip to content

Instantly share code, notes, and snippets.

@patricksevat
Last active November 24, 2019 16:18
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save patricksevat/a8cf8b0a251c8981d51bcb4a61de2576 to your computer and use it in GitHub Desktop.
Save patricksevat/a8cf8b0a251c8981d51bcb4a61de2576 to your computer and use it in GitHub Desktop.
base class for Page Object
// ./objects/base/page-object-base.ts
export interface IComponentObject {
[key: string]: any;
isRendered(): Promise<any>;
}
export abstract class PageObjectBase {
element: string;
features: IComponentObject[];
url: string;
async waitUntilRendered(): Promise<any> {
try {
await this.verifyRenderRequirements();
const promises = this.features.map(feature => feature.render);
return Promise.all(promises);
} catch (e) {
return Promise.reject(e);
}
}
verifyRenderRequirements() {
if (this.features.length === 0) {
return Promise.reject(`${this.element} has no registered features or page render requirements`);
}
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment