diff --git a/.gitignore b/.gitignore index d0b5e1a2e..d068fefbe 100644 --- a/.gitignore +++ b/.gitignore @@ -49,3 +49,5 @@ appium/package-lock.json appium/tmp appium/.env appium/FlowCrypt.app +appium/video + diff --git a/.semaphore/semaphore.yml b/.semaphore/semaphore.yml index 69b2d0d32..8db158290 100644 --- a/.semaphore/semaphore.yml +++ b/.semaphore/semaphore.yml @@ -47,6 +47,7 @@ blocks: on_fail: commands: - artifact push job ~/Library/Logs/DiagnosticReports/FlowCrypt_* + - artifact push job ~/git/flowcrypt-ios/appium/video/*.mp4 - name: TypeScript + Swift tests dependencies: [] run: # don't run if the only thing that changed is Appium test deps diff --git a/appium/config/wdio.shared.conf.js b/appium/config/wdio.shared.conf.js index 644cf1408..fbeadcf82 100644 --- a/appium/config/wdio.shared.conf.js +++ b/appium/config/wdio.shared.conf.js @@ -1,4 +1,5 @@ const { join } = require('path'); +const video = require('wdio-video-reporter'); exports.config = { @@ -16,11 +17,13 @@ exports.config = { connectionRetryTimeout: 90000, connectionRetryCount: 3, maxInstancesPerCapability: 1, - reporters: ['spec', - ['allure', { - outputDir: './tmp', - disableWebdriverStepsReporting: true, - disableWebdriverScreenshotsReporting: false, + reporters: [ + 'spec', + [video, { + saveAllVideos: false, // If true, also saves videos for successful test cases + videoSlowdownMultiplier: 3, // Higher to get slower videos, lower for faster videos [Value 1-100] + videoRenderTimeout: 10, // Max seconds to wait for a video to finish rendering + outputDir: './video', }] ], services: [ diff --git a/appium/package.json b/appium/package.json index 7a9a52289..fd699df45 100644 --- a/appium/package.json +++ b/appium/package.json @@ -50,6 +50,7 @@ "request": "^2.88.2", "ts-node": "^10.4.0", "typescript": "^4.4.4", + "wdio-video-reporter": "^3.1.3", "webdriverio": "7.16.4" } } diff --git a/appium/tests/screenobjects/inbox.screen.ts b/appium/tests/screenobjects/inbox.screen.ts index 30df19907..43d967f44 100644 --- a/appium/tests/screenobjects/inbox.screen.ts +++ b/appium/tests/screenobjects/inbox.screen.ts @@ -1,5 +1,6 @@ import BaseScreen from './base.screen'; import ElementHelper from "../helpers/ElementHelper"; +import TouchHelper from "../helpers/TouchHelper"; const SELECTORS = { ENTER_YOUR_PASS_PHRASE_FIELD: '-ios class chain:**/XCUIElementTypeSecureTextField[`value == "Enter your pass phrase"`]', @@ -19,7 +20,7 @@ class InboxScreen extends BaseScreen { } get inboxHeader() { - return $(SELECTORS.INBOX_HEADER) + return $(SELECTORS.INBOX_HEADER) } clickOnUserEmail = async (email: string) => { @@ -28,16 +29,27 @@ class InboxScreen extends BaseScreen { } clickOnEmailBySubject = async (subject: string) => { - await ElementHelper.waitAndClick(await $(`~${subject}`), 500); + const selector = `~${subject}`; + if (await (await $(selector)).isDisplayed() !== true) { + await TouchHelper.scrollDown(); + } + await ElementHelper.waitAndClick(await $(selector), 500); } clickCreateEmail = async () => { + if (await (await this.createEmailButton).isDisplayed() !== true ) { + await TouchHelper.scrollDown(); + await (await this.createEmailButton).waitForDisplayed(); + } await ElementHelper.waitAndClick(await this.createEmailButton); } checkInboxScreen = async () => { await (await this.inboxHeader).waitForDisplayed(); - await (await this.createEmailButton).waitForDisplayed(); + if (await (await this.createEmailButton).isDisplayed() !== true) { + await TouchHelper.scrollDown(); + await (await this.createEmailButton).waitForDisplayed(); + } } } diff --git a/appium/tests/specs/composeEmail/SelectRecipientByName.spec.ts b/appium/tests/specs/composeEmail/SelectRecipientByName.spec.ts index 540d33b98..e76c9a0b3 100644 --- a/appium/tests/specs/composeEmail/SelectRecipientByName.spec.ts +++ b/appium/tests/specs/composeEmail/SelectRecipientByName.spec.ts @@ -41,6 +41,7 @@ describe('COMPOSE EMAIL: ', () => { await MenuBarScreen.clickMenuIcon(); await MenuBarScreen.clickInboxButton(); + await InboxScreen.checkInboxScreen(); // Add first contact await InboxScreen.clickCreateEmail(); diff --git a/appium/tests/specs/login/GmailLogin.spec.ts b/appium/tests/specs/login/GmailLogin.spec.ts index d5d2987a6..c025ead33 100644 --- a/appium/tests/specs/login/GmailLogin.spec.ts +++ b/appium/tests/specs/login/GmailLogin.spec.ts @@ -27,7 +27,6 @@ describe('LOGIN: ', () => { await MenuBarScreen.clickLogout(); await SplashScreen.checkLoginPage(); - }); }); });