Home Manual Reference Source

src/page_objects/web/profile/settings.page.js

/* TODO: WORK IN PROGRESS */

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

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

  // PAGE ELEMENTS
  /* eslint-disable require-jsdoc */
  cameraDropdown() {
    return this.element(
      'div[class^="components-SourceDisplay-SourceDisplay__videoSelect"]'
    );
  }

  microphoneDropdown() {
    return this.element(
      'div[class^="components-SourceDisplay-SourceDisplay__audioSelect"]'
    );
  }

  speakerDropdown() {
    const speakerDropdownElement = this.element(
      'div[class^="components-SourceDisplay-SourceDisplay__speakerDropdown"]'
    );
    return speakerDropdownElement.element(
      'div[class^="components-SourceDisplay-SourceDisplay__audioSelect"]'
    );
  }

  muteCheckbox() {
    return this.element('input[type="checkbox"]');
  }

  testSpeakersButton() {
    return this.element(
      'button[class^="components-SourceDisplay-SourceDisplay__playTest"]'
    );
  }

  languageDropdown() {
    return this.element(
      'div[class^="components-SelectLocale-SelectLocale__languageSelect"]'
    );
  }

  selectYourLanguageText() {
    return this.element("span=Select your language").getText();
  }
  /* eslint-enable require-jsdoc */

  // PAGE FUNCTIONS

  /** Select the option to mute the microphone upon starting a call*/
  async muteMicrophoneUponStart() {
    await this.muteCheckbox().click();
  }

  /** Select a language from the dropdown
   * @param {String} lang The language you would like to change to */
  async changeLanguage(lang) {
    await this.languageDropdown().click();
    const langCodes = {
      English: "en-us",
      German: "de",
      Spanish: "es-es",
      Finnish: "fi-fi",
      French: "fr-fr",
      Italian: "it-it",
      Japanese: "ja-jp",
      Norwegian: "no-no",
      Polish: "pl",
      Swedish: "sv-se",
      Chinese: "zh-cn",
      Portuguese: "pt-br",
      Czech: "cs-cz",
      Dutch: "nl-nl"
    };
    const langElement = this.element(`span#${langCodes[lang]}`);
    await langElement.click();
  }
}

export default SettingsPage;