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