Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 2 additions & 0 deletions FlowCrypt/Controllers/Search/SearchViewController.swift
Original file line number Diff line number Diff line change
Expand Up @@ -244,6 +244,8 @@ extension SearchViewController: UISearchControllerDelegate, UISearchBarDelegate
alignment: .left
)
searchController.searchBar.searchTextField.textColor = .white
searchController.searchBar.searchTextField.accessibilityIdentifier = "searchAllEmailField"

}
}

Expand Down
19 changes: 10 additions & 9 deletions appium/tests/helpers/TouchHelper.ts
Original file line number Diff line number Diff line change
Expand Up @@ -34,23 +34,24 @@ class TouchHelper {
static scrollDownToElement = async (element: WebdriverIO.Element) => {
const { width, height } = await driver.getWindowSize();
const anchor = width / 2;
const startPoint = height * 0.25;
const startPoint = height * 0.75;
const endPoint = height * 0.15;
let index = 0;

do {
await browser.pause(1000); // due to scroll action which takes about second
// this wait can be later replaced by waiting for loader to go away before scrolling
await browser.pause(1000); // make sure contents are loaded first, so we don't scroll too early
for(let i = 0; i < 15; i++) {
if (await (await element).isDisplayed()) {
return;
}
await driver.touchPerform([
{action: 'press', options: {x: anchor, y: startPoint}},
{action: 'wait', options: {ms: 100}},
{action: 'moveTo', options: {x: anchor, y: endPoint}},
{action: 'release', options: {}},
]);
} while (await (await element).isDisplayed() !== true && index++ < 14);

if(index === 15) throw new Error(`Element ${JSON.stringify(element.selector)} doesn't displayed after scroll`);
await browser.pause(1000); // due to scroll action which takes about second
}
throw new Error(`Element ${JSON.stringify(element.selector)} not displayed after scroll`);
}

}

export default TouchHelper;
19 changes: 17 additions & 2 deletions appium/tests/screenobjects/mail-folder.screen.ts
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,8 @@ const SELECTORS = {
CREATE_EMAIL_BUTTON: '-ios class chain:**/XCUIElementTypeButton[`label == "+"`]',
INBOX_HEADER: '-ios class chain:**/XCUIElementTypeStaticText[`label == "INBOX"`]',
SEARCH_ICON: '~search icn',
HELP_ICON: '~help icn'
HELP_ICON: '~help icn',
SEARCH_FIELD: '~searchAllEmailField'
};

