e2e subscribeTo tests

pull/73/head
pabloFuente 2018-05-16 14:04:01 +02:00
parent 705e7a4e82
commit 194f6fd3ce
2 changed files with 121 additions and 94 deletions

View File

@ -205,15 +205,17 @@ public class OpenViduEventManager {
} }
private boolean hasAudioTracks(WebElement videoElement) { private boolean hasAudioTracks(WebElement videoElement) {
long numberAudioTracks = (long) ((JavascriptExecutor) driver).executeScript( boolean audioTracks = (boolean) ((JavascriptExecutor) driver).executeScript(
"return $('#" + videoElement.getAttribute("id") + "').prop('srcObject').getAudioTracks().length;"); "return ($('#" + videoElement.getAttribute("id") + "').prop('srcObject').getAudioTracks().length > 0)"
return (numberAudioTracks > 0); + "&& ($('#" + videoElement.getAttribute("id") + "').prop('srcObject').getAudioTracks()[0].enabled)");
return audioTracks;
} }
private boolean hasVideoTracks(WebElement videoElement) { private boolean hasVideoTracks(WebElement videoElement) {
long numberAudioTracks = (long) ((JavascriptExecutor) driver).executeScript( boolean videoTracks = (boolean) ((JavascriptExecutor) driver).executeScript(
"return $('#" + videoElement.getAttribute("id") + "').prop('srcObject').getVideoTracks().length;"); "return ($('#" + videoElement.getAttribute("id") + "').prop('srcObject').getVideoTracks().length > 0)"
return (numberAudioTracks > 0); + "&& ($('#" + videoElement.getAttribute("id") + "').prop('srcObject').getVideoTracks()[0].enabled)");
return videoTracks;
} }
} }

View File

@ -23,6 +23,7 @@ import static org.openqa.selenium.OutputType.BASE64;
import org.slf4j.Logger; import org.slf4j.Logger;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Arrays;
import java.util.Iterator; import java.util.Iterator;
import java.util.List; import java.util.List;
@ -97,14 +98,14 @@ public class OpenViduTestAppE2eTest {
void setupBrowser(String browser) { void setupBrowser(String browser) {
switch (browser) { switch (browser) {
case "chrome": case "chrome":
this.user = new ChromeUser("TestUser", 50); this.user = new ChromeUser("TestUser", 50);
break; break;
case "firefox": case "firefox":
this.user = new FirefoxUser("TestUser", 50); this.user = new FirefoxUser("TestUser", 50);
break; break;
default: default:
this.user = new ChromeUser("TestUser", 50); this.user = new ChromeUser("TestUser", 50);
} }
user.getDriver().get(APP_URL); user.getDriver().get(APP_URL);
@ -570,6 +571,8 @@ public class OpenViduTestAppE2eTest {
Assert.assertTrue(user.getEventManager().assertMediaTracks(user.getDriver().findElements(By.tagName("video")), Assert.assertTrue(user.getEventManager().assertMediaTracks(user.getDriver().findElements(By.tagName("video")),
true, true)); true, true));
// Global unsubscribe-subscribe
user.getDriver().findElements(By.className(("sub-btn"))).get(0).click(); user.getDriver().findElements(By.className(("sub-btn"))).get(0).click();
user.getWaiter().until(ExpectedConditions.numberOfElementsToBe(By.tagName("video"), 1)); user.getWaiter().until(ExpectedConditions.numberOfElementsToBe(By.tagName("video"), 1));
user.getDriver().findElements(By.className(("sub-btn"))).get(0).click(); user.getDriver().findElements(By.className(("sub-btn"))).get(0).click();
@ -579,6 +582,26 @@ public class OpenViduTestAppE2eTest {
Assert.assertTrue(user.getEventManager().assertMediaTracks(user.getDriver().findElements(By.tagName("video")), Assert.assertTrue(user.getEventManager().assertMediaTracks(user.getDriver().findElements(By.tagName("video")),
true, true)); true, true));
// Video unsubscribe
Iterable<WebElement> firstVideo = Arrays.asList(user.getDriver().findElements(By.tagName("video")).get(0));
user.getDriver().findElements(By.className(("sub-video-btn"))).get(0).click();
Thread.sleep(1000);
Assert.assertTrue(user.getEventManager().assertMediaTracks(firstVideo, true, false));
// Audio unsubscribe
user.getDriver().findElements(By.className(("sub-audio-btn"))).get(0).click();
Thread.sleep(1000);
Assert.assertTrue(user.getEventManager().assertMediaTracks(firstVideo, false, false));
// Video and audio subscribe
user.getDriver().findElements(By.className(("sub-video-btn"))).get(0).click();
user.getDriver().findElements(By.className(("sub-audio-btn"))).get(0).click();
Thread.sleep(1000);
Assert.assertTrue(user.getEventManager().assertMediaTracks(firstVideo, true, true));
gracefullyLeaveParticipants(2); gracefullyLeaveParticipants(2);
} }
@ -638,8 +661,8 @@ public class OpenViduTestAppE2eTest {
user.getDriver().findElement(By.id("auto-join-checkbox")).click(); user.getDriver().findElement(By.id("auto-join-checkbox")).click();
// First publication (audio + video [CAMERA]) // First publication (audio + video [CAMERA])
user.getEventManager().on("videoPlaying", (event)-> { user.getEventManager().on("videoPlaying", (event) -> {
listOfThreadAssertions.add(((String)event.get("eventContent")).contains("CAMERA")); listOfThreadAssertions.add(((String) event.get("eventContent")).contains("CAMERA"));
}); });
user.getDriver().findElement(By.id("one2many-btn")).click(); user.getDriver().findElement(By.id("one2many-btn")).click();
user.getEventManager().waitUntilEventReaches("videoPlaying", 2); user.getEventManager().waitUntilEventReaches("videoPlaying", 2);
@ -653,8 +676,8 @@ public class OpenViduTestAppE2eTest {
true, true)); true, true));
// Second publication (only video (SCREEN)) // Second publication (only video (SCREEN))
user.getEventManager().on("videoPlaying", (event)-> { user.getEventManager().on("videoPlaying", (event) -> {
listOfThreadAssertions.add(((String)event.get("eventContent")).contains("SCREEN")); listOfThreadAssertions.add(((String) event.get("eventContent")).contains("SCREEN"));
}); });
user.getDriver().findElements(By.className("change-publisher-btn")).get(0).click(); user.getDriver().findElements(By.className("change-publisher-btn")).get(0).click();
user.getEventManager().waitUntilEventReaches("videoPlaying", 4); user.getEventManager().waitUntilEventReaches("videoPlaying", 4);
@ -668,8 +691,8 @@ public class OpenViduTestAppE2eTest {
false, true)); false, true));
// Third publication (audio + video [CAMERA]) // Third publication (audio + video [CAMERA])
user.getEventManager().on("videoPlaying", (event)-> { user.getEventManager().on("videoPlaying", (event) -> {
listOfThreadAssertions.add(((String)event.get("eventContent")).contains("CAMERA")); listOfThreadAssertions.add(((String) event.get("eventContent")).contains("CAMERA"));
}); });
user.getDriver().findElements(By.className("change-publisher-btn")).get(0).click(); user.getDriver().findElements(By.className("change-publisher-btn")).get(0).click();
user.getEventManager().waitUntilEventReaches("videoPlaying", 6); user.getEventManager().waitUntilEventReaches("videoPlaying", 6);
@ -691,7 +714,9 @@ public class OpenViduTestAppE2eTest {
for (int j = 1; j <= numberOfParticipants; j++) { for (int j = 1; j <= numberOfParticipants; j++) {
user.getDriver().findElement(By.id("remove-user-btn")).sendKeys(Keys.ENTER); user.getDriver().findElement(By.id("remove-user-btn")).sendKeys(Keys.ENTER);
user.getEventManager().waitUntilEventReaches("sessionDisconnected", j); user.getEventManager().waitUntilEventReaches("sessionDisconnected", j);
accumulatedConnectionDestroyed = (j != numberOfParticipants) ? (accumulatedConnectionDestroyed + numberOfParticipants - j) : (accumulatedConnectionDestroyed); accumulatedConnectionDestroyed = (j != numberOfParticipants)
? (accumulatedConnectionDestroyed + numberOfParticipants - j)
: (accumulatedConnectionDestroyed);
user.getEventManager().waitUntilEventReaches("connectionDestroyed", accumulatedConnectionDestroyed); user.getEventManager().waitUntilEventReaches("connectionDestroyed", accumulatedConnectionDestroyed);
} }
} }