From d07d472ee851d46fa096d98da51edd0489c7f689 Mon Sep 17 00:00:00 2001 From: Dmitry Sotnikov Date: Mon, 22 Nov 2021 13:22:28 +0200 Subject: [PATCH 1/3] added wdio-video-reporter for failed spec video recording --- appium/config/wdio.shared.conf.js | 11 +++++++---- appium/package.json | 1 + appium/tests/specs/login/GmailLogin.spec.ts | 1 - 3 files changed, 8 insertions(+), 5 deletions(-) diff --git a/appium/config/wdio.shared.conf.js b/appium/config/wdio.shared.conf.js index 644cf1408..e7c51621a 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', { + 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: './tmp', - disableWebdriverStepsReporting: true, - disableWebdriverScreenshotsReporting: false, }] ], 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/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(); - }); }); }); From a6cc0ab85d70907489c111e2ed01d11ea68bc9db Mon Sep 17 00:00:00 2001 From: Dmitry Sotnikov Date: Tue, 23 Nov 2021 11:11:44 +0200 Subject: [PATCH 2/3] debug for video-reporter --- .gitignore | 2 ++ .semaphore/semaphore.yml | 1 + appium/config/wdio.shared.conf.js | 2 +- .../specs/composeEmail/CheckComposeEmailAfterReopening.spec.ts | 2 +- 4 files changed, 5 insertions(+), 2 deletions(-) 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 e7c51621a..fbeadcf82 100644 --- a/appium/config/wdio.shared.conf.js +++ b/appium/config/wdio.shared.conf.js @@ -23,7 +23,7 @@ exports.config = { 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: './tmp', + outputDir: './video', }] ], services: [ diff --git a/appium/tests/specs/composeEmail/CheckComposeEmailAfterReopening.spec.ts b/appium/tests/specs/composeEmail/CheckComposeEmailAfterReopening.spec.ts index f46978253..55301c5dd 100644 --- a/appium/tests/specs/composeEmail/CheckComposeEmailAfterReopening.spec.ts +++ b/appium/tests/specs/composeEmail/CheckComposeEmailAfterReopening.spec.ts @@ -19,7 +19,7 @@ describe('COMPOSE EMAIL: ', () => { await SetupKeyScreen.setPassPhrase(); await InboxScreen.checkInboxScreen(); - await InboxScreen.clickCreateEmail(); + // await InboxScreen.clickCreateEmail(); await NewMessageScreen.composeEmail(recipientEmail, emailSubject, emailText); await NewMessageScreen.checkFilledComposeEmailInfo(recipientEmail, emailSubject, emailText); From a328b47b99471666456f7815afb614e62984c84a Mon Sep 17 00:00:00 2001 From: Dmitry Sotnikov Date: Tue, 23 Nov 2021 15:46:48 +0200 Subject: [PATCH 3/3] added fixes for createEmailButton, added scroll down for checking email subject, added fixes for video-reporter --- appium/tests/screenobjects/inbox.screen.ts | 18 +++++++++++++++--- .../CheckComposeEmailAfterReopening.spec.ts | 2 +- .../composeEmail/SelectRecipientByName.spec.ts | 1 + 3 files changed, 17 insertions(+), 4 deletions(-) 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/CheckComposeEmailAfterReopening.spec.ts b/appium/tests/specs/composeEmail/CheckComposeEmailAfterReopening.spec.ts index 55301c5dd..f46978253 100644 --- a/appium/tests/specs/composeEmail/CheckComposeEmailAfterReopening.spec.ts +++ b/appium/tests/specs/composeEmail/CheckComposeEmailAfterReopening.spec.ts @@ -19,7 +19,7 @@ describe('COMPOSE EMAIL: ', () => { await SetupKeyScreen.setPassPhrase(); await InboxScreen.checkInboxScreen(); - // await InboxScreen.clickCreateEmail(); + await InboxScreen.clickCreateEmail(); await NewMessageScreen.composeEmail(recipientEmail, emailSubject, emailText); await NewMessageScreen.checkFilledComposeEmailInfo(recipientEmail, emailSubject, emailText); 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();