From f7a6e43d7def18c2ce3b9a5784180393625a97e2 Mon Sep 17 00:00:00 2001 From: Sudharsan Selvaraj Date: Sat, 20 Jul 2024 21:30:55 +0530 Subject: [PATCH] Remove driver implementation --- .../flutter/FlutterAndroidDriver.java | 134 ------------------ .../java_client/flutter/FlutterDriver.java | 22 --- .../java_client/flutter/FlutterIOSDriver.java | 133 ----------------- .../commands/CommonFlutterCommands.java | 93 ------------ .../flutter/commands/DoubleClickOptions.java | 5 - .../flutter/commands/DragAndDropOptions.java | 27 ---- .../commands/FlutterCommandOptions.java | 7 - .../commands/FlutterGestureOptions.java | 29 ---- .../flutter/commands/LongPressOptions.java | 13 -- .../flutter/commands/ScrollOptions.java | 66 --------- .../flutter/commands/WaitOptions.java | 34 ----- 11 files changed, 563 deletions(-) delete mode 100644 src/main/java/io/appium/java_client/flutter/FlutterAndroidDriver.java delete mode 100644 src/main/java/io/appium/java_client/flutter/FlutterDriver.java delete mode 100644 src/main/java/io/appium/java_client/flutter/FlutterIOSDriver.java delete mode 100644 src/main/java/io/appium/java_client/flutter/commands/CommonFlutterCommands.java delete mode 100644 src/main/java/io/appium/java_client/flutter/commands/DoubleClickOptions.java delete mode 100644 src/main/java/io/appium/java_client/flutter/commands/DragAndDropOptions.java delete mode 100644 src/main/java/io/appium/java_client/flutter/commands/FlutterCommandOptions.java delete mode 100644 src/main/java/io/appium/java_client/flutter/commands/FlutterGestureOptions.java delete mode 100644 src/main/java/io/appium/java_client/flutter/commands/LongPressOptions.java delete mode 100644 src/main/java/io/appium/java_client/flutter/commands/ScrollOptions.java delete mode 100644 src/main/java/io/appium/java_client/flutter/commands/WaitOptions.java diff --git a/src/main/java/io/appium/java_client/flutter/FlutterAndroidDriver.java b/src/main/java/io/appium/java_client/flutter/FlutterAndroidDriver.java deleted file mode 100644 index d1b3f04d1..000000000 --- a/src/main/java/io/appium/java_client/flutter/FlutterAndroidDriver.java +++ /dev/null @@ -1,134 +0,0 @@ -package io.appium.java_client.flutter; - -import io.appium.java_client.AppiumClientConfig; -import io.appium.java_client.android.AndroidDriver; -import io.appium.java_client.flutter.commands.CommonFlutterCommands; -import io.appium.java_client.flutter.commands.DoubleClickOptions; -import io.appium.java_client.flutter.commands.DragAndDropOptions; -import io.appium.java_client.flutter.commands.LongPressOptions; -import io.appium.java_client.flutter.commands.ScrollOptions; -import io.appium.java_client.flutter.commands.WaitOptions; -import io.appium.java_client.service.local.AppiumDriverLocalService; -import io.appium.java_client.service.local.AppiumServiceBuilder; -import org.openqa.selenium.Capabilities; -import org.openqa.selenium.remote.HttpCommandExecutor; -import org.openqa.selenium.remote.http.ClientConfig; -import org.openqa.selenium.remote.http.HttpClient; - -import java.net.URL; - -/** - * Custom AndroidDriver implementation with additional Flutter-specific capabilities. - */ -public class FlutterAndroidDriver extends AndroidDriver implements FlutterDriver { - - public FlutterAndroidDriver(HttpCommandExecutor executor, Capabilities capabilities) { - super(executor, capabilities); - } - - public FlutterAndroidDriver(URL remoteAddress, Capabilities capabilities) { - super(remoteAddress, capabilities); - } - - public FlutterAndroidDriver(URL remoteAddress, HttpClient.Factory httpClientFactory, Capabilities capabilities) { - super(remoteAddress, httpClientFactory, capabilities); - } - - public FlutterAndroidDriver(AppiumDriverLocalService service, Capabilities capabilities) { - super(service, capabilities); - } - - public FlutterAndroidDriver( - AppiumDriverLocalService service, HttpClient.Factory httpClientFactory, Capabilities capabilities) { - super(service, httpClientFactory, capabilities); - } - - public FlutterAndroidDriver(AppiumServiceBuilder builder, Capabilities capabilities) { - super(builder, capabilities); - } - - public FlutterAndroidDriver( - AppiumServiceBuilder builder, HttpClient.Factory httpClientFactory, Capabilities capabilities) { - super(builder, httpClientFactory, capabilities); - } - - public FlutterAndroidDriver(HttpClient.Factory httpClientFactory, Capabilities capabilities) { - super(httpClientFactory, capabilities); - } - - public FlutterAndroidDriver(ClientConfig clientConfig, Capabilities capabilities) { - super(clientConfig, capabilities); - } - - public FlutterAndroidDriver(AppiumClientConfig appiumClientConfig, Capabilities capabilities) { - super(appiumClientConfig, capabilities); - } - - public FlutterAndroidDriver(Capabilities capabilities) { - super(capabilities); - } - - public FlutterAndroidDriver(URL remoteSessionAddress, String automationName) { - super(remoteSessionAddress, automationName); - } - - /** - * Waits for an element to become visible on the Flutter application. - * - * @param option WaitOptions specifying the element and optional timeout. - */ - @Override - public void waitForVisible(WaitOptions option) { - CommonFlutterCommands.waitForVisible(this, option); - } - - /** - * Waits for an element to become invisible on the Flutter application. - * - * @param option WaitOptions specifying the element and optional timeout. - */ - @Override - public void waitForInVisible(WaitOptions option) { - CommonFlutterCommands.waitForInVisible(this, option); - } - - /** - * Scrolls to make an element visible on the Flutter application. - * - * @param option ScrollOptions specifying the finder and scroll direction. - */ - @Override - public void scrollTillVisible(ScrollOptions option) { - CommonFlutterCommands.scrollTillVisible(this, option); - } - - /** - * Performs a double click on an element in the Flutter application. - * - * @param option DoubleClickOptions specifying the element to double-click. - */ - @Override - public void performDoubleClick(DoubleClickOptions option) { - CommonFlutterCommands.performDoubleClick(this, option); - } - - /** - * Performs a long press on an element in the Flutter application. - * - * @param option LongPressOptions specifying the element to long-press. - */ - @Override - public void performLongPress(LongPressOptions option) { - CommonFlutterCommands.performLongPress(this, option); - } - - /** - * Performs a drag-and-drop operation between two elements in the Flutter application. - * - * @param option DragAndDropOptions specifying the source and target elements for the drag-and-drop operation. - */ - @Override - public void performDragAndDrop(DragAndDropOptions option) { - CommonFlutterCommands.performDragAndDrop(this, option); - } -} diff --git a/src/main/java/io/appium/java_client/flutter/FlutterDriver.java b/src/main/java/io/appium/java_client/flutter/FlutterDriver.java deleted file mode 100644 index 999839014..000000000 --- a/src/main/java/io/appium/java_client/flutter/FlutterDriver.java +++ /dev/null @@ -1,22 +0,0 @@ -package io.appium.java_client.flutter; - - -import io.appium.java_client.flutter.commands.DoubleClickOptions; -import io.appium.java_client.flutter.commands.DragAndDropOptions; -import io.appium.java_client.flutter.commands.LongPressOptions; -import io.appium.java_client.flutter.commands.ScrollOptions; -import io.appium.java_client.flutter.commands.WaitOptions; - -public interface FlutterDriver { - void waitForVisible(WaitOptions option); - - void waitForInVisible(WaitOptions option); - - void scrollTillVisible(ScrollOptions option); - - void performDoubleClick(DoubleClickOptions option); - - void performLongPress(LongPressOptions option); - - void performDragAndDrop(DragAndDropOptions option); -} diff --git a/src/main/java/io/appium/java_client/flutter/FlutterIOSDriver.java b/src/main/java/io/appium/java_client/flutter/FlutterIOSDriver.java deleted file mode 100644 index d76d81bbc..000000000 --- a/src/main/java/io/appium/java_client/flutter/FlutterIOSDriver.java +++ /dev/null @@ -1,133 +0,0 @@ -package io.appium.java_client.flutter; - -import io.appium.java_client.AppiumClientConfig; -import io.appium.java_client.flutter.commands.CommonFlutterCommands; -import io.appium.java_client.flutter.commands.DoubleClickOptions; -import io.appium.java_client.flutter.commands.DragAndDropOptions; -import io.appium.java_client.flutter.commands.LongPressOptions; -import io.appium.java_client.flutter.commands.ScrollOptions; -import io.appium.java_client.flutter.commands.WaitOptions; -import io.appium.java_client.ios.IOSDriver; -import io.appium.java_client.service.local.AppiumDriverLocalService; -import io.appium.java_client.service.local.AppiumServiceBuilder; -import org.openqa.selenium.Capabilities; -import org.openqa.selenium.remote.HttpCommandExecutor; -import org.openqa.selenium.remote.http.ClientConfig; -import org.openqa.selenium.remote.http.HttpClient; - -import java.net.URL; - -/** - * Custom AndroidDriver implementation with additional Flutter-specific capabilities. - */ -public class FlutterIOSDriver extends IOSDriver implements FlutterDriver { - - public FlutterIOSDriver(HttpCommandExecutor executor, Capabilities capabilities) { - super(executor, capabilities); - } - - public FlutterIOSDriver(URL remoteAddress, Capabilities capabilities) { - super(remoteAddress, capabilities); - } - - public FlutterIOSDriver(URL remoteAddress, HttpClient.Factory httpClientFactory, Capabilities capabilities) { - super(remoteAddress, httpClientFactory, capabilities); - } - - public FlutterIOSDriver(AppiumDriverLocalService service, Capabilities capabilities) { - super(service, capabilities); - } - - public FlutterIOSDriver( - AppiumDriverLocalService service, HttpClient.Factory httpClientFactory, Capabilities capabilities) { - super(service, httpClientFactory, capabilities); - } - - public FlutterIOSDriver(AppiumServiceBuilder builder, Capabilities capabilities) { - super(builder, capabilities); - } - - public FlutterIOSDriver( - AppiumServiceBuilder builder, HttpClient.Factory httpClientFactory, Capabilities capabilities) { - super(builder, httpClientFactory, capabilities); - } - - public FlutterIOSDriver(HttpClient.Factory httpClientFactory, Capabilities capabilities) { - super(httpClientFactory, capabilities); - } - - public FlutterIOSDriver(ClientConfig clientConfig, Capabilities capabilities) { - super(clientConfig, capabilities); - } - - public FlutterIOSDriver(AppiumClientConfig appiumClientConfig, Capabilities capabilities) { - super(appiumClientConfig, capabilities); - } - - public FlutterIOSDriver(URL remoteSessionAddress) { - super(remoteSessionAddress); - } - - public FlutterIOSDriver(Capabilities capabilities) { - super(capabilities); - } - - /** - * Waits for an element to become visible on the Flutter application. - * - * @param option WaitOptions specifying the element and optional timeout. - */ - public void waitForVisible(WaitOptions option) { - CommonFlutterCommands.waitForVisible(this, option); - } - - /** - * Waits for an element to become invisible on the Flutter application. - * - * @param option WaitOptions specifying the element and optional timeout. - */ - @Override - public void waitForInVisible(WaitOptions option) { - CommonFlutterCommands.waitForInVisible(this, option); - } - - /** - * Scrolls to make an element visible on the Flutter application. - * - * @param option ScrollOptions specifying the finder and scroll direction. - */ - @Override - public void scrollTillVisible(ScrollOptions option) { - CommonFlutterCommands.scrollTillVisible(this, option); - } - - /** - * Performs a double click on an element in the Flutter application. - * - * @param option DoubleClickOptions specifying the element to double-click. - */ - @Override - public void performDoubleClick(DoubleClickOptions option) { - CommonFlutterCommands.performDoubleClick(this, option); - } - - /** - * Performs a long press on an element in the Flutter application. - * - * @param option LongPressOptions specifying the element to long-press. - */ - @Override - public void performLongPress(LongPressOptions option) { - CommonFlutterCommands.performLongPress(this, option); - } - - /** - * Performs a drag-and-drop operation between two elements in the Flutter application. - * - * @param option DragAndDropOptions specifying the source and target elements for the drag-and-drop operation. - */ - @Override - public void performDragAndDrop(DragAndDropOptions option) { - CommonFlutterCommands.performDragAndDrop(this, option); - } -} diff --git a/src/main/java/io/appium/java_client/flutter/commands/CommonFlutterCommands.java b/src/main/java/io/appium/java_client/flutter/commands/CommonFlutterCommands.java deleted file mode 100644 index 95c51c827..000000000 --- a/src/main/java/io/appium/java_client/flutter/commands/CommonFlutterCommands.java +++ /dev/null @@ -1,93 +0,0 @@ -package io.appium.java_client.flutter.commands; - -import io.appium.java_client.flutter.FlutterDriver; -import org.openqa.selenium.JavascriptExecutor; -import org.openqa.selenium.WebElement; - -public class CommonFlutterCommands { - - private static final String FLUTTER_COMMAND_PREFIX = "flutter"; - private static final String WAIT_FOR_VISIBLE_COMMAND = "waitForVisible"; - private static final String WAIT_FOR_INVISIBLE_COMMAND = "waitForAbsent"; - private static final String SCROLL_TILL_VISIBLE = "scrollTillVisible"; - private static final String DOUBLE_CLICK = "doubleClick"; - private static final String LONG_PRESS = "longPress"; - private static final String DRAG_AND_DROP = "dragAndDrop"; - - private CommonFlutterCommands() { - } - - /** - * Waits for an element to become visible on the Flutter application. - * - * @param driver WebDriver instance to execute the command on. - * @param option WaitOptions specifying the element and optional timeout. - */ - public static void waitForVisible(FlutterDriver driver, WaitOptions option) { - executeScript(driver, WAIT_FOR_VISIBLE_COMMAND, option); - } - - /** - * Waits for an element to become invisible on the Flutter application. - * - * @param driver WebDriver instance to execute the command on. - * @param option WaitOptions specifying the element and optional timeout. - */ - public static void waitForInVisible(FlutterDriver driver, WaitOptions option) { - executeScript(driver, WAIT_FOR_INVISIBLE_COMMAND, option); - } - - /** - * Scrolls to make an element visible on the Flutter application. - * - * @param driver WebDriver instance to execute the command on. - * @param option ScrollOptions specifying the finder and scroll direction. - * @return WebElement that was scrolled to and made visible. - */ - public static WebElement scrollTillVisible(FlutterDriver driver, ScrollOptions option) { - return (WebElement) executeScript(driver, SCROLL_TILL_VISIBLE, option); - } - - /** - * Performs a double click on an element in the Flutter application. - * - * @param driver WebDriver instance to execute the command on. - * @param option DoubleClickOptions specifying the element to double-click. - */ - public static void performDoubleClick(FlutterDriver driver, DoubleClickOptions option) { - executeScript(driver, DOUBLE_CLICK, option); - } - - /** - * Performs a long press on an element in the Flutter application. - * - * @param driver WebDriver instance to execute the command on. - * @param option LongPressOptions specifying the element to long-press. - */ - public static void performLongPress(FlutterDriver driver, LongPressOptions option) { - executeScript(driver, LONG_PRESS, option); - } - - /** - * Performs a drag-and-drop operation between two elements in the Flutter application. - * - * @param driver WebDriver instance to execute the command on. - * @param option DragAndDropOptions specifying the source and target elements for the drag-and-drop operation. - */ - public static void performDragAndDrop(FlutterDriver driver, DragAndDropOptions option) { - executeScript(driver, DRAG_AND_DROP, option); - } - - /** - * Executes a Flutter command using JavaScriptExecutor. - * - * @param driver WebDriver instance to execute the command on. - * @param scriptName Name of the Flutter command script. - * @param args FlutterCommandOptions containing the command arguments. - * @return Object returned by the JavaScript execution. - */ - public static Object executeScript(FlutterDriver driver, String scriptName, FlutterCommandOptions args) { - String commandName = String.format("%s: %s", FLUTTER_COMMAND_PREFIX, scriptName); - return ((JavascriptExecutor) driver).executeScript(commandName, args.toJson()); - } -} diff --git a/src/main/java/io/appium/java_client/flutter/commands/DoubleClickOptions.java b/src/main/java/io/appium/java_client/flutter/commands/DoubleClickOptions.java deleted file mode 100644 index 809e831f1..000000000 --- a/src/main/java/io/appium/java_client/flutter/commands/DoubleClickOptions.java +++ /dev/null @@ -1,5 +0,0 @@ -package io.appium.java_client.flutter.commands; - -public class DoubleClickOptions extends FlutterGestureOptions { - -} diff --git a/src/main/java/io/appium/java_client/flutter/commands/DragAndDropOptions.java b/src/main/java/io/appium/java_client/flutter/commands/DragAndDropOptions.java deleted file mode 100644 index aecd55238..000000000 --- a/src/main/java/io/appium/java_client/flutter/commands/DragAndDropOptions.java +++ /dev/null @@ -1,27 +0,0 @@ -package io.appium.java_client.flutter.commands; - -import lombok.AllArgsConstructor; -import lombok.Getter; -import lombok.NonNull; -import lombok.experimental.Accessors; -import org.openqa.selenium.WebElement; - -import java.util.Map; - -@Accessors(chain = true) -@Getter -@AllArgsConstructor -public class DragAndDropOptions implements FlutterCommandOptions { - @NonNull - WebElement source; - @NonNull - WebElement target; - - private DragAndDropOptions() { - } - - @Override - public Map toJson() { - return Map.of("source", source, "target", target); - } -} diff --git a/src/main/java/io/appium/java_client/flutter/commands/FlutterCommandOptions.java b/src/main/java/io/appium/java_client/flutter/commands/FlutterCommandOptions.java deleted file mode 100644 index c4c77885b..000000000 --- a/src/main/java/io/appium/java_client/flutter/commands/FlutterCommandOptions.java +++ /dev/null @@ -1,7 +0,0 @@ -package io.appium.java_client.flutter.commands; - -import java.util.Map; - -public interface FlutterCommandOptions { - Map toJson(); -} diff --git a/src/main/java/io/appium/java_client/flutter/commands/FlutterGestureOptions.java b/src/main/java/io/appium/java_client/flutter/commands/FlutterGestureOptions.java deleted file mode 100644 index b4ea5205b..000000000 --- a/src/main/java/io/appium/java_client/flutter/commands/FlutterGestureOptions.java +++ /dev/null @@ -1,29 +0,0 @@ -package io.appium.java_client.flutter.commands; - -import lombok.Getter; -import lombok.Setter; -import lombok.experimental.Accessors; -import org.openqa.selenium.Point; -import org.openqa.selenium.WebElement; - -import java.util.Collections; -import java.util.HashMap; -import java.util.Map; - -@Accessors(chain = true) -@Getter -@Setter -public class FlutterGestureOptions implements FlutterCommandOptions { - WebElement element; - Point point; - - @Override - public Map toJson() { - Map args = new HashMap<>(); - args.put("origin", element); - if (point != null) { - args.put("offset", Map.of("x", point.getX(), "y", point.getY())); - } - return Collections.unmodifiableMap(args); - } -} diff --git a/src/main/java/io/appium/java_client/flutter/commands/LongPressOptions.java b/src/main/java/io/appium/java_client/flutter/commands/LongPressOptions.java deleted file mode 100644 index 798054fa9..000000000 --- a/src/main/java/io/appium/java_client/flutter/commands/LongPressOptions.java +++ /dev/null @@ -1,13 +0,0 @@ -package io.appium.java_client.flutter.commands; - -import lombok.Getter; -import lombok.Setter; -import lombok.experimental.Accessors; - - -@Accessors(chain = true) -@Setter -@Getter -public class LongPressOptions extends FlutterGestureOptions { - -} diff --git a/src/main/java/io/appium/java_client/flutter/commands/ScrollOptions.java b/src/main/java/io/appium/java_client/flutter/commands/ScrollOptions.java deleted file mode 100644 index 1667d721a..000000000 --- a/src/main/java/io/appium/java_client/flutter/commands/ScrollOptions.java +++ /dev/null @@ -1,66 +0,0 @@ -package io.appium.java_client.flutter.commands; - -import com.google.common.base.Preconditions; -import io.appium.java_client.AppiumBy; -import lombok.Getter; -import lombok.NonNull; -import lombok.Setter; -import lombok.experimental.Accessors; -import org.openqa.selenium.WebElement; - -import java.time.Duration; -import java.util.Map; -import java.util.Optional; - -import static com.google.common.base.Strings.isNullOrEmpty; - -@Accessors(chain = true) -@Getter -@Setter -public class ScrollOptions implements FlutterCommandOptions { - AppiumBy.FlutterBy scrollTo; - WebElement scrollView; - ScrollDirection scrollDirection; - Integer delta; - Integer maxScrolls; - Integer settleBetweenScrollsTimeout; - Duration dragDuration; - - private ScrollOptions() { - } - - public ScrollOptions(AppiumBy.FlutterBy scrollTo, ScrollDirection scrollDirection) { - Preconditions.checkArgument(scrollTo != null, "Must supply a valid locator for scrollTo"); - this.scrollTo = scrollTo; - this.scrollDirection = scrollDirection; - } - - @Override - public Map toJson() { - return Map.of( - "finder", scrollTo.toJson(), - "scrollView", scrollView, - "delta", delta, - "maxScrolls", maxScrolls, - "settleBetweenScrollsTimeout", settleBetweenScrollsTimeout, - "scrollDirection", Optional.ofNullable(scrollDirection) - .orElse(ScrollDirection.UP).getDirection(), - "dragDuration", Optional.ofNullable(dragDuration) - .orElse(Duration.ZERO).getSeconds() - ); - } - - @Getter - public static enum ScrollDirection { - UP("up"), - RIGHT("right"), - DOWN("down"), - LEFT("left"); - - private final String direction; - - ScrollDirection(String direction) { - this.direction = direction; - } - } -} diff --git a/src/main/java/io/appium/java_client/flutter/commands/WaitOptions.java b/src/main/java/io/appium/java_client/flutter/commands/WaitOptions.java deleted file mode 100644 index a3aaa3cd5..000000000 --- a/src/main/java/io/appium/java_client/flutter/commands/WaitOptions.java +++ /dev/null @@ -1,34 +0,0 @@ -package io.appium.java_client.flutter.commands; - -import io.appium.java_client.AppiumBy; -import lombok.Getter; -import lombok.Setter; -import lombok.experimental.Accessors; -import org.openqa.selenium.WebElement; - -import java.time.Duration; -import java.util.Collections; -import java.util.HashMap; -import java.util.Map; - -@Accessors(chain = true) -@Getter -@Setter -public class WaitOptions implements FlutterCommandOptions { - private WebElement element; - private AppiumBy.FlutterBy locator; - private Duration timeout; - - @Override - public Map toJson() { - Map args = new HashMap<>(); - args.put("element", element); - if (locator != null) { - args.put("locator", locator.toJson()); - } - if (timeout != null) { - args.put("timeout", timeout.getSeconds()); - } - return Collections.unmodifiableMap(args); - } -}