From 62aeec345fdfdd67e050cff2ca08c46d4506557b Mon Sep 17 00:00:00 2001 From: wazzeps Date: Mon, 24 Apr 2023 20:03:59 +0200 Subject: [PATCH] feat: Add SupportsEnforceAppInstallOption to XCUITestOptions --- .../java_client/android/options/EspressoOptions.java | 2 +- .../java_client/android/options/UiAutomator2Options.java | 2 +- .../appium/java_client/ios/options/XCUITestOptions.java | 2 ++ .../java_client/remote/IOSMobileCapabilityType.java | 9 +++++++++ .../options}/SupportsEnforceAppInstallOption.java | 6 ++---- 5 files changed, 15 insertions(+), 6 deletions(-) rename src/main/java/io/appium/java_client/{android/options/app => remote/options}/SupportsEnforceAppInstallOption.java (91%) diff --git a/src/main/java/io/appium/java_client/android/options/EspressoOptions.java b/src/main/java/io/appium/java_client/android/options/EspressoOptions.java index c081be4f9..8cbe2cf33 100644 --- a/src/main/java/io/appium/java_client/android/options/EspressoOptions.java +++ b/src/main/java/io/appium/java_client/android/options/EspressoOptions.java @@ -37,7 +37,6 @@ import io.appium.java_client.android.options.app.SupportsAppWaitDurationOption; import io.appium.java_client.android.options.app.SupportsAppWaitPackageOption; import io.appium.java_client.android.options.app.SupportsAutoGrantPermissionsOption; -import io.appium.java_client.android.options.app.SupportsEnforceAppInstallOption; import io.appium.java_client.android.options.app.SupportsIntentOptionsOption; import io.appium.java_client.android.options.app.SupportsRemoteAppsCacheLimitOption; import io.appium.java_client.android.options.app.SupportsUninstallOtherPackagesOption; @@ -89,6 +88,7 @@ import io.appium.java_client.remote.options.SupportsAppOption; import io.appium.java_client.remote.options.SupportsAutoWebViewOption; import io.appium.java_client.remote.options.SupportsDeviceNameOption; +import io.appium.java_client.remote.options.SupportsEnforceAppInstallOption; import io.appium.java_client.remote.options.SupportsIsHeadlessOption; import io.appium.java_client.remote.options.SupportsLanguageOption; import io.appium.java_client.remote.options.SupportsLocaleOption; diff --git a/src/main/java/io/appium/java_client/android/options/UiAutomator2Options.java b/src/main/java/io/appium/java_client/android/options/UiAutomator2Options.java index adc161950..3c6a7bc51 100644 --- a/src/main/java/io/appium/java_client/android/options/UiAutomator2Options.java +++ b/src/main/java/io/appium/java_client/android/options/UiAutomator2Options.java @@ -37,7 +37,6 @@ import io.appium.java_client.android.options.app.SupportsAppWaitForLaunchOption; import io.appium.java_client.android.options.app.SupportsAppWaitPackageOption; import io.appium.java_client.android.options.app.SupportsAutoGrantPermissionsOption; -import io.appium.java_client.android.options.app.SupportsEnforceAppInstallOption; import io.appium.java_client.android.options.app.SupportsIntentActionOption; import io.appium.java_client.android.options.app.SupportsIntentCategoryOption; import io.appium.java_client.android.options.app.SupportsIntentFlagsOption; @@ -95,6 +94,7 @@ import io.appium.java_client.remote.options.SupportsClearSystemFilesOption; import io.appium.java_client.remote.options.SupportsDeviceNameOption; import io.appium.java_client.remote.options.SupportsEnablePerformanceLoggingOption; +import io.appium.java_client.remote.options.SupportsEnforceAppInstallOption; import io.appium.java_client.remote.options.SupportsIsHeadlessOption; import io.appium.java_client.remote.options.SupportsLanguageOption; import io.appium.java_client.remote.options.SupportsLocaleOption; diff --git a/src/main/java/io/appium/java_client/ios/options/XCUITestOptions.java b/src/main/java/io/appium/java_client/ios/options/XCUITestOptions.java index 2eb61386d..53465b4dd 100644 --- a/src/main/java/io/appium/java_client/ios/options/XCUITestOptions.java +++ b/src/main/java/io/appium/java_client/ios/options/XCUITestOptions.java @@ -106,6 +106,7 @@ import io.appium.java_client.remote.options.SupportsClearSystemFilesOption; import io.appium.java_client.remote.options.SupportsDeviceNameOption; import io.appium.java_client.remote.options.SupportsEnablePerformanceLoggingOption; +import io.appium.java_client.remote.options.SupportsEnforceAppInstallOption; import io.appium.java_client.remote.options.SupportsIsHeadlessOption; import io.appium.java_client.remote.options.SupportsLanguageOption; import io.appium.java_client.remote.options.SupportsLocaleOption; @@ -136,6 +137,7 @@ public class XCUITestOptions extends BaseOptions implements SupportsOtherAppsOption, SupportsAppPushTimeoutOption, SupportsAppInstallStrategyOption, + SupportsEnforceAppInstallOption, // WebDriverAgent options: https://github.com/appium/appium-xcuitest-driver#webdriveragent SupportsXcodeCertificateOptions, SupportsKeychainOptions, diff --git a/src/main/java/io/appium/java_client/remote/IOSMobileCapabilityType.java b/src/main/java/io/appium/java_client/remote/IOSMobileCapabilityType.java index b23150244..046dd4952 100644 --- a/src/main/java/io/appium/java_client/remote/IOSMobileCapabilityType.java +++ b/src/main/java/io/appium/java_client/remote/IOSMobileCapabilityType.java @@ -302,6 +302,15 @@ public interface IOSMobileCapabilityType extends CapabilityType { */ String UPDATE_WDA_BUNDLEID = "updatedWDABundleId"; + /** + * By default application installation is not skipped if newer or the same version of this app is already present on + * the device under test. Setting this option to {@code false} will enforce Appium to always skip the current + * application build. Defaults to {@code true}. + * + * @since 4.19.0 + */ + String ENFORCE_APP_INSTALL = "enforceAppInstall"; + /** * Whether to perform reset on test session finish (false) or not (true). * Keeping this variable set to true and Simulator running diff --git a/src/main/java/io/appium/java_client/android/options/app/SupportsEnforceAppInstallOption.java b/src/main/java/io/appium/java_client/remote/options/SupportsEnforceAppInstallOption.java similarity index 91% rename from src/main/java/io/appium/java_client/android/options/app/SupportsEnforceAppInstallOption.java rename to src/main/java/io/appium/java_client/remote/options/SupportsEnforceAppInstallOption.java index 3acc25875..5e343938c 100644 --- a/src/main/java/io/appium/java_client/android/options/app/SupportsEnforceAppInstallOption.java +++ b/src/main/java/io/appium/java_client/remote/options/SupportsEnforceAppInstallOption.java @@ -14,10 +14,8 @@ * limitations under the License. */ -package io.appium.java_client.android.options.app; +package io.appium.java_client.remote.options; -import io.appium.java_client.remote.options.BaseOptions; -import io.appium.java_client.remote.options.CanSetCapability; import org.openqa.selenium.Capabilities; import java.util.Optional; @@ -40,7 +38,7 @@ default T enforceAppInstall() { /** * Allows setting whether the application under test is always reinstalled even - * if a newer version of it already exists on the device under test. false by default. + * if a newer version of it already exists on the device under test. False (Android), true (iOS) by default. * * @param value True to allow test packages installation. * @return self instance for chaining.