diff --git a/openvidu-test-browsers/src/main/java/io/openvidu/test/browsers/BrowserUser.java b/openvidu-test-browsers/src/main/java/io/openvidu/test/browsers/BrowserUser.java index 74d05b92..0fd0b261 100644 --- a/openvidu-test-browsers/src/main/java/io/openvidu/test/browsers/BrowserUser.java +++ b/openvidu-test-browsers/src/main/java/io/openvidu/test/browsers/BrowserUser.java @@ -24,6 +24,7 @@ import java.util.Iterator; import java.util.List; import java.util.Map; +import org.junit.jupiter.api.Assertions; import org.openqa.selenium.Dimension; import org.openqa.selenium.JavascriptExecutor; import org.openqa.selenium.WebDriver; @@ -144,6 +145,7 @@ public class BrowserUser { } public boolean assertAllElementsHaveTracks(String querySelector, boolean hasAudio, boolean hasVideo) { + Assertions.assertTrue(this.waitUntilAllSrcObjectsDefined(querySelector, 5000)); String calculateReturnValue = "returnValue && "; if (hasAudio) { calculateReturnValue += "el.srcObject.getAudioTracks().length === 1 && el.srcObject.getAudioTracks()[0].enabled"; @@ -162,6 +164,29 @@ public class BrowserUser { return tracks; } + private boolean waitUntilAllSrcObjectsDefined(String querySelector, int maxMsWait) { + final int sleepInterval = 50; + int maxIterations = maxMsWait / sleepInterval; + int counter = 0; + boolean defined = srcObjectDefined(querySelector); + while (!defined && counter < maxIterations) { + try { + Thread.sleep(sleepInterval); + } catch (InterruptedException e) { + } + defined = srcObjectDefined(querySelector); + counter++; + } + return defined; + } + + private boolean srcObjectDefined(String querySelector) { + String script = "return ![...document.querySelectorAll('" + querySelector + + "')].some(mediaElement => !mediaElement.srcObject);"; + boolean defined = (boolean) ((JavascriptExecutor) driver).executeScript(script); + return defined; + } + public void changeElementSize(WebElement videoElement, Integer newWidthInPixels, Integer newHeightInPixels) { String script = "var htmlelement = document.querySelector('#" + videoElement.getAttribute("id") + "');"; if (newWidthInPixels != null) {