openvidu-test-e2e: better wait for backdrop to disappear management

master
pabloFuente 2025-10-07 18:07:10 +02:00
parent 6534a847f8
commit b187ee9777
1 changed files with 52 additions and 8 deletions

View File

@ -650,7 +650,7 @@ public class OpenViduTestAppE2eTest extends AbstractOpenViduTestappE2eTest {
user.getDriver().findElement(By.id("trackPublish-videoCodec")).click(); user.getDriver().findElement(By.id("trackPublish-videoCodec")).click();
Thread.sleep(300); Thread.sleep(300);
user.getDriver().findElement(By.id("mat-option-" + codec.toLowerCase())).click(); user.getDriver().findElement(By.id("mat-option-" + codec.toLowerCase())).click();
user.getDriver().findElement(By.id("close-dialog-btn")).click(); this.waitForBackdropAndClick(user, "#close-dialog-btn");
Thread.sleep(300); Thread.sleep(300);
this.addSubscriber(user, false); this.addSubscriber(user, false);
@ -2570,7 +2570,7 @@ public class OpenViduTestAppE2eTest extends AbstractOpenViduTestappE2eTest {
} finally { } finally {
// Close dialog // Close dialog
user.getWaiter().until(ExpectedConditions.presenceOfElementLocated(By.cssSelector("#close-dialog-btn"))); user.getWaiter().until(ExpectedConditions.presenceOfElementLocated(By.cssSelector("#close-dialog-btn")));
user.getDriver().findElement(By.cssSelector("#close-dialog-btn")).click(); this.waitForBackdropAndClick(user, "#close-dialog-btn");
try { try {
Thread.sleep(500); Thread.sleep(500);
} catch (InterruptedException e) { } catch (InterruptedException e) {
@ -2586,7 +2586,7 @@ public class OpenViduTestAppE2eTest extends AbstractOpenViduTestappE2eTest {
// Dialog already opened // Dialog already opened
if (!user.getDriver().findElement(By.cssSelector("#subtitle")).getText().equals(videoId)) { if (!user.getDriver().findElement(By.cssSelector("#subtitle")).getText().equals(videoId)) {
// Wrong dialog // Wrong dialog
user.getDriver().findElement(By.cssSelector("#close-dialog-btn")).click(); this.waitForBackdropAndClick(user, "#close-dialog-btn");
user.getDriver().findElement(By.cssSelector("#" + videoId + " ~ .bottom-div .video-track-info")) user.getDriver().findElement(By.cssSelector("#" + videoId + " ~ .bottom-div .video-track-info"))
.click(); .click();
} }
@ -2685,29 +2685,30 @@ public class OpenViduTestAppE2eTest extends AbstractOpenViduTestappE2eTest {
Thread.sleep(300); Thread.sleep(300);
} }
user.getDriver().findElement(By.xpath("//button[contains(@title,'Room API')]")).click(); user.getDriver().findElement(By.xpath("//button[contains(@title,'Room API')]")).click();
Thread.sleep(300);
if (preset != null) { if (preset != null) {
user.getDriver().findElement(By.cssSelector("#ingress-preset-select")).click(); this.waitForBackdropAndClick(user, "#ingress-preset-select");
Thread.sleep(300); Thread.sleep(300);
user.getDriver().findElement(By.cssSelector("#mat-option-" + preset.toUpperCase())).click(); user.getDriver().findElement(By.cssSelector("#mat-option-" + preset.toUpperCase())).click();
} else { } else {
if (!simulcast) { if (!simulcast) {
user.getDriver().findElement(By.cssSelector("#ingress-simulcast")).click(); user.getDriver().findElement(By.cssSelector("#ingress-simulcast")).click();
Thread.sleep(300);
} }
user.getDriver().findElement(By.cssSelector("#ingress-video-codec-select")).click(); this.waitForBackdropAndClick(user, "#ingress-video-codec-select");
Thread.sleep(300); Thread.sleep(300);
user.getDriver().findElement(By.cssSelector("#mat-option-" + codec.toUpperCase())).click(); user.getDriver().findElement(By.cssSelector("#mat-option-" + codec.toUpperCase())).click();
} }
if (urlType != null) { if (urlType != null) {
user.getDriver().findElement(By.cssSelector("#ingress-url-type-select")).click(); this.waitForBackdropAndClick(user, "#ingress-url-type-select");
Thread.sleep(300); Thread.sleep(300);
user.getDriver().findElement(By.cssSelector("#mat-option-" + urlType.toUpperCase())).click(); user.getDriver().findElement(By.cssSelector("#mat-option-" + urlType.toUpperCase())).click();
} }
if (urlUri != null) { if (urlUri != null) {
user.getDriver().findElement(By.cssSelector("#ingress-url-uri-field")).sendKeys(urlUri); user.getDriver().findElement(By.cssSelector("#ingress-url-uri-field")).sendKeys(urlUri);
Thread.sleep(300);
} }
user.getDriver().findElement(By.cssSelector("#create-ingress-api-btn")).click(); user.getDriver().findElement(By.cssSelector("#create-ingress-api-btn")).click();
user.getDriver().findElement(By.cssSelector("#close-dialog-btn")).click(); this.waitForBackdropAndClick(user, "#close-dialog-btn");
Thread.sleep(300); Thread.sleep(300);
} }
@ -2730,4 +2731,47 @@ public class OpenViduTestAppE2eTest extends AbstractOpenViduTestappE2eTest {
} }
} }
/**
* Waits for any Material Design backdrop overlays to disappear and then clicks the element.
* This prevents ElementClickInterceptedException caused by overlay backdrops.
*/
private void waitForBackdropAndClick(OpenViduTestappUser user, String cssSelector) {
WebDriverWait wait = new WebDriverWait(user.getDriver(), Duration.ofSeconds(10));
// Wait for any existing backdrop to disappear - try multiple selectors
try {
wait.until(ExpectedConditions.invisibilityOfElementLocated(
By.cssSelector(".cdk-overlay-backdrop")));
} catch (Exception e) {
// Backdrop might not exist, continue
}
// Additional wait for transparent backdrops specifically
try {
wait.until(ExpectedConditions.invisibilityOfElementLocated(
By.cssSelector(".cdk-overlay-transparent-backdrop")));
} catch (Exception e) {
// Backdrop might not exist, continue
}
// Additional wait for showing backdrops
try {
wait.until(ExpectedConditions.invisibilityOfElementLocated(
By.cssSelector(".cdk-overlay-backdrop-showing")));
} catch (Exception e) {
// Backdrop might not exist, continue
}
// Small additional wait to ensure animations complete
try {
Thread.sleep(100);
} catch (InterruptedException e) {
e.printStackTrace();
}
// Wait for the element to be clickable
WebElement element = wait.until(ExpectedConditions.elementToBeClickable(By.cssSelector(cssSelector)));
element.click();
}
} }