diff --git a/appium/tests/helpers/TouchHelper.ts b/appium/tests/helpers/TouchHelper.ts new file mode 100644 index 000000000..e122fc2dd --- /dev/null +++ b/appium/tests/helpers/TouchHelper.ts @@ -0,0 +1,20 @@ + +class TouchHelper { + + /** + * scroll down + */ + static scrollDown = async() => { + await driver.execute('mobile: scroll', {direction: 'down'}); + } + + /** + * scroll up + */ + static scrollUp = async() => { + await driver.execute('mobile: scroll', {direction: 'up'}); + } + +} + +export default TouchHelper; diff --git a/appium/tests/screenobjects/all-screens.ts b/appium/tests/screenobjects/all-screens.ts index 36b37feac..507f4c297 100644 --- a/appium/tests/screenobjects/all-screens.ts +++ b/appium/tests/screenobjects/all-screens.ts @@ -10,6 +10,8 @@ import ContactScreen from './contacts.screen'; import ContactPublicKeyScreen from './contact-public-key.screen'; import PublicKeyScreen from './public-key.screen'; import AttachmentScreen from './attachment.screen'; +import SentScreen from './sent.screen'; +import TrashScreen from './trash.screen' export { SplashScreen, @@ -23,5 +25,7 @@ export { AttachmentScreen, PublicKeyScreen, ContactScreen, - ContactPublicKeyScreen + ContactPublicKeyScreen, + SentScreen, + TrashScreen }; diff --git a/appium/tests/screenobjects/email.screen.ts b/appium/tests/screenobjects/email.screen.ts index 34f25cb9c..8b328b05e 100644 --- a/appium/tests/screenobjects/email.screen.ts +++ b/appium/tests/screenobjects/email.screen.ts @@ -10,6 +10,8 @@ const SELECTORS = { SAVE_BUTTON: '~Save', DOWNLOAD_ATTACHMENT_BUTTON: '~downloadButton', REPLY_BUTTON: '~replyButton', + DELETE_BUTTON: '~Delete', + CONFIRM_DELETING: '~OK' }; @@ -46,6 +48,14 @@ class EmailScreen extends BaseScreen { return $(SELECTORS.REPLY_BUTTON); } + get deleteButton() { + return $(SELECTORS.DELETE_BUTTON) + } + + get confirmDeletingButton() { + return $(SELECTORS.CONFIRM_DELETING) + } + checkEmailAddress = async (email: string) => { const selector = `~${email}`; await (await $(selector)).waitForDisplayed(); @@ -106,6 +116,14 @@ class EmailScreen extends BaseScreen { clickReplyButton = async () => { await ElementHelper.waitAndClick(await this.replyButton); } + + clickDeleteButton = async () => { + await ElementHelper.waitAndClick(await this.deleteButton); + } + + confirmDelete = async () => { + await ElementHelper.waitAndClick(await this.confirmDeletingButton) + } } export default new EmailScreen(); diff --git a/appium/tests/screenobjects/menu-bar.screen.ts b/appium/tests/screenobjects/menu-bar.screen.ts index 0127ca3df..61d93745f 100644 --- a/appium/tests/screenobjects/menu-bar.screen.ts +++ b/appium/tests/screenobjects/menu-bar.screen.ts @@ -7,7 +7,8 @@ const SELECTORS = { LOGOUT_BTN: '~Log out', SETTINGS_BTN: '~Settings', INBOX_BTN: '~INBOX', - SENT_BTN: '~SENT' + SENT_BTN: '~SENT', + TRASH_BTN: '~TRASH' }; class MenuBarScreen extends BaseScreen { @@ -35,6 +36,10 @@ class MenuBarScreen extends BaseScreen { return $(SELECTORS.SENT_BTN); } + get trashButton() { + return $(SELECTORS.TRASH_BTN) + } + clickMenuIcon = async () => { await ElementHelper.waitAndClick(await this.menuIcon, 1000); } @@ -64,6 +69,10 @@ class MenuBarScreen extends BaseScreen { clickSentButton = async () => { await ElementHelper.waitAndClick(await this.sentButton); } + + clickTrashButton = async () => { + await ElementHelper.waitAndClick(await this.trashButton); + } } export default new MenuBarScreen(); diff --git a/appium/tests/screenobjects/sent.screen.ts b/appium/tests/screenobjects/sent.screen.ts new file mode 100644 index 000000000..5bdfe0c76 --- /dev/null +++ b/appium/tests/screenobjects/sent.screen.ts @@ -0,0 +1,43 @@ +import BaseScreen from './base.screen'; +import TouchHelper from "../helpers/TouchHelper"; + +const SELECTORS = { + SENT_HEADER: '-ios class chain:**/XCUIElementTypeNavigationBar[`name == "SENT"`]', + SEARCH_ICON: '~search icn', + HELP_ICON: '~help icn' +}; + + +class SentScreen extends BaseScreen { + constructor() { + super(SELECTORS.SEARCH_ICON); + } + + get searchIcon() { + return $(SELECTORS.SEARCH_ICON); + } + + get helpIcon() { + return $(SELECTORS.HELP_ICON); + } + + get sentHeader() { + return $(SELECTORS.SENT_HEADER) + } + + checkSentScreen = async () => { + await expect(await this.sentHeader).toBeDisplayed(); + await expect(await this.searchIcon).toBeDisplayed(); + await expect(await this.helpIcon).toBeDisplayed() + } + + checkEmailIsNotDisplayed = async (subject: string) => { + await (await $(`~${subject}`)).waitForDisplayed({reverse: true}); + } + + refreshSentList = async () => { + await TouchHelper.scrollUp(); + } +} + +export default new SentScreen(); diff --git a/appium/tests/screenobjects/trash.screen.ts b/appium/tests/screenobjects/trash.screen.ts new file mode 100644 index 000000000..d3b605f78 --- /dev/null +++ b/appium/tests/screenobjects/trash.screen.ts @@ -0,0 +1,42 @@ +import BaseScreen from './base.screen'; +import TouchHelper from "../helpers/TouchHelper"; + +const SELECTORS = { + TRASH_HEADER: '-ios class chain:**/XCUIElementTypeNavigationBar[`name == "TRASH"`]', + SEARCH_ICON: '~search icn', + HELP_ICON: '~help icn' +}; + +class TrashScreen extends BaseScreen { + constructor() { + super(SELECTORS.SEARCH_ICON); + } + + get searchIcon() { + return $(SELECTORS.SEARCH_ICON); + } + + get helpIcon() { + return $(SELECTORS.HELP_ICON); + } + + get trashHeader() { + return $(SELECTORS.TRASH_HEADER) + } + + checkTrashScreen = async () => { + await expect(await this.trashHeader).toBeDisplayed(); + await expect(await this.searchIcon).toBeDisplayed(); + await expect(await this.helpIcon).toBeDisplayed() + } + + checkEmailIsNotDisplayed = async (subject: string) => { + await (await $(`~${subject}`)).waitForDisplayed({reverse: true}); + } + + refreshTrashList = async () => { + await TouchHelper.scrollUp(); + } +} + +export default new TrashScreen(); diff --git a/appium/tests/specs/composeEmail/SendEncryptedEmailAfterWrongPassPhrase.spec.ts b/appium/tests/specs/composeEmail/SendEncryptedEmailAfterWrongPassPhrase.spec.ts index ca0255d60..a38e1d650 100644 --- a/appium/tests/specs/composeEmail/SendEncryptedEmailAfterWrongPassPhrase.spec.ts +++ b/appium/tests/specs/composeEmail/SendEncryptedEmailAfterWrongPassPhrase.spec.ts @@ -4,7 +4,9 @@ import { InboxScreen, NewMessageScreen, EmailScreen, - MenuBarScreen + MenuBarScreen, + SentScreen, + TrashScreen } from '../../screenobjects/all-screens'; import { CommonData } from '../../data'; @@ -12,7 +14,7 @@ import DataHelper from "../../helpers/DataHelper"; describe('COMPOSE EMAIL: ', () => { - it('user is able to send encrypted email after resetting pass phrase', async () => { + it('user is able to send encrypted email after resetting pass phrase + move to trash, delete', async () => { const contactEmail = CommonData.secondContact.email; const emailSubject = CommonData.simpleEmail.subject + DataHelper.uniqueValue(); @@ -42,8 +44,29 @@ describe('COMPOSE EMAIL: ', () => { await MenuBarScreen.clickMenuIcon(); await MenuBarScreen.clickSentButton(); + await SentScreen.checkSentScreen(); + //Check sent email await InboxScreen.clickOnEmailBySubject(emailSubject); await EmailScreen.checkOpenedEmail(senderEmail, emailSubject, emailText); + //Delete sent email + await EmailScreen.clickDeleteButton(); + await SentScreen.checkSentScreen(); + await SentScreen.checkEmailIsNotDisplayed(emailSubject); + await SentScreen.refreshSentList(); + await SentScreen.checkSentScreen(); + await SentScreen.checkEmailIsNotDisplayed(emailSubject); + //Check email in Trash list + await MenuBarScreen.clickMenuIcon(); + await MenuBarScreen.clickTrashButton(); + await TrashScreen.checkTrashScreen(); + await InboxScreen.clickOnEmailBySubject(emailSubject); + //Remove from Trash + await EmailScreen.clickDeleteButton(); + await EmailScreen.confirmDelete(); + await TrashScreen.checkTrashScreen(); + await TrashScreen.refreshTrashList(); + await TrashScreen.checkTrashScreen(); + await TrashScreen.checkEmailIsNotDisplayed(emailSubject); }); });