diff --git a/src/main/java/io/appium/java_client/Setting.java b/src/main/java/io/appium/java_client/Setting.java index 316015600..90197b4ce 100644 --- a/src/main/java/io/appium/java_client/Setting.java +++ b/src/main/java/io/appium/java_client/Setting.java @@ -18,7 +18,9 @@ /** * Enums defining constants for Appium Settings which can be set and toggled during a test session. - * https://appium.io/docs/en/advanced-concepts/settings/ + *
+ * + * https://appium.io/docs/en/advanced-concepts/settings/ */ public enum Setting { @@ -33,12 +35,15 @@ public enum Setting { NORMALIZE_TAG_NAMES("normalizeTagNames"), KEY_INJECTION_DELAY("keyInjectionDelay"), SHUTDOWN_ON_POWER_DISCONNECT("shutdownOnPowerDisconnect"), + TRACK_SCROLL_EVENTS("trackScrollEvents"), // iOS MJPEG_SERVER_SCREENSHOT_QUALITY("mjpegServerScreenshotQuality"), MJPEG_SERVER_FRAMERATE("mjpegServerFramerate"), SCREENSHOT_QUALITY("screenshotQuality"), NATIVE_WEB_TAP("nativeWebTap"), MJPEG_SCALING_FACTOR("mjpegScalingFactor"), + KEYBOARD_AUTOCORRECTION("keyboardAutocorrection"), + KEYBOARD_PREDICTION("keyboardPrediction"), // Android and iOS SHOULD_USE_COMPACT_RESPONSES("shouldUseCompactResponses"), ELEMENT_RESPONSE_ATTRIBUTES("elementResponseAttributes"), @@ -50,7 +55,8 @@ public enum Setting { CHECK_IMAGE_ELEMENT_STALENESS("checkForImageElementStaleness"), UPDATE_IMAGE_ELEMENT_POSITION("autoUpdateImageElementPosition"), FIX_IMAGE_TEMPLATE_SCALE("fixImageTemplateScale"), - DEFAULT_IMAGE_TEMPLATE_SCALE("defaultImageTemplateScale"); + DEFAULT_IMAGE_TEMPLATE_SCALE("defaultImageTemplateScale"), + GET_MATCHED_IMAGE_RESULT("getMatchedImageResult"); private final String name; diff --git a/src/main/java/io/appium/java_client/android/HasAndroidSettings.java b/src/main/java/io/appium/java_client/android/HasAndroidSettings.java index a3584c614..977377b42 100644 --- a/src/main/java/io/appium/java_client/android/HasAndroidSettings.java +++ b/src/main/java/io/appium/java_client/android/HasAndroidSettings.java @@ -177,4 +177,18 @@ default HasAndroidSettings shutdownOnPowerDisconnect(boolean enabled) { setSetting(Setting.SHUTDOWN_ON_POWER_DISCONNECT, enabled); return this; } + + /** + * Turn on or off the tracking of scroll events as they happen. + * If {@code true}, a field {@code lastScrollData} is added to the results of + * {@code getSession}, which can then be used to check on scroll progress. + * Turning this feature off significantly increases touch action performance. + * + * @param enabled Either true or false. The default value if true. + * @return self instance for chaining + */ + default HasAndroidSettings setTrackScrollEvents(boolean enabled) { + setSetting(Setting.TRACK_SCROLL_EVENTS, enabled); + return this; + } } diff --git a/src/main/java/io/appium/java_client/ios/HasIOSSettings.java b/src/main/java/io/appium/java_client/ios/HasIOSSettings.java index ad8179cdb..1eda46aa4 100644 --- a/src/main/java/io/appium/java_client/ios/HasIOSSettings.java +++ b/src/main/java/io/appium/java_client/ios/HasIOSSettings.java @@ -107,4 +107,26 @@ default HasIOSSettings setMjpegScalingFactor(int scale) { setSetting(Setting.MJPEG_SCALING_FACTOR, scale); return this; } + + /** + * Changes the 'Auto-Correction' preference in Keyboards setting. + * + * @param enabled Either true or false. Defaults to false when WDA starts as xctest. + * @return self instance for chaining + */ + default HasIOSSettings setKeyboardAutocorrection(boolean enabled) { + setSetting(Setting.KEYBOARD_AUTOCORRECTION, enabled); + return this; + } + + /** + * Changes the 'Predictive' preference in Keyboards setting. + * + * @param enabled Either true or false. Defaults to false when WDA starts as xctest. + * @return self instance for chaining + */ + default HasIOSSettings setKeyboardPrediction(boolean enabled) { + setSetting(Setting.KEYBOARD_PREDICTION, enabled); + return this; + } } diff --git a/src/test/java/io/appium/java_client/android/SettingTest.java b/src/test/java/io/appium/java_client/android/SettingTest.java index ac2850595..0cd0ac6f5 100644 --- a/src/test/java/io/appium/java_client/android/SettingTest.java +++ b/src/test/java/io/appium/java_client/android/SettingTest.java @@ -84,6 +84,14 @@ public class SettingTest extends BaseAndroidTest { .get(Setting.SHUTDOWN_ON_POWER_DISCONNECT.toString())); } + @Test public void testSetTrackScrollEvents() { + assertEquals(true, driver.getSettings() + .get(Setting.TRACK_SCROLL_EVENTS.toString())); + driver.setTrackScrollEvents(false); + assertEquals(false, driver.getSettings() + .get(Setting.TRACK_SCROLL_EVENTS.toString())); + } + private void assertJSONElementContains(Setting setting, long value) { assertEquals(driver.getSettings().get(setting.toString()), value); } diff --git a/src/test/java/io/appium/java_client/ios/SettingTest.java b/src/test/java/io/appium/java_client/ios/SettingTest.java index 16fd358df..b6d576585 100644 --- a/src/test/java/io/appium/java_client/ios/SettingTest.java +++ b/src/test/java/io/appium/java_client/ios/SettingTest.java @@ -71,5 +71,17 @@ public class SettingTest extends AppIOSTest { .get(Setting.MJPEG_SCALING_FACTOR.toString())); } + @Test public void testSetKeyboardAutocorrection() { + driver.setKeyboardAutocorrection(true); + assertEquals(true, driver.getSettings() + .get(Setting.KEYBOARD_AUTOCORRECTION.toString())); + } + + @Test public void testSetKeyboardPrediction() { + driver.setKeyboardPrediction(true); + assertEquals(true, driver.getSettings() + .get(Setting.KEYBOARD_PREDICTION.toString())); + } + }