Home Manual Reference Source

src/page_objects/web/contacts/pages/contacts.page.js

import BaseContactsPage from "./base.contacts.page.js";

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

  // PAGE ELEMENTS
  /* eslint-disable require-jsdoc, max-len */
  showMyContactsButton() {
    return this.element("span=My Contacts");
  }

  showAvailableContactsButton() {
    return this.element("span=Available");
  }

  showAllContactsButton() {
    return this.element("span=All");
  }

  createContactButton() {
    return this.element('//button[contains(string(), "Add a Contact")]');
  }

  pageHeaderIcon() {
    return this.element("div.iconsize-header-icon i.icon-contact-profile");
  }
  /* eslint-enable require-jsdoc, max-len */

  // PAGE FUNCTIONS

  /**
   * Use nav panel to visit page
   */
  async visit() {
    await this.navPanel.contacts().click();
    await this.pageHeaderIcon().waitForVisible(30000);
  }

  /**
   * Open create contact modal
   */
  async openCreateContactModal() {
    await this.createContactButton().click();
  }

  /**
   * Use filter to show all contacts
   */
  async showAll() {
    await this.showFilterOptions();
    await this.showAllContactsButton().click();
  }

  /**
   * Use filter to show available contacts
   */
  async showAvailable() {
    await this.showFilterOptions();
    await this.showAvailableContactsButton().click();
  }

  /**
   * Use filter to show personal contacts
   */
  async showMyContacts() {
    await this.showFilterOptions();
    await this.showMyContactsButton().click();
  }
}

export default ContactsPage;