Skip to content

Commit

Permalink
Code review fixes
Browse files Browse the repository at this point in the history
  • Loading branch information
sudharsan-selvaraj committed Jul 23, 2024
1 parent 67ecf4d commit 620f6e7
Show file tree
Hide file tree
Showing 7 changed files with 71 additions and 12 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -51,18 +51,21 @@ public static void beforeClass() {
public void startSession() throws MalformedURLException {
FlutterDriverOptions flutterOptions = new FlutterDriverOptions()
.setFlutterSystemPort(9999)
.setFlutterServerLaunchTimeout(Duration.ofSeconds(10));

.setFlutterServerLaunchTimeout(Duration.ofSeconds(30))
.setFlutterElementWaitTimeout(Duration.ofSeconds(3));
if (IS_ANDROID) {
UiAutomator2Options options = new UiAutomator2Options()
.setApp(System.getProperty("flutterApp"))
.eventTimings();
driver = new FlutterAndroidDriver(service.getUrl(), options.merge(flutterOptions));
driver = new FlutterAndroidDriver(service.getUrl(), flutterOptions
.setUiAutomator2Options(new UiAutomator2Options()
.setApp(System.getProperty("flutterApp"))
.eventTimings()));
} else {
XCUITestOptions options = new XCUITestOptions()
.setApp(System.getProperty("flutterApp"))
.eventTimings();
driver = new FlutterIOSDriver(service.getUrl(), options.merge(flutterOptions));
driver = new FlutterIOSDriver(service.getUrl(), flutterOptions
.setXCUITestOptions(new XCUITestOptions()
.setApp(System.getProperty("flutterApp"))
.setWdaLaunchTimeout(Duration.ofMinutes(2))
.eventTimings()
)
);
}
}

Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,10 @@
package io.appium.java_client.flutter;

import io.appium.java_client.android.options.UiAutomator2Options;
import io.appium.java_client.flutter.options.SupportsFlutterElementWaitTimeoutOption;
import io.appium.java_client.flutter.options.SupportsFlutterServerLaunchTimeoutOption;
import io.appium.java_client.flutter.options.SupportsFlutterSystemPortOption;
import io.appium.java_client.ios.options.XCUITestOptions;
import io.appium.java_client.remote.AutomationName;
import io.appium.java_client.remote.options.BaseOptions;
import org.openqa.selenium.Capabilities;
Expand All @@ -13,7 +16,8 @@
*/
public class FlutterDriverOptions extends BaseOptions<FlutterDriverOptions> implements
SupportsFlutterSystemPortOption<FlutterDriverOptions>,
SupportsFlutterServerLaunchTimeoutOption<FlutterDriverOptions> {
SupportsFlutterServerLaunchTimeoutOption<FlutterDriverOptions>,
SupportsFlutterElementWaitTimeoutOption<FlutterDriverOptions> {

public FlutterDriverOptions() {
setCommonOptions();
Expand All @@ -29,6 +33,14 @@ public FlutterDriverOptions(Map<String, ?> source) {
setCommonOptions();
}

public FlutterDriverOptions setUiAutomator2Options(UiAutomator2Options uiAutomator2Options) {
return merge(uiAutomator2Options);
}

public FlutterDriverOptions setXCUITestOptions(XCUITestOptions xcuiTestOptions) {
return merge(xcuiTestOptions);
}

private void setCommonOptions() {
setAutomationName(AutomationName.FLUTTER_INTEGRATION);
}
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
package io.appium.java_client.flutter.commands;

import com.google.common.base.Preconditions;
import lombok.Getter;
import lombok.Setter;
import lombok.experimental.Accessors;
import org.openqa.selenium.Point;
Expand All @@ -13,11 +14,12 @@

@Accessors(chain = true)
@Setter
@Getter
public class DoubleClickParameter extends FlutterCommandParameter {
private WebElement element;
private Point offset;


@Override
public Map<String, Object> toJson() {
Preconditions.checkArgument(element != null || offset != null,
Expand Down
Original file line number Diff line number Diff line change
@@ -1,12 +1,14 @@
package io.appium.java_client.flutter.commands;

import com.google.common.base.Preconditions;
import lombok.Getter;
import lombok.experimental.Accessors;
import org.openqa.selenium.WebElement;

import java.util.Map;

@Accessors(chain = true)
@Getter
public class DragAndDropParameter extends FlutterCommandParameter {
private final WebElement source;
private final WebElement target;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
package io.appium.java_client.flutter.commands;

import com.google.common.base.Preconditions;
import lombok.Getter;
import lombok.Setter;
import lombok.experimental.Accessors;
import org.openqa.selenium.Point;
Expand All @@ -13,6 +14,7 @@

@Accessors(chain = true)
@Setter
@Getter
public class LongPressParameter extends FlutterCommandParameter {
private WebElement element;
private Point offset;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,7 @@

@Accessors(chain = true)
@Setter
@Getter
public class ScrollParameter extends FlutterCommandParameter {
private AppiumBy.FlutterBy scrollTo;
private WebElement scrollView;
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,37 @@
package io.appium.java_client.flutter.options;

import io.appium.java_client.internal.CapabilityHelpers;
import io.appium.java_client.remote.options.BaseOptions;
import io.appium.java_client.remote.options.CanSetCapability;
import org.openqa.selenium.Capabilities;

import java.time.Duration;
import java.util.Optional;

public interface SupportsFlutterElementWaitTimeoutOption<T extends BaseOptions<T>> extends
Capabilities, CanSetCapability<T> {
String FLUTTER_ELEMENT_WAIT_TIMEOUT_OPTION = "flutterElementWaitTimeout";

/**
* Sets the Flutter element wait timeout.
* Defaults to 5 seconds.
*
* @param timeout The duration to wait for Flutter elements during findElement method
* @return self instance for chaining.
*/
default T setFlutterElementWaitTimeout(Duration timeout) {
return amend(FLUTTER_ELEMENT_WAIT_TIMEOUT_OPTION, timeout.toMillis());
}

/**
* Retrieves the current Flutter element wait timeout if set.
*
* @return An {@link Optional} containing the duration of the Flutter element wait timeout,
* or empty if not set
*/
default Optional<Duration> getFlutterElementWaitTimeout() {
return Optional.ofNullable(
CapabilityHelpers.toDuration(getCapability(FLUTTER_ELEMENT_WAIT_TIMEOUT_OPTION))
);
}
}

0 comments on commit 620f6e7

Please sign in to comment.