From 58441a0eb04ff305fb77365b772eb26860a6b8d0 Mon Sep 17 00:00:00 2001 From: Roma Sosnovsky Date: Mon, 16 May 2022 15:31:11 +0300 Subject: [PATCH 1/6] #1568 fix keys refresh on app startup --- .../Main/SideMenuNavigationController.swift | 16 +++++++++++----- .../Functionality/Services/EKMVcHelper.swift | 5 ----- Podfile.lock | 2 +- 3 files changed, 12 insertions(+), 11 deletions(-) diff --git a/FlowCrypt/Controllers/SideMenu/Main/SideMenuNavigationController.swift b/FlowCrypt/Controllers/SideMenu/Main/SideMenuNavigationController.swift index 9a6fc18a6..2e2c1fb7b 100644 --- a/FlowCrypt/Controllers/SideMenu/Main/SideMenuNavigationController.swift +++ b/FlowCrypt/Controllers/SideMenu/Main/SideMenuNavigationController.swift @@ -46,19 +46,19 @@ final class SideMenuNavigationController: ENSideMenuNavigationController { self?.hideMenu() } - private var menuViewContoller: SideMenuViewController? + private var ekmVcHelper: EKMVcHelper? + private var menuViewController: SideMenuViewController? convenience init(appContext: AppContextWithUser, contentViewController: UIViewController) { let menu = MyMenuViewController(appContext: appContext) self.init(menuViewController: menu, contentViewController: contentViewController) - menuViewContoller = menu + menuViewController = menu + ekmVcHelper = EKMVcHelper(appContext: appContext) sideMenu = ENSideMenu(sourceView: view, menuViewController: menu, menuPosition: .left).then { $0.bouncingEnabled = false $0.delegate = self $0.animationDuration = Constants.animationDuration } - let ekmVcHelper = EKMVcHelper(appContext: appContext) - ekmVcHelper.refreshKeysFromEKMIfNeeded(in: self) } override func viewDidLoad() { @@ -79,6 +79,12 @@ final class SideMenuNavigationController: ENSideMenuNavigationController { updateSideMenuSize() } + override func viewDidAppear(_ animated: Bool) { + super.viewDidAppear(animated) + + ekmVcHelper?.refreshKeysFromEKMIfNeeded(in: self) + } + private func updateSideMenuSize() { sideMenu?.menuWidth = UIDevice.isIpad ? Constants.iPadMenuWidth @@ -124,7 +130,7 @@ extension SideMenuNavigationController: ENSideMenuDelegate { isStatusBarHidden = true setNeedsStatusBarAppearanceUpdate() gestureView.frame = view.frame - menuViewContoller?.didOpen() + menuViewController?.didOpen() } } diff --git a/FlowCrypt/Functionality/Services/EKMVcHelper.swift b/FlowCrypt/Functionality/Services/EKMVcHelper.swift index 2274120e0..512b669b2 100644 --- a/FlowCrypt/Functionality/Services/EKMVcHelper.swift +++ b/FlowCrypt/Functionality/Services/EKMVcHelper.swift @@ -26,11 +26,6 @@ final class EKMVcHelper: EKMVcHelperType { func refreshKeysFromEKMIfNeeded(in viewController: UIViewController) { Task { do { - // Sleep for 3 seconds when mock testing - // (This is to prevent refresh key UI test failure in semaphoreCI) - if Bundle.isDebugBundleWithArgument("--mock-fes-api") { - try await Task.sleep(nanoseconds: 3 * 1000 * 1_000_000) - } let configuration = try await appContext.clientConfigurationService.configuration guard configuration.checkUsesEKM() == .usesEKM else { return diff --git a/Podfile.lock b/Podfile.lock index 61e46acac..f4a66846b 100644 --- a/Podfile.lock +++ b/Podfile.lock @@ -67,4 +67,4 @@ SPEC CHECKSUMS: PODFILE CHECKSUM: abafa6480e0cf87ece2c94e283e4fe84fd790f94 -COCOAPODS: 1.11.2 +COCOAPODS: 1.11.3 From 64957a5f69f4858e0fac2df1c552e558ccbdd1a1 Mon Sep 17 00:00:00 2001 From: Roma Sosnovsky Date: Tue, 17 May 2022 15:45:51 +0300 Subject: [PATCH 2/6] ui test fix --- .../xcshareddata/swiftpm/Package.resolved | 12 ++++++------ .../Container/InboxViewContainerController.swift | 10 +++++++--- .../Controllers/Inbox/InboxViewController.swift | 4 ++-- .../SideMenu/Main/SideMenuNavigationController.swift | 8 -------- FlowCrypt/Functionality/Services/EKMVcHelper.swift | 4 +++- 5 files changed, 18 insertions(+), 20 deletions(-) diff --git a/FlowCrypt.xcworkspace/xcshareddata/swiftpm/Package.resolved b/FlowCrypt.xcworkspace/xcshareddata/swiftpm/Package.resolved index cc43f543b..24fc3eea5 100644 --- a/FlowCrypt.xcworkspace/xcshareddata/swiftpm/Package.resolved +++ b/FlowCrypt.xcworkspace/xcshareddata/swiftpm/Package.resolved @@ -41,8 +41,8 @@ "kind" : "remoteSourceControl", "location" : "https://github.com/google/gtm-session-fetcher.git", "state" : { - "revision" : "eca9404a18f53727e4698211aaf2615eb93b962a", - "version" : "1.7.1" + "revision" : "4e9bbf2808b8fee444e84a48f5f3c12641987d3e", + "version" : "1.7.2" } }, { @@ -86,8 +86,8 @@ "kind" : "remoteSourceControl", "location" : "https://github.com/realm/realm-cocoa", "state" : { - "revision" : "98024648651fff3d111a340e38fff3b703d1c3f0", - "version" : "10.25.1" + "revision" : "41fe221e2209ad31bee35593513d957dc3e6e458", + "version" : "10.25.2" } }, { @@ -95,8 +95,8 @@ "kind" : "remoteSourceControl", "location" : "https://github.com/realm/realm-core", "state" : { - "revision" : "33dd84212b64cd0788590a93be0dde64d2869abb", - "version" : "11.14.0" + "revision" : "472d325a2e844fcb48c400db74e6b9646f92ca93", + "version" : "11.15.0" } }, { diff --git a/FlowCrypt/Controllers/Inbox/Container/InboxViewContainerController.swift b/FlowCrypt/Controllers/Inbox/Container/InboxViewContainerController.swift index c3f36a9f1..ea8a02b06 100644 --- a/FlowCrypt/Controllers/Inbox/Container/InboxViewContainerController.swift +++ b/FlowCrypt/Controllers/Inbox/Container/InboxViewContainerController.swift @@ -29,9 +29,10 @@ final class InboxViewContainerController: TableNodeViewController { case loadedFolders([FolderViewModel]) } - let appContext: AppContextWithUser - let foldersService: FoldersServiceType - let decorator: InboxViewControllerContainerDecorator + private let appContext: AppContextWithUser + private let foldersService: FoldersServiceType + private let decorator: InboxViewControllerContainerDecorator + private let ekmVcHelper: EKMVcHelper? private var state: State = .loading { didSet { handleNewState() } @@ -45,6 +46,8 @@ final class InboxViewContainerController: TableNodeViewController { self.appContext = appContext self.foldersService = foldersService ?? appContext.getFoldersService() self.decorator = decorator + self.ekmVcHelper = EKMVcHelper(appContext: appContext) + super.init(node: TableNode()) node.delegate = self node.dataSource = self @@ -106,6 +109,7 @@ final class InboxViewContainerController: TableNodeViewController { viewModel: input ) navigationController?.setViewControllers([inboxViewController], animated: false) + ekmVcHelper?.refreshKeysFromEKMIfNeeded(in: inboxViewController) } } diff --git a/FlowCrypt/Controllers/Inbox/InboxViewController.swift b/FlowCrypt/Controllers/Inbox/InboxViewController.swift index 99ec36836..2ff9d1e37 100644 --- a/FlowCrypt/Controllers/Inbox/InboxViewController.swift +++ b/FlowCrypt/Controllers/Inbox/InboxViewController.swift @@ -33,8 +33,8 @@ class InboxViewController: ViewController { var path: String { viewModel.path } // Search related varaibles - internal var isSearch: Bool = false - internal var searchedExpression: String = "" + internal var isSearch = false + internal var searchedExpression = "" var shouldBeginFetch = true init( diff --git a/FlowCrypt/Controllers/SideMenu/Main/SideMenuNavigationController.swift b/FlowCrypt/Controllers/SideMenu/Main/SideMenuNavigationController.swift index 2e2c1fb7b..bdf987a31 100644 --- a/FlowCrypt/Controllers/SideMenu/Main/SideMenuNavigationController.swift +++ b/FlowCrypt/Controllers/SideMenu/Main/SideMenuNavigationController.swift @@ -46,14 +46,12 @@ final class SideMenuNavigationController: ENSideMenuNavigationController { self?.hideMenu() } - private var ekmVcHelper: EKMVcHelper? private var menuViewController: SideMenuViewController? convenience init(appContext: AppContextWithUser, contentViewController: UIViewController) { let menu = MyMenuViewController(appContext: appContext) self.init(menuViewController: menu, contentViewController: contentViewController) menuViewController = menu - ekmVcHelper = EKMVcHelper(appContext: appContext) sideMenu = ENSideMenu(sourceView: view, menuViewController: menu, menuPosition: .left).then { $0.bouncingEnabled = false $0.delegate = self @@ -79,12 +77,6 @@ final class SideMenuNavigationController: ENSideMenuNavigationController { updateSideMenuSize() } - override func viewDidAppear(_ animated: Bool) { - super.viewDidAppear(animated) - - ekmVcHelper?.refreshKeysFromEKMIfNeeded(in: self) - } - private func updateSideMenuSize() { sideMenu?.menuWidth = UIDevice.isIpad ? Constants.iPadMenuWidth diff --git a/FlowCrypt/Functionality/Services/EKMVcHelper.swift b/FlowCrypt/Functionality/Services/EKMVcHelper.swift index a2724be0c..f2e59a0f0 100644 --- a/FlowCrypt/Functionality/Services/EKMVcHelper.swift +++ b/FlowCrypt/Functionality/Services/EKMVcHelper.swift @@ -81,7 +81,9 @@ final class EKMVcHelper: EKMVcHelperType { private func findKeysToUpdate(from keyDetails: [KeyDetails], localKeys: [Keypair]) throws -> [KeyDetails] { var keysToUpdate: [KeyDetails] = [] for keyDetail in keyDetails { - guard keyDetail.isFullyDecrypted ?? false else { throw EmailKeyManagerApiError.keysAreUnexpectedlyEncrypted } + guard keyDetail.isFullyDecrypted ?? false else { + throw EmailKeyManagerApiError.keysAreUnexpectedlyEncrypted + } guard let keyLastModified = keyDetail.lastModified else { throw EmailKeyManagerApiError.keysAreInvalid } From 05e669cd9e90f135d171e72356eac503b10759d4 Mon Sep 17 00:00:00 2001 From: Roma Sosnovsky Date: Wed, 18 May 2022 13:58:50 +0300 Subject: [PATCH 3/6] try to fix ui test --- appium/tests/helpers/AppiumHelper.ts | 1 + 1 file changed, 1 insertion(+) diff --git a/appium/tests/helpers/AppiumHelper.ts b/appium/tests/helpers/AppiumHelper.ts index 770dc9ffd..15176d055 100644 --- a/appium/tests/helpers/AppiumHelper.ts +++ b/appium/tests/helpers/AppiumHelper.ts @@ -11,6 +11,7 @@ class AppiumHelper { bundleId, arguments: processArgs } + await driver.pause(500); await driver.execute('mobile: launchApp', args); } } From 03071116fdcf05c1b3b18856b10e1d4a5188f105 Mon Sep 17 00:00:00 2001 From: Roma Sosnovsky Date: Wed, 18 May 2022 16:58:02 +0300 Subject: [PATCH 4/6] increse restartApp timeout --- appium/tests/helpers/AppiumHelper.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/appium/tests/helpers/AppiumHelper.ts b/appium/tests/helpers/AppiumHelper.ts index 15176d055..fd2623e03 100644 --- a/appium/tests/helpers/AppiumHelper.ts +++ b/appium/tests/helpers/AppiumHelper.ts @@ -7,11 +7,11 @@ class AppiumHelper { static async restartApp(processArgs: string[] = []) { const bundleId = CommonData.bundleId.id; await driver.terminateApp(bundleId); + await driver.pause(1500); const args = { bundleId, arguments: processArgs } - await driver.pause(500); await driver.execute('mobile: launchApp', args); } } From 4202d3cc32b9325213bba7ddb87d79664db0373e Mon Sep 17 00:00:00 2001 From: Roma Sosnovsky Date: Wed, 18 May 2022 21:35:25 +0300 Subject: [PATCH 5/6] update ios simulator for ui tests --- appium/config/wdio.live.conf.js | 2 +- appium/config/wdio.mock.conf.js | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/appium/config/wdio.live.conf.js b/appium/config/wdio.live.conf.js index bf6378a54..a0c648df5 100644 --- a/appium/config/wdio.live.conf.js +++ b/appium/config/wdio.live.conf.js @@ -29,7 +29,7 @@ config.capabilities = [ platformName: 'iOS', iosInstallPause: 5000, deviceName: 'iPhone 13', - platformVersion: '15.4', + platformVersion: '15.5', automationName: 'XCUITest', app: join(process.cwd(), './FlowCrypt.app'), simpleIsVisibleCheck: true, diff --git a/appium/config/wdio.mock.conf.js b/appium/config/wdio.mock.conf.js index 1730b0a60..83c856d16 100644 --- a/appium/config/wdio.mock.conf.js +++ b/appium/config/wdio.mock.conf.js @@ -14,7 +14,7 @@ config.capabilities = [ platformName: 'iOS', iosInstallPause: 5000, deviceName: 'iPhone 13', - platformVersion: '15.4', + platformVersion: '15.5', automationName: 'XCUITest', app: join(process.cwd(), './FlowCrypt.app'), processArguments: { 'args': ['--mock-fes-api', '--mock-attester-api'] }, From 04e50fdcb70655db2e9ee618f5a85d7f579675ab Mon Sep 17 00:00:00 2001 From: Roma Sosnovsky Date: Wed, 18 May 2022 22:35:19 +0300 Subject: [PATCH 6/6] update semaphore.yml --- .semaphore/semaphore.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.semaphore/semaphore.yml b/.semaphore/semaphore.yml index 0b6a12a72..313fdf31f 100644 --- a/.semaphore/semaphore.yml +++ b/.semaphore/semaphore.yml @@ -36,6 +36,7 @@ blocks: jobs: - name: Appium UI tests commands: + - xcversion select 13.4 - bundle exec fastlane build && ls -la appium - 'wget https://flowcrypt.s3.eu-central-1.amazonaws.com/release/flowcrypt-ios-old-version-for-ci-storage-compatibility-2022-05-09.zip -P ~/git/flowcrypt-ios/appium' - cd appium && npm run-script lint