Skip to content

Commit 620f6e7

Browse files
Code review fixes
1 parent 67ecf4d commit 620f6e7

File tree

7 files changed

+71
-12
lines changed

7 files changed

+71
-12
lines changed

src/e2eFlutterTest/java/io/appium/java_client/android/BaseFlutterTest.java

Lines changed: 13 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -51,18 +51,21 @@ public static void beforeClass() {
5151
public void startSession() throws MalformedURLException {
5252
FlutterDriverOptions flutterOptions = new FlutterDriverOptions()
5353
.setFlutterSystemPort(9999)
54-
.setFlutterServerLaunchTimeout(Duration.ofSeconds(10));
55-
54+
.setFlutterServerLaunchTimeout(Duration.ofSeconds(30))
55+
.setFlutterElementWaitTimeout(Duration.ofSeconds(3));
5656
if (IS_ANDROID) {
57-
UiAutomator2Options options = new UiAutomator2Options()
58-
.setApp(System.getProperty("flutterApp"))
59-
.eventTimings();
60-
driver = new FlutterAndroidDriver(service.getUrl(), options.merge(flutterOptions));
57+
driver = new FlutterAndroidDriver(service.getUrl(), flutterOptions
58+
.setUiAutomator2Options(new UiAutomator2Options()
59+
.setApp(System.getProperty("flutterApp"))
60+
.eventTimings()));
6161
} else {
62-
XCUITestOptions options = new XCUITestOptions()
63-
.setApp(System.getProperty("flutterApp"))
64-
.eventTimings();
65-
driver = new FlutterIOSDriver(service.getUrl(), options.merge(flutterOptions));
62+
driver = new FlutterIOSDriver(service.getUrl(), flutterOptions
63+
.setXCUITestOptions(new XCUITestOptions()
64+
.setApp(System.getProperty("flutterApp"))
65+
.setWdaLaunchTimeout(Duration.ofMinutes(2))
66+
.eventTimings()
67+
)
68+
);
6669
}
6770
}
6871

src/main/java/io/appium/java_client/flutter/FlutterDriverOptions.java

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,10 @@
11
package io.appium.java_client.flutter;
22

3+
import io.appium.java_client.android.options.UiAutomator2Options;
4+
import io.appium.java_client.flutter.options.SupportsFlutterElementWaitTimeoutOption;
35
import io.appium.java_client.flutter.options.SupportsFlutterServerLaunchTimeoutOption;
46
import io.appium.java_client.flutter.options.SupportsFlutterSystemPortOption;
7+
import io.appium.java_client.ios.options.XCUITestOptions;
58
import io.appium.java_client.remote.AutomationName;
69
import io.appium.java_client.remote.options.BaseOptions;
710
import org.openqa.selenium.Capabilities;
@@ -13,7 +16,8 @@
1316
*/
1417
public class FlutterDriverOptions extends BaseOptions<FlutterDriverOptions> implements
1518
SupportsFlutterSystemPortOption<FlutterDriverOptions>,
16-
SupportsFlutterServerLaunchTimeoutOption<FlutterDriverOptions> {
19+
SupportsFlutterServerLaunchTimeoutOption<FlutterDriverOptions>,
20+
SupportsFlutterElementWaitTimeoutOption<FlutterDriverOptions> {
1721

1822
public FlutterDriverOptions() {
1923
setCommonOptions();
@@ -29,6 +33,14 @@ public FlutterDriverOptions(Map<String, ?> source) {
2933
setCommonOptions();
3034
}
3135

36+
public FlutterDriverOptions setUiAutomator2Options(UiAutomator2Options uiAutomator2Options) {
37+
return merge(uiAutomator2Options);
38+
}
39+
40+
public FlutterDriverOptions setXCUITestOptions(XCUITestOptions xcuiTestOptions) {
41+
return merge(xcuiTestOptions);
42+
}
43+
3244
private void setCommonOptions() {
3345
setAutomationName(AutomationName.FLUTTER_INTEGRATION);
3446
}

src/main/java/io/appium/java_client/flutter/commands/DoubleClickParameter.java

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
package io.appium.java_client.flutter.commands;
22

33
import com.google.common.base.Preconditions;
4+
import lombok.Getter;
45
import lombok.Setter;
56
import lombok.experimental.Accessors;
67
import org.openqa.selenium.Point;
@@ -13,11 +14,12 @@
1314

1415
@Accessors(chain = true)
1516
@Setter
17+
@Getter
1618
public class DoubleClickParameter extends FlutterCommandParameter {
1719
private WebElement element;
1820
private Point offset;
1921

20-
22+
2123
@Override
2224
public Map<String, Object> toJson() {
2325
Preconditions.checkArgument(element != null || offset != null,

src/main/java/io/appium/java_client/flutter/commands/DragAndDropParameter.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,14 @@
11
package io.appium.java_client.flutter.commands;
22

33
import com.google.common.base.Preconditions;
4+
import lombok.Getter;
45
import lombok.experimental.Accessors;
56
import org.openqa.selenium.WebElement;
67

78
import java.util.Map;
89

910
@Accessors(chain = true)
11+
@Getter
1012
public class DragAndDropParameter extends FlutterCommandParameter {
1113
private final WebElement source;
1214
private final WebElement target;

src/main/java/io/appium/java_client/flutter/commands/LongPressParameter.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
package io.appium.java_client.flutter.commands;
22

33
import com.google.common.base.Preconditions;
4+
import lombok.Getter;
45
import lombok.Setter;
56
import lombok.experimental.Accessors;
67
import org.openqa.selenium.Point;
@@ -13,6 +14,7 @@
1314

1415
@Accessors(chain = true)
1516
@Setter
17+
@Getter
1618
public class LongPressParameter extends FlutterCommandParameter {
1719
private WebElement element;
1820
private Point offset;

src/main/java/io/appium/java_client/flutter/commands/ScrollParameter.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@
1515

1616
@Accessors(chain = true)
1717
@Setter
18+
@Getter
1819
public class ScrollParameter extends FlutterCommandParameter {
1920
private AppiumBy.FlutterBy scrollTo;
2021
private WebElement scrollView;
Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
1+
package io.appium.java_client.flutter.options;
2+
3+
import io.appium.java_client.internal.CapabilityHelpers;
4+
import io.appium.java_client.remote.options.BaseOptions;
5+
import io.appium.java_client.remote.options.CanSetCapability;
6+
import org.openqa.selenium.Capabilities;
7+
8+
import java.time.Duration;
9+
import java.util.Optional;
10+
11+
public interface SupportsFlutterElementWaitTimeoutOption<T extends BaseOptions<T>> extends
12+
Capabilities, CanSetCapability<T> {
13+
String FLUTTER_ELEMENT_WAIT_TIMEOUT_OPTION = "flutterElementWaitTimeout";
14+
15+
/**
16+
* Sets the Flutter element wait timeout.
17+
* Defaults to 5 seconds.
18+
*
19+
* @param timeout The duration to wait for Flutter elements during findElement method
20+
* @return self instance for chaining.
21+
*/
22+
default T setFlutterElementWaitTimeout(Duration timeout) {
23+
return amend(FLUTTER_ELEMENT_WAIT_TIMEOUT_OPTION, timeout.toMillis());
24+
}
25+
26+
/**
27+
* Retrieves the current Flutter element wait timeout if set.
28+
*
29+
* @return An {@link Optional} containing the duration of the Flutter element wait timeout,
30+
* or empty if not set
31+
*/
32+
default Optional<Duration> getFlutterElementWaitTimeout() {
33+
return Optional.ofNullable(
34+
CapabilityHelpers.toDuration(getCapability(FLUTTER_ELEMENT_WAIT_TIMEOUT_OPTION))
35+
);
36+
}
37+
}

0 commit comments

Comments
 (0)