You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
session-desktop/integration_test/page-objects/conversation.page.js

131 lines
5.8 KiB
JavaScript

const commonPage = require('./common.page');
module.exports = {
// conversation view
sessionLoader: commonPage.divWithClass('session-loader'),
leftPaneOverlay: commonPage.divWithClass('module-left-pane-overlay'),
sendMessageTextarea: commonPage.textAreaWithClass('send-message'),
sendFriendRequestTextarea: commonPage.textAreaWithPlaceholder(
'Send your first message'
),
existingSendMessageText: textMessage =>
`//*[contains(@class, "module-message__text--outgoing") and .//span[contains(@class, "text-selectable")][contains(string(), '${textMessage}')]]`,
existingFriendRequestText: textMessage =>
`//*[contains(@class, "module-message-friend-request__container") and .//span[contains(@class, "text-selectable")][contains(string(), '${textMessage}')]]`,
existingReceivedMessageText: textMessage =>
`//*[contains(@class, "module-message__text--incoming") and .//span[contains(@class, "text-selectable")][contains(string(), '${textMessage}')]]`,
// conversations
conversationButtonSection:
'//*[contains(@class,"session-icon-button") and .//*[contains(@class, "chatBubble")]]',
retrySendButton: commonPage.divWithClassAndText(
'module-friend-request__buttonContainer--outgoing',
'Retry Send'
),
headerTitleMembers: number =>
commonPage.spanWithClassAndText(
'module-conversation-header__title-text',
`${number} members`
),
attachmentInput: '//*[contains(@class, "choose-file")]/input[@type="file"]',
attachmentButton: '//*[contains(@class, "choose-file")]/button',
messageCtxMenu: message =>
`//div[contains(@class, 'message-wrapper')]//span[contains(string(), '${message}')]/parent::div/parent::div/parent::div/parent::div//div[contains(@class, 'module-message__buttons__menu')]`,
deleteMessageCtxButton:
'//*[contains(@class, "react-contextmenu--visible")]/div[contains(string(), "Delete")]',
deleteMessageModalButton:
'//*[contains(@class, "session-modal")]//div[contains(string(), "Delete") and contains(@class, "session-button")]',
// channels
globeButtonSection:
'//*[contains(@class,"session-icon-button") and .//*[contains(@class, "globe")]]',
joinOpenGroupButton: commonPage.divRoleButtonWithText('Join Open Group'),
openGroupInputUrl: commonPage.textAreaWithPlaceholder('chat.getsession.org'),
sessionToastJoinOpenGroupSuccess: commonPage.toastWithText(
'Successfully connected to new open group server'
),
sessionToastJoinOpenGroupAlreadyExist: commonPage.toastWithText(
'You are already connected to this public channel'
),
rowOpenGroupConversationName: groupName =>
commonPage.spanWithClassAndText(
'module-conversation__user__profile-number',
groupName
),
// closed group
createClosedGroupButton: commonPage.divRoleButtonWithText(
'Create Closed Group'
),
closedGroupNameTextarea: commonPage.textAreaWithPlaceholder(
'Enter a group name'
),
createClosedGroupMemberItem: idx =>
commonPage.divWithClass(`session-member-item-${idx}`),
createClosedGroupSealedSenderToggle: commonPage.divWithClass(
'session-toggle'
),
createClosedGroupMemberItemSelected: commonPage.divWithClass(
'session-member-item selected'
),
validateCreationClosedGroupButton: commonPage.divRoleButtonWithText(
'Create Closed Group'
),
sessionToastGroupCreatedSuccess: commonPage.toastWithText(
'Group created successfully'
),
headerTitleGroupName: groupname =>
commonPage.spanWithClassAndText(
'module-contact-name__profile-name',
groupname
),
// contacts
contactsButtonSection:
'//*[contains(@class,"session-icon-button") and .//*[contains(@class, "users")]]',
addContactButton: commonPage.divRoleButtonWithText('Add Contact'),
sessionIDInput: commonPage.textAreaWithPlaceholder('Enter a Session ID'),
nextButton: commonPage.divRoleButtonWithText('Next'),
oneNotificationFriendRequestLeft:
'//*[contains(@class,"session-icon-button") and .//*[contains(@class, "users")] and .//*[contains(@class, "notification-count") and contains(string(), "1")] ]',
oneNotificationFriendRequestTop:
'//*[contains(@class,"notification-count hover") and contains(string(), "1")]',
friendRequestFromUser: (displayName, pubkey) =>
`//*[contains(@class,"module-left-pane__list-popup") and .//*[contains(@class, "module-conversation__user") and .//*[contains(string(), "${displayName}")] and .//*[contains(string(), "(...${pubkey.substring(
60
)})")]]]`,
acceptFriendRequestButton:
'//*[contains(@role, "button")][contains(@class, "session-button")][contains(string(), "Accept")]',
acceptedFriendRequestMessage:
'//*[contains(@class, "module-friend-request__title")][contains(string(), "Friend request accepted")]',
descriptionDeleteAccount: commonPage.spanWithClassAndText(
'session-confirm-main-message',
'Are you sure you want to delete your account?'
),
validateDeleteAccount: commonPage.divRoleButtonDangerWithText('OK'),
// device linking
noPairedDeviceMessage:
'//*[contains(@class, "session-settings-item__title")][contains(string(), "No linked devices")]',
linkDeviceButton: commonPage.divRoleButtonWithText('Link New Device'),
linkDeviceButtonDisabled: commonPage.divRoleButtonWithTextDisabled(
'Link New Device'
),
devicePairingDialog: '//*[contains(@class,"device-pairing-dialog")]',
qrImageDiv: commonPage.divWithClass('qr-image'),
allowPairingButton: commonPage.divRoleButtonWithText('Allow Linking'),
okButton: commonPage.divRoleButtonWithText('OK'),
devicePairedDescription: secretWords =>
commonPage.divWithClassAndText(
'session-settings-item__description',
secretWords
),
unpairDeviceButton: commonPage.divRoleButtonDangerWithText('Unlink Device'),
deleteAccountButton: commonPage.divRoleButtonDangerWithText('Delete Account'),
validateUnpairDevice: commonPage.divRoleButtonDangerWithText('Unlink'),
};