Home Manual Reference Source

src/page_objects/web/contacts/details/contactDetails.panel.js

import BaseContactDetailsPanel from "./base.contactDetails.panel.js";

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

  // PAGE ELEMENTS
  /* eslint-disable require-jsdoc */
  meetingLink() {
    return this.element(
      "//span[contains(text(), 'Meeting link')]/../following-sibling::dd[1]"
    );
  }

  phone() {
    return this.element(
      "//span[contains(text(), 'Phone')]/../following-sibling::dd[1]"
    );
  }

  extension() {
    return this.element(
      "//span[contains(text(), 'Extension')]/../following-sibling::dd[1]"
    );
  }
  /* eslint-enable require-jsdoc */

  // PAGE FUNCTIONS

  /**
   * Parses the details panel
   * @returns {Object} Object of the contacts details
   */
  async parseContactDetails() {
    const name = await this.contactName().getText();
    const favoriteStarClass = await this.favoriteStar().getAttribute("class");
    const favorite = favoriteStarClass.match(/icon icon-favorite-outline/)
      ? false
      : true;
    const presence = await this.presenceText().getText();
    const meetingLink = await this.meetingLink().getText();
    const videoAddress = await this.videoAddress().getText();
    const extension = await this.extension().getText();

    return {
      name: name,
      favorite: favorite,
      presence: presence.toLowerCase(),
      meetingLink: meetingLink,
      videoAddress: videoAddress,
      extension: extension
    };
  }
}

export default ContactDetailsPanel;