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));
         }