diff --git a/xwiki-platform-core/xwiki-platform-test/xwiki-platform-test-ui/src/main/java/org/xwiki/test/ui/po/DrawerMenu.java b/xwiki-platform-core/xwiki-platform-test/xwiki-platform-test-ui/src/main/java/org/xwiki/test/ui/po/DrawerMenu.java index dc87b221bc64b976718e5b9dfacfec602f8dfa2b..9732fab4da9af18cc6e2e4df8b6e09955bfc34e2 100644 --- a/xwiki-platform-core/xwiki-platform-test/xwiki-platform-test-ui/src/main/java/org/xwiki/test/ui/po/DrawerMenu.java +++ b/xwiki-platform-core/xwiki-platform-test/xwiki-platform-test-ui/src/main/java/org/xwiki/test/ui/po/DrawerMenu.java @@ -19,6 +19,7 @@ */ package org.xwiki.test.ui.po; +import org.apache.commons.lang3.mutable.MutableInt; import org.openqa.selenium.By; import org.openqa.selenium.WebElement; import org.openqa.selenium.support.FindBy; @@ -52,7 +53,7 @@ public void toggle() public boolean isVisible() { - return "true".equals(this.activator.getAttribute("aria-expanded")); + return this.drawerContainer.isDisplayed(); } public boolean show() @@ -113,6 +114,14 @@ private void waitForDrawer(boolean visible) { if (visible) { getDriver().waitUntilCondition(ExpectedConditions.visibilityOf(this.drawerContainer)); + // Wait for the x position of the drawer container to be stable. + MutableInt x = new MutableInt(this.drawerContainer.getLocation().getX()); + getDriver().waitUntilCondition(driver -> { + int newX = this.drawerContainer.getLocation().getX(); + boolean isStable = newX == x.intValue(); + x.setValue(newX); + return isStable; + }); } else { getDriver().waitUntilCondition(ExpectedConditions.invisibilityOf(this.drawerContainer)); }