class MailFolderScreen extends BaseScreen {
Expand Down Expand Up @@ -40,6 +41,10 @@ class MailFolderScreen extends BaseScreen {
return $(SELECTORS.CREATE_EMAIL_BUTTON);
}

get searchField() {
return $(SELECTORS.SEARCH_FIELD);
}

checkTrashScreen = async () => {
await expect(await this.trashHeader).toBeDisplayed();
await expect(await this.searchIcon).toBeDisplayed();
Expand All @@ -61,7 +66,6 @@ class MailFolderScreen extends BaseScreen {
}

clickOnEmailBySubject = async (subject: string) => {
await expect(await this.helpIcon).toBeDisplayed();
const selector = `~${subject}`;
if (await (await $(selector)).isDisplayed() !== true) {
await TouchHelper.scrollDownToElement(await $(selector));
Expand All @@ -88,6 +92,17 @@ class MailFolderScreen extends BaseScreen {
await expect(await this.searchIcon).toBeDisplayed();
await expect(await this.helpIcon).toBeDisplayed()
}

clickSearchButton = async () => {
await ElementHelper.waitAndClick(await this.searchIcon, 1000); // delay needed on M1
}

searchEmailBySubject = async (subject: string) => {
await this.clickSearchButton();
await (await this.searchField).setValue(`subject: '${subject}'`);
const selector = `~${subject}`;
await expect(await $(selector)).toBeDisplayed();
}
}

export default new MailFolderScreen();
4 changes: 2 additions & 2 deletions appium/tests/screenobjects/new-message.screen.ts
Original file line number Diff line number Diff line change
Expand Up @@ -104,8 +104,8 @@ class NewMessageScreen extends BaseScreen {
};

checkFilledComposeEmailInfo = async (recipient: string, subject: string, message: string, attachmentName?: string) => {
expect(this.composeSecurityMessage).toHaveText(message);
expect(this.composeSecurityMessage).toHaveTextContaining(message);

const element = await this.filledSubject(subject);
await element.waitForDisplayed();

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -24,13 +24,15 @@ describe('INBOX: ', () => {
await SetupKeyScreen.setPassPhrase();
await MailFolderScreen.checkInboxScreen();

await MailFolderScreen.searchEmailBySubject(emailSubject);
await MailFolderScreen.clickOnEmailBySubject(emailSubject);
await EmailScreen.checkOpenedEmail(senderEmail, emailSubject, emailText);

await driver.terminateApp(bundleId);
await driver.activateApp(bundleId);

await MailFolderScreen.checkInboxScreen();
await MailFolderScreen.searchEmailBySubject(emailSubject);
await MailFolderScreen.clickOnEmailBySubject(emailSubject);

//try to see encrypted message with wrong pass phrase
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -19,12 +19,13 @@ describe('INBOX: ', () => {

const replySubject = `Re: ${emailSubject}`;
const forwardSubject = `Fwd: ${emailSubject}`;
const quoteText = `On 11/5/21 at 4:15 AM ${senderEmail} wrote:\n > ${emailText}`;
const quoteText = `${senderEmail} wrote:\n > ${emailText}`;

await SplashScreen.login();
await SetupKeyScreen.setPassPhrase();
await MailFolderScreen.checkInboxScreen();

await MailFolderScreen.searchEmailBySubject(emailSubject);
await MailFolderScreen.clickOnEmailBySubject(emailSubject);
await EmailScreen.checkOpenedEmail(senderEmail, emailSubject, emailText);

Expand Down
2 changes: 2 additions & 0 deletions appium/tests/specs/inbox/ReadAttachmentEmail.spec.ts
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,7 @@ describe('INBOX: ', () => {
await SetupKeyScreen.setPassPhrase();
await MailFolderScreen.checkInboxScreen();

await MailFolderScreen.searchEmailBySubject(emailSubject);
await MailFolderScreen.clickOnEmailBySubject(emailSubject);
await EmailScreen.checkOpenedEmail(senderEmail, emailSubject, emailText);
await EmailScreen.checkAttachment(attachmentName); //disabled due to
Expand All @@ -33,6 +34,7 @@ describe('INBOX: ', () => {
await driver.activateApp(bundleId);

await MailFolderScreen.checkInboxScreen();
await MailFolderScreen.searchEmailBySubject(emailSubject);
await MailFolderScreen.clickOnEmailBySubject(emailSubject);

//try to see encrypted message with wrong pass phrase
Expand Down
3 changes: 3 additions & 0 deletions appium/tests/specs/inbox/ReadEmailAfterRestartApp.spec.ts
Original file line number Diff line number Diff line change
Expand Up @@ -19,13 +19,16 @@ describe('INBOX: ', () => {
await SetupKeyScreen.setPassPhrase();
await MailFolderScreen.checkInboxScreen();

await MailFolderScreen.searchEmailBySubject(emailSubject);
await MailFolderScreen.clickOnEmailBySubject(emailSubject);
await EmailScreen.checkOpenedEmail(senderEmail, emailSubject, emailText);

await driver.terminateApp(CommonData.bundleId.id);
await driver.activateApp(CommonData.bundleId.id);

await MailFolderScreen.checkInboxScreen();
await MailFolderScreen.searchEmailBySubject(emailSubject);

await MailFolderScreen.clickOnEmailBySubject(emailSubject);
await EmailScreen.checkOpenedEmail(senderEmail, emailSubject, emailText);
});
Expand Down
1 change: 1 addition & 0 deletions appium/tests/specs/inbox/ReadKeyMismatchEmail.spec.ts
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,7 @@ describe('INBOX: ', () => {
await SetupKeyScreen.setPassPhrase();
await MailFolderScreen.checkInboxScreen();

await MailFolderScreen.searchEmailBySubject(emailSubject);
await MailFolderScreen.clickOnEmailBySubject(emailSubject);
await EmailScreen.checkOpenedEmail(senderEmail, emailSubject, emailText);
});
Expand Down
1 change: 1 addition & 0 deletions appium/tests/specs/inbox/ReadTextEmail.spec.ts
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,7 @@ describe('INBOX: ', () => {
await SetupKeyScreen.setPassPhrase();
await MailFolderScreen.checkInboxScreen();

await MailFolderScreen.searchEmailBySubject(emailSubject);
await MailFolderScreen.clickOnEmailBySubject(emailSubject);
await EmailScreen.checkOpenedEmail(senderEmail, emailSubject, emailText);
});
Expand Down