openvidu-tesr-browsers: wait for srcObject to be defined when checking media elements

dependabot/npm_and_yarn/openvidu-testapp/elliptic-6.6.0
pabloFuente 2024-10-21 20:33:43 +02:00
parent 9f4bcc827e
commit cbc8a6b859
1 changed files with 25 additions and 0 deletions

View File

@ -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) {