123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222 |
- import BasePageObject from './BasePageObject';
-
- const ASK_TO_UNMUTE_NOTIFICATION_ID = 'notify.hostAskedUnmute';
- const JOIN_ONE_TEST_ID = 'notify.connectedOneMember';
- const JOIN_TWO_TEST_ID = 'notify.connectedTwoMembers';
- const JOIN_MULTIPLE_TEST_ID = 'notify.connectedThreePlusMembers';
- const LOBBY_ACCESS_DENIED_TEST_ID = 'lobby.joinRejectedMessage';
- const LOBBY_ENABLED_TEST_ID = 'lobby.notificationLobbyEnabled';
- const LOBBY_KNOCKING_PARTICIPANT_NOTIFICATION_XPATH
- = '//div[@data-testid="notify.participantWantsToJoin"]/div/div/span';
- const LOBBY_NOTIFICATIONS_TITLE_TEST_ID = 'lobby.notificationTitle';
- const LOBBY_PARTICIPANT_ACCESS_DENIED_TEST_ID = 'lobby.notificationLobbyAccessDenied';
- const LOBBY_PARTICIPANT_ACCESS_GRANTED_TEST_ID = 'lobby.notificationLobbyAccessGranted';
- const LOBBY_PARTICIPANT_ADMIT_TEST_ID = 'participantsPane.actions.admit';
- const LOBBY_PARTICIPANT_REJECT_TEST_ID = 'participantsPane.actions.reject';
- const RAISE_HAND_NOTIFICATION_ID = 'notify.raisedHand';
- const REENABLE_SELF_VIEW_NOTIFICATION_ID = 'notify.selfViewTitle';
- const REENABLE_SELF_VIEW_CLOSE_NOTIFICATION = 'notify.selfViewTitle-dismiss';
-
- /**
- * Gathers all notifications logic in the UI and obtaining those.
- */
- export default class Notifications extends BasePageObject {
- /**
- * Waits for the raised hand notification to be displayed.
- * The notification on moderators page when the participant tries to unmute.
- */
- async waitForRaisedHandNotification() {
- const displayNameEl
- = this.participant.driver.$(`div[data-testid="${RAISE_HAND_NOTIFICATION_ID}"]`);
-
- await displayNameEl.waitForExist({ timeout: 2000 });
- await displayNameEl.waitForDisplayed();
- }
-
- /**
- * The notification on participants page when the moderator asks to unmute.
- */
- async waitForAskToUnmuteNotification() {
- const displayNameEl
- = this.participant.driver.$(`div[data-testid="${ASK_TO_UNMUTE_NOTIFICATION_ID}"]`);
-
- await displayNameEl.waitForExist({ timeout: 2000 });
- await displayNameEl.waitForDisplayed();
- }
-
- /**
- * Dismisses any join notifications.
- */
- dismissAnyJoinNotification() {
- return Promise.allSettled(
- [ `${JOIN_ONE_TEST_ID}-dismiss`, `${JOIN_TWO_TEST_ID}-dismiss`, `${JOIN_MULTIPLE_TEST_ID}-dismiss` ]
- .map(id => this.participant.driver.$(`#${id}"]`).click()));
- }
-
- /**
- * Waits for the self view notification to be displayed.
- */
- async waitForReEnableSelfViewNotification() {
- const el
- = this.participant.driver.$(`div[data-testid="${REENABLE_SELF_VIEW_NOTIFICATION_ID}"]`);
-
- await el.waitForExist({ timeout: 2000 });
- await el.waitForDisplayed();
-
- }
-
- /**
- * Closes the self view notification.
- */
- closeReEnableSelfViewNotification() {
- return this.participant.driver.$(`div[data-testid="${REENABLE_SELF_VIEW_CLOSE_NOTIFICATION}"]`).click();
- }
-
- /**
- * The notification on participants page when Lobby is being enabled or disabled.
- */
- getLobbyEnabledText() {
- return this.getNotificationText(LOBBY_ENABLED_TEST_ID);
- }
-
- /**
- * Closes a specific lobby notification.
- * @param testId
- * @private
- */
- private async closeLobbyNotification(testId: string) {
- const notification = this.participant.driver.$(`[data-testid="${testId}"]`);
-
- await notification.waitForExist();
- await notification.waitForStable();
-
- const closeButton
- = this.participant.driver.$(`[data-testid="${LOBBY_NOTIFICATIONS_TITLE_TEST_ID}"]`)
- .$('#close-notification');
-
- await closeButton.moveTo();
- await closeButton.click();
- }
-
- /**
- * Closes the notification.
- */
- closeLobbyEnabled() {
- return this.closeLobbyNotification(LOBBY_ENABLED_TEST_ID);
- }
-
- /**
- * Returns the name of the knocking participant (the only one) that is displayed on the notification.
- */
- async getKnockingParticipantName() {
- const knockingParticipantNotification
- = this.participant.driver.$('//div[@data-testid="notify.participantWantsToJoin"]/div/div/span');
-
- await knockingParticipantNotification.waitForDisplayed({
- timeout: 3000,
- timeoutMsg: 'Knocking participant notification not displayed'
- });
-
- return await knockingParticipantNotification.getText();
- }
-
- /**
- * Admits the last knocking participant (it is the only one).
- */
- async allowLobbyParticipant() {
- const admitButton
- = this.participant.driver.$(`[data-testid="${LOBBY_PARTICIPANT_ADMIT_TEST_ID}"]`);
-
- await admitButton.waitForExist();
- await admitButton.waitForClickable();
- await admitButton.click();
- }
-
- /**
- * The notification that someone's access was approved.
- */
- getLobbyParticipantAccessGranted() {
- return this.getNotificationText(LOBBY_PARTICIPANT_ACCESS_GRANTED_TEST_ID);
- }
-
- /**
- * Closes the notification.
- */
- closeLobbyParticipantAccessGranted() {
- return this.closeLobbyNotification(LOBBY_PARTICIPANT_ACCESS_GRANTED_TEST_ID);
- }
-
- /**
- * Returns notification text if the notification is found in the next few seconds.
- * @return the notification text.
- */
- private async getNotificationText(testId: string) {
- const notificationElement = this.participant.driver.$(`[data-testid="${testId}"]`);
-
- await notificationElement.waitForExist();
-
- return await notificationElement.getText();
- }
-
- /**
- * Rejects the last knocking participant (it is the only one).
- */
- async rejectLobbyParticipant() {
- const admitButton
- = this.participant.driver.$(`[data-testid="${LOBBY_PARTICIPANT_REJECT_TEST_ID}"]`);
-
- await admitButton.waitForExist();
- await admitButton.waitForClickable();
- await admitButton.click();
- }
-
- /**
- * The notification test that someone's access was denied.
- */
- getLobbyParticipantAccessDenied() {
- return this.getNotificationText(LOBBY_PARTICIPANT_ACCESS_DENIED_TEST_ID);
- }
-
- /**
- * Closes the notification.
- */
- closeLobbyParticipantAccessDenied() {
- return this.closeLobbyNotification(LOBBY_PARTICIPANT_ACCESS_DENIED_TEST_ID);
- }
-
- /**
- * Waits for the notification for access denied for entering the lobby is shown.
- */
- async waitForLobbyAccessDeniedNotification() {
- const displayNameEl
- = this.participant.driver.$(`div[data-testid="${LOBBY_ACCESS_DENIED_TEST_ID}"]`);
-
- await displayNameEl.waitForExist({ timeout: 2000 });
- await displayNameEl.waitForDisplayed();
- }
-
- /**
- * Will wait 3 seconds for the knocking participants to disappear and return true or will return false.
- * @return <tt>true</tt> if the knocking participants list was not displayed.
- */
- waitForHideOfKnockingParticipants() {
- return this.participant.driver.$(LOBBY_KNOCKING_PARTICIPANT_NOTIFICATION_XPATH)
- .waitForDisplayed({
- timeout: 3000,
- reverse: true
- });
- }
-
- /**
- * Closes local notification, for the participant that was denied.
- */
- async closeLocalLobbyAccessDenied() {
- await this.participant.driver.$('[data-testid="lobby.joinRejectedMessage"').waitForExist();
-
- const dismissButton
- = this.participant.driver.$('[data-testid="lobby.joinRejectedTitle-dismiss"]');
-
- await dismissButton.moveTo();
- await dismissButton.click();
- }
- }
|