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;