Skip to content

Commit

Permalink
fix: scroll issue in flutter integration driver
Browse files Browse the repository at this point in the history
  • Loading branch information
MummanaSubramanya committed Aug 29, 2024
1 parent b96c868 commit 5532d00
Show file tree
Hide file tree
Showing 2 changed files with 30 additions and 10 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand Down Expand Up @@ -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
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand All @@ -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;
Expand Down Expand Up @@ -56,13 +55,13 @@ public Map<String, Object> 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)
Expand Down

0 comments on commit 5532d00

Please sign in to comment.