From 5532d0024b0b4015831f19fdaa064671683039b5 Mon Sep 17 00:00:00 2001 From: MummanaSubramanya Date: Thu, 29 Aug 2024 10:52:05 +0200 Subject: [PATCH 1/2] fix: scroll issue in flutter integration driver --- .../java_client/android/CommandTest.java | 31 ++++++++++++++++--- .../flutter/commands/ScrollParameter.java | 9 +++--- 2 files changed, 30 insertions(+), 10 deletions(-) diff --git a/src/e2eFlutterTest/java/io/appium/java_client/android/CommandTest.java b/src/e2eFlutterTest/java/io/appium/java_client/android/CommandTest.java index d8f587e52..4a9b31c6f 100644 --- a/src/e2eFlutterTest/java/io/appium/java_client/android/CommandTest.java +++ b/src/e2eFlutterTest/java/io/appium/java_client/android/CommandTest.java @@ -12,7 +12,9 @@ import org.openqa.selenium.WebElement; import java.io.IOException; +import java.time.Duration; +import static java.lang.Boolean.parseBoolean; import static org.junit.jupiter.api.Assertions.assertEquals; import static org.junit.jupiter.api.Assertions.assertFalse; import static org.junit.jupiter.api.Assertions.assertTrue; @@ -52,18 +54,37 @@ void testScrollTillVisibleCommand() { openScreen("Vertical Swiping"); WebElement firstElement = driver.scrollTillVisible(new ScrollParameter(AppiumBy.flutterText("Java"))); - assertTrue(Boolean.parseBoolean(firstElement.getAttribute("displayed"))); + assertTrue(parseBoolean(firstElement.getAttribute("displayed"))); WebElement lastElement = driver.scrollTillVisible(new ScrollParameter(AppiumBy.flutterText("Protractor"))); - assertTrue(Boolean.parseBoolean(lastElement.getAttribute("displayed"))); - assertFalse(Boolean.parseBoolean(firstElement.getAttribute("displayed"))); + assertTrue(parseBoolean(lastElement.getAttribute("displayed"))); + assertFalse(parseBoolean(firstElement.getAttribute("displayed"))); firstElement = driver.scrollTillVisible( new ScrollParameter(AppiumBy.flutterText("Java"), ScrollParameter.ScrollDirection.UP) ); - assertTrue(Boolean.parseBoolean(firstElement.getAttribute("displayed"))); - assertFalse(Boolean.parseBoolean(lastElement.getAttribute("displayed"))); + assertTrue(parseBoolean(firstElement.getAttribute("displayed"))); + assertFalse(parseBoolean(lastElement.getAttribute("displayed"))); + } + + @Test + void testScrollTillVisibleWithScrollParametersCommand() { + WebElement loginButton = driver.findElement(BaseFlutterTest.LOGIN_BUTTON); + loginButton.click(); + openScreen("Vertical Swiping"); + + ScrollParameter scrollParameter = new ScrollParameter(AppiumBy.flutterText("Protractor")); + scrollParameter + .setScrollView(AppiumBy.flutterType("Scrollable")) + .setMaxScrolls(30) + .setDelta(30) + // Drag duration currently works when the value is greater than 34 secs + .setDragDuration(Duration.ofMillis(35000)) + .setSettleBetweenScrollsTimeout(10); + + WebElement element = driver.scrollTillVisible(scrollParameter); + assertTrue(parseBoolean(element.getAttribute("displayed"))); } @Test diff --git a/src/main/java/io/appium/java_client/flutter/commands/ScrollParameter.java b/src/main/java/io/appium/java_client/flutter/commands/ScrollParameter.java index 773ece810..d2a2674c7 100644 --- a/src/main/java/io/appium/java_client/flutter/commands/ScrollParameter.java +++ b/src/main/java/io/appium/java_client/flutter/commands/ScrollParameter.java @@ -4,7 +4,6 @@ import lombok.Getter; import lombok.Setter; import lombok.experimental.Accessors; -import org.openqa.selenium.WebElement; import org.openqa.selenium.internal.Require; import java.time.Duration; @@ -18,7 +17,7 @@ @Setter public class ScrollParameter extends FlutterCommandParameter { private AppiumBy.FlutterBy scrollTo; - private WebElement scrollView; + private AppiumBy.FlutterBy scrollView; private ScrollDirection scrollDirection; private Integer delta; private Integer maxScrolls; @@ -56,13 +55,13 @@ public Map toJson() { params.put("finder", parseFlutterLocator(scrollTo)); Optional.ofNullable(scrollView) - .ifPresent(scrollView -> params.put("scrollView", scrollView)); + .ifPresent(scrollView -> params.put("scrollView", parseFlutterLocator(scrollView))); Optional.ofNullable(delta) .ifPresent(delta -> params.put("delta", delta)); Optional.ofNullable(maxScrolls) - .ifPresent(maxScrolls -> params.put("delta", maxScrolls)); + .ifPresent(maxScrolls -> params.put("maxScrolls", maxScrolls)); Optional.ofNullable(settleBetweenScrollsTimeout) - .ifPresent(timeout -> params.put("delta", settleBetweenScrollsTimeout)); + .ifPresent(timeout -> params.put("settleBetweenScrollsTimeout", settleBetweenScrollsTimeout)); Optional.ofNullable(scrollDirection) .ifPresent(direction -> params.put("scrollDirection", direction.getDirection())); Optional.ofNullable(dragDuration) From fa015291ca02487dcf61d4a58c764b2f17f23f33 Mon Sep 17 00:00:00 2001 From: MummanaSubramanya Date: Thu, 29 Aug 2024 15:47:00 +0200 Subject: [PATCH 2/2] fix iOS test --- .../java/io/appium/java_client/android/CommandTest.java | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/e2eFlutterTest/java/io/appium/java_client/android/CommandTest.java b/src/e2eFlutterTest/java/io/appium/java_client/android/CommandTest.java index 4a9b31c6f..0f056e51a 100644 --- a/src/e2eFlutterTest/java/io/appium/java_client/android/CommandTest.java +++ b/src/e2eFlutterTest/java/io/appium/java_client/android/CommandTest.java @@ -74,14 +74,14 @@ void testScrollTillVisibleWithScrollParametersCommand() { loginButton.click(); openScreen("Vertical Swiping"); - ScrollParameter scrollParameter = new ScrollParameter(AppiumBy.flutterText("Protractor")); + ScrollParameter scrollParameter = new ScrollParameter(AppiumBy.flutterText("Playwright")); scrollParameter .setScrollView(AppiumBy.flutterType("Scrollable")) .setMaxScrolls(30) .setDelta(30) - // Drag duration currently works when the value is greater than 34 secs + // Drag duration currently works when the value is greater than 33 secs .setDragDuration(Duration.ofMillis(35000)) - .setSettleBetweenScrollsTimeout(10); + .setSettleBetweenScrollsTimeout(5000); WebElement element = driver.scrollTillVisible(scrollParameter); assertTrue(parseBoolean(element.getAttribute("displayed")));