Home Manual Reference Source

src/page_objects/web/general/base.modal.js

import BasePage from "../../base.page.js";

/** 
 * BaseModalPage 
 * @extends BasePage
 */
class BaseModalPage extends BasePage {
  /**
   * @param {args} args Args from controller
   */
  constructor(args) {
    super(args);
  }

  // PAGE ELEMENTS
  /* eslint-disable require-jsdoc */
  header() {
    return this.element("#displayedFullScreenModal h1");
  }

  closeModalX() {
    return this.element("button#closeModalButton");
  }
  /* eslint-enable require-jsdoc */

  // PAGE FUNCTIONS

  /**
   * Wait for header of modal to be visible
   */
  async waitForHeader() {
    await this.header().waitForVisible();
  }

  /**
   * Clicks and closes the modal
   */
  async closeModal() {
    if (await this.closeModalX().isVisible()) {
      await this.closeModalX().click();
    }
  }

  /** 
   * Checks if header is visible
   * @returns {Boolean} true if header is visible
   */
  async isHeaderVisible() {
    return await this.header().isVisible();
  }

  /**
   * Get the text of the modal header
   * @returns {String} Text of the header
   */
  async getModalHeaderText() {
    return await this.header().getText();
  }
}

export default BaseModalPage;