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;