From 6f2f46715f50ea79d51d61601a8f9cc7b054c856 Mon Sep 17 00:00:00 2001 From: Morgan Pretty Date: Mon, 9 Dec 2024 14:41:11 +1100 Subject: [PATCH] Added basic handling for env vars provided by Appium --- Session/Meta/AppDelegate.swift | 4 +++ .../Settings/DeveloperSettingsViewModel.swift | 25 +++++++++++++++++++ 2 files changed, 29 insertions(+) diff --git a/Session/Meta/AppDelegate.swift b/Session/Meta/AppDelegate.swift index 5f1e75595..b010b0cbb 100644 --- a/Session/Meta/AppDelegate.swift +++ b/Session/Meta/AppDelegate.swift @@ -30,6 +30,10 @@ class AppDelegate: UIResponder, UIApplicationDelegate, UNUserNotificationCenterD // MARK: - Lifecycle func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool { + // Just in case we are running automated tests we should process environment variables + // before we do anything else + DeveloperSettingsViewModel.processUnitTestEnvVaraiblesIfNeeded() + Log.info("[AppDelegate] didFinishLaunchingWithOptions called.") startTime = CACurrentMediaTime() diff --git a/Session/Settings/DeveloperSettingsViewModel.swift b/Session/Settings/DeveloperSettingsViewModel.swift index 654dbb9a8..2b418559f 100644 --- a/Session/Settings/DeveloperSettingsViewModel.swift +++ b/Session/Settings/DeveloperSettingsViewModel.swift @@ -550,6 +550,31 @@ class DeveloperSettingsViewModel: SessionTableViewModel, NavigatableStateHolder, } } +// MARK: - Automated Test Convenience + +extension DeveloperSettingsViewModel { + static func processUnitTestEnvVaraiblesIfNeeded() { +#if targetEnvironment(simulator) + enum EnvironmentVariable: String { + case animationsEnabled + } + + ProcessInfo.processInfo.environment.forEach { key, value in + guard let variable: EnvironmentVariable = EnvironmentVariable(rawValue: key) else { return } + + switch variable { + case .animationsEnabled: + guard value == "false" else { return } + + UIView.setAnimationsEnabled(false) + } + } +#endif + } +} + +// MARK: - DocumentPickerResult + private class DocumentPickerResult: NSObject, UIDocumentPickerDelegate { private let onResult: (URL?) -> Void