openvidu-test-e2e extended to test signal, sub/unsub, publish/unpublish

pull/30/head
pabloFuente 2018-01-11 11:26:25 +01:00
parent 9830a87b9a
commit 450205eb50
2 changed files with 210 additions and 162 deletions

View File

@ -38,12 +38,11 @@ import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement; import org.openqa.selenium.WebElement;
import org.openqa.selenium.support.ui.WebDriverWait; import org.openqa.selenium.support.ui.WebDriverWait;
/** /**
* Manager event class for BrowserUser. Collects, cleans and stores * Manager event class for BrowserUser. Collects, cleans and stores events from
* events from openvidu-testapp * openvidu-testapp
* *
* @author Pablo Fuente (pablo.fuente@urjc.es) * @author Pablo Fuente (pablofuenteperez@gmail.com)
* @since 1.1.1 * @since 1.1.1
*/ */
public class OpenViduEventManager { public class OpenViduEventManager {
@ -89,11 +88,11 @@ public class OpenViduEventManager {
public void startPolling() { public void startPolling() {
Thread.UncaughtExceptionHandler h = new Thread.UncaughtExceptionHandler() { Thread.UncaughtExceptionHandler h = new Thread.UncaughtExceptionHandler() {
public void uncaughtException(Thread th, Throwable ex) { public void uncaughtException(Thread th, Throwable ex) {
if (ex.getClass().getSimpleName().equals("NoSuchSessionException")) { if (ex.getClass().getSimpleName().equals("NoSuchSessionException")) {
System.err.println("Disposing driver when running 'executeScript'"); System.err.println("Disposing driver when running 'executeScript'");
} }
} }
}; };
this.pollingThread = new Thread(() -> { this.pollingThread = new Thread(() -> {
@ -118,12 +117,13 @@ public class OpenViduEventManager {
this.eventCallbacks.put(eventName, new RunnableCallback(callback)); this.eventCallbacks.put(eventName, new RunnableCallback(callback));
} }
public void waitUntilNumberOfEvent(String eventName, int eventNumber) throws Exception { // 'eventNumber' is accumulative for event 'eventName' for one page while it is not refreshed
public void waitUntilEventReaches(String eventName, int eventNumber) throws Exception {
CountDownLatch eventSignal = new CountDownLatch(eventNumber); CountDownLatch eventSignal = new CountDownLatch(eventNumber);
this.setCountDown(eventName, eventSignal); this.setCountDown(eventName, eventSignal);
try { try {
if (!eventSignal.await(this.timeOfWaitInSeconds*1000, TimeUnit.MILLISECONDS)) { if (!eventSignal.await(this.timeOfWaitInSeconds * 1000, TimeUnit.MILLISECONDS)) {
throw(new TimeoutException()); throw (new TimeoutException());
} }
} catch (InterruptedException | TimeoutException e) { } catch (InterruptedException | TimeoutException e) {
e.printStackTrace(); e.printStackTrace();
@ -131,11 +131,14 @@ public class OpenViduEventManager {
} }
} }
public boolean assertMediaTracks(Iterable<WebElement> videoElements, boolean audioTransmission, boolean videoTransmission) { public boolean assertMediaTracks(Iterable<WebElement> videoElements, boolean audioTransmission,
boolean videoTransmission) {
boolean success = true; boolean success = true;
for (WebElement video : videoElements) { for (WebElement video : videoElements) {
success = success && (audioTransmission == this.hasAudioTracks(video)) && (videoTransmission == this.hasVideoTracks(video)); success = success && (audioTransmission == this.hasAudioTracks(video))
if (!success) break; && (videoTransmission == this.hasVideoTracks(video));
if (!success)
break;
} }
return success; return success;
} }
@ -146,7 +149,7 @@ public class OpenViduEventManager {
private void setCountDown(String eventName, CountDownLatch cd) { private void setCountDown(String eventName, CountDownLatch cd) {
this.eventCountdowns.put(eventName, cd); this.eventCountdowns.put(eventName, cd);
for(int i=0; i< getNumEvents(eventName).get(); i++){ for (int i = 0; i < getNumEvents(eventName).get(); i++) {
cd.countDown(); cd.countDown();
} }
} }
@ -198,14 +201,14 @@ public class OpenViduEventManager {
} }
private boolean hasAudioTracks(WebElement videoElement) { private boolean hasAudioTracks(WebElement videoElement) {
long numberAudioTracks = (long) ((JavascriptExecutor) driver) long numberAudioTracks = (long) ((JavascriptExecutor) driver).executeScript(
.executeScript("return $('#" + videoElement.getAttribute("id") + "').prop('srcObject').getAudioTracks().length;"); "return $('#" + videoElement.getAttribute("id") + "').prop('srcObject').getAudioTracks().length;");
return (numberAudioTracks > 0); return (numberAudioTracks > 0);
} }
private boolean hasVideoTracks(WebElement videoElement) { private boolean hasVideoTracks(WebElement videoElement) {
long numberAudioTracks = (long) ((JavascriptExecutor) driver) long numberAudioTracks = (long) ((JavascriptExecutor) driver).executeScript(
.executeScript("return $('#" + videoElement.getAttribute("id") + "').prop('srcObject').getVideoTracks().length;"); "return $('#" + videoElement.getAttribute("id") + "').prop('srcObject').getVideoTracks().length;");
return (numberAudioTracks > 0); return (numberAudioTracks > 0);
} }

View File

@ -38,6 +38,7 @@ import org.openqa.selenium.By;
import org.openqa.selenium.Keys; import org.openqa.selenium.Keys;
import org.openqa.selenium.TakesScreenshot; import org.openqa.selenium.TakesScreenshot;
import org.openqa.selenium.WebElement; import org.openqa.selenium.WebElement;
import org.openqa.selenium.support.ui.ExpectedConditions;
import org.slf4j.Logger; import org.slf4j.Logger;
import io.github.bonigarcia.SeleniumExtension; import io.github.bonigarcia.SeleniumExtension;
@ -52,7 +53,7 @@ import io.openvidu.test.e2e.browser.FirefoxUser;
/** /**
* E2E tests for openvidu-testapp. * E2E tests for openvidu-testapp.
* *
* @author Pablo Fuente (pablo.fuente@urjc.es) * @author Pablo Fuente (pablofuenteperez@gmail.com)
* @since 1.1.1 * @since 1.1.1
*/ */
@Tag("e2e") @Tag("e2e")
@ -136,7 +137,7 @@ public class OpenViduTestAppE2eTest {
user.getDriver().findElement(By.id("auto-join-checkbox")).click(); user.getDriver().findElement(By.id("auto-join-checkbox")).click();
user.getDriver().findElement(By.id("one2one-btn")).click(); user.getDriver().findElement(By.id("one2one-btn")).click();
user.getEventManager().waitUntilNumberOfEvent("videoPlaying", 4); user.getEventManager().waitUntilEventReaches("videoPlaying", 4);
try { try {
System.out.println(getBase64Screenshot(user)); System.out.println(getBase64Screenshot(user));
@ -147,16 +148,7 @@ 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));
user.getDriver().findElement(By.id("remove-user-btn")).click(); gracefullyLeaveParticipants(2);
user.getEventManager().waitUntilNumberOfEvent("streamDestroyed", 1);
user.getEventManager().waitUntilNumberOfEvent("sessionDisconnected", 1);
user.getDriver().findElement(By.id("remove-user-btn")).click();
user.getEventManager().waitUntilNumberOfEvent("sessionDisconnected", 2);
user.dispose();
} }
@Test @Test
@ -179,11 +171,11 @@ public class OpenViduTestAppE2eTest {
el.click(); el.click();
} }
user.getEventManager().waitUntilNumberOfEvent("connectionCreated", 4); user.getEventManager().waitUntilEventReaches("connectionCreated", 4);
user.getEventManager().waitUntilNumberOfEvent("accessAllowed", 2); user.getEventManager().waitUntilEventReaches("accessAllowed", 2);
user.getEventManager().waitUntilNumberOfEvent("videoElementCreated", 4); user.getEventManager().waitUntilEventReaches("videoElementCreated", 4);
user.getEventManager().waitUntilNumberOfEvent("streamCreated", 1); user.getEventManager().waitUntilEventReaches("streamCreated", 1);
user.getEventManager().waitUntilNumberOfEvent("videoPlaying", 4); user.getEventManager().waitUntilEventReaches("videoPlaying", 4);
try { try {
System.out.println(getBase64Screenshot(user)); System.out.println(getBase64Screenshot(user));
@ -194,14 +186,7 @@ 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, false)); true, false));
user.getDriver().findElement(By.id("remove-user-btn")).click(); gracefullyLeaveParticipants(2);
user.getEventManager().waitUntilNumberOfEvent("streamDestroyed", 1);
user.getEventManager().waitUntilNumberOfEvent("sessionDisconnected", 1);
user.getDriver().findElement(By.id("remove-user-btn")).click();
user.getEventManager().waitUntilNumberOfEvent("sessionDisconnected", 2);
} }
@Test @Test
@ -224,11 +209,11 @@ public class OpenViduTestAppE2eTest {
el.click(); el.click();
} }
user.getEventManager().waitUntilNumberOfEvent("connectionCreated", 4); user.getEventManager().waitUntilEventReaches("connectionCreated", 4);
user.getEventManager().waitUntilNumberOfEvent("accessAllowed", 2); user.getEventManager().waitUntilEventReaches("accessAllowed", 2);
user.getEventManager().waitUntilNumberOfEvent("videoElementCreated", 4); user.getEventManager().waitUntilEventReaches("videoElementCreated", 4);
user.getEventManager().waitUntilNumberOfEvent("streamCreated", 1); user.getEventManager().waitUntilEventReaches("streamCreated", 1);
user.getEventManager().waitUntilNumberOfEvent("videoPlaying", 4); user.getEventManager().waitUntilEventReaches("videoPlaying", 4);
try { try {
System.out.println(getBase64Screenshot(user)); System.out.println(getBase64Screenshot(user));
@ -239,14 +224,7 @@ 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")),
false, true)); false, true));
user.getDriver().findElement(By.id("remove-user-btn")).click(); gracefullyLeaveParticipants(2);
user.getEventManager().waitUntilNumberOfEvent("streamDestroyed", 1);
user.getEventManager().waitUntilNumberOfEvent("sessionDisconnected", 1);
user.getDriver().findElement(By.id("remove-user-btn")).click();
user.getEventManager().waitUntilNumberOfEvent("sessionDisconnected", 2);
} }
@Test @Test
@ -260,7 +238,7 @@ public class OpenViduTestAppE2eTest {
user.getDriver().findElement(By.id("auto-join-checkbox")).click(); user.getDriver().findElement(By.id("auto-join-checkbox")).click();
user.getDriver().findElement(By.id("one2many-btn")).click(); user.getDriver().findElement(By.id("one2many-btn")).click();
user.getEventManager().waitUntilNumberOfEvent("videoPlaying", 4); user.getEventManager().waitUntilEventReaches("videoPlaying", 4);
try { try {
System.out.println(getBase64Screenshot(user)); System.out.println(getBase64Screenshot(user));
@ -270,9 +248,7 @@ public class OpenViduTestAppE2eTest {
user.getEventManager().assertMediaTracks(user.getDriver().findElements(By.tagName("video")), true, true); user.getEventManager().assertMediaTracks(user.getDriver().findElements(By.tagName("video")), true, true);
user.getDriver().findElements(By.className(("leave-btn"))).get(0).click(); gracefullyLeaveParticipants(4);
user.getEventManager().waitUntilNumberOfEvent("streamDestroyed", 3);
} }
@Test @Test
@ -287,10 +263,10 @@ public class OpenViduTestAppE2eTest {
user.getDriver().findElement(By.className("subscribe-remote-check")).click(); user.getDriver().findElement(By.className("subscribe-remote-check")).click();
user.getDriver().findElement(By.className("join-btn")).click(); user.getDriver().findElement(By.className("join-btn")).click();
user.getEventManager().waitUntilNumberOfEvent("connectionCreated", 1); user.getEventManager().waitUntilEventReaches("connectionCreated", 1);
user.getEventManager().waitUntilNumberOfEvent("accessAllowed", 1); user.getEventManager().waitUntilEventReaches("accessAllowed", 1);
user.getEventManager().waitUntilNumberOfEvent("videoElementCreated", 1); user.getEventManager().waitUntilEventReaches("videoElementCreated", 1);
user.getEventManager().waitUntilNumberOfEvent("remoteVideoPlaying", 1); user.getEventManager().waitUntilEventReaches("remoteVideoPlaying", 1);
try { try {
System.out.println(getBase64Screenshot(user)); System.out.println(getBase64Screenshot(user));
@ -301,9 +277,7 @@ 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));
user.getDriver().findElement(By.className(("leave-btn"))).click(); gracefullyLeaveParticipants(1);
user.getEventManager().waitUntilNumberOfEvent("sessionDisconnected", 1);
} }
@Test @Test
@ -318,8 +292,8 @@ public class OpenViduTestAppE2eTest {
user.getDriver().findElement(By.className("subscribe-remote-check")).click(); user.getDriver().findElement(By.className("subscribe-remote-check")).click();
user.getDriver().findElement(By.className("join-btn")).click(); user.getDriver().findElement(By.className("join-btn")).click();
user.getEventManager().waitUntilNumberOfEvent("connectionCreated", 1); user.getEventManager().waitUntilEventReaches("connectionCreated", 1);
user.getEventManager().waitUntilNumberOfEvent("accessAllowed", 1); user.getEventManager().waitUntilEventReaches("accessAllowed", 1);
Thread.sleep(3000); Thread.sleep(3000);
@ -329,9 +303,7 @@ public class OpenViduTestAppE2eTest {
e.printStackTrace(); e.printStackTrace();
} }
user.getDriver().findElement(By.className(("leave-btn"))).click(); gracefullyLeaveParticipants(1);
user.getEventManager().waitUntilNumberOfEvent("sessionDisconnected", 1);
} }
@Test @Test
@ -347,10 +319,10 @@ public class OpenViduTestAppE2eTest {
user.getDriver().findElement(By.className("subscribe-remote-check")).click(); user.getDriver().findElement(By.className("subscribe-remote-check")).click();
user.getDriver().findElement(By.className("join-btn")).click(); user.getDriver().findElement(By.className("join-btn")).click();
user.getEventManager().waitUntilNumberOfEvent("connectionCreated", 1); user.getEventManager().waitUntilEventReaches("connectionCreated", 1);
user.getEventManager().waitUntilNumberOfEvent("accessAllowed", 1); user.getEventManager().waitUntilEventReaches("accessAllowed", 1);
user.getEventManager().waitUntilNumberOfEvent("videoElementCreated", 1); user.getEventManager().waitUntilEventReaches("videoElementCreated", 1);
user.getEventManager().waitUntilNumberOfEvent("remoteVideoPlaying", 1); user.getEventManager().waitUntilEventReaches("remoteVideoPlaying", 1);
try { try {
System.out.println(getBase64Screenshot(user)); System.out.println(getBase64Screenshot(user));
@ -361,9 +333,7 @@ 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));
user.getDriver().findElement(By.className(("leave-btn"))).click(); gracefullyLeaveParticipants(1);
user.getEventManager().waitUntilNumberOfEvent("sessionDisconnected", 1);
} }
@Test @Test
@ -384,11 +354,11 @@ public class OpenViduTestAppE2eTest {
el.sendKeys(Keys.ENTER); el.sendKeys(Keys.ENTER);
} }
user.getEventManager().waitUntilNumberOfEvent("connectionCreated", 16); user.getEventManager().waitUntilEventReaches("connectionCreated", 16);
user.getEventManager().waitUntilNumberOfEvent("accessAllowed", 4); user.getEventManager().waitUntilEventReaches("accessAllowed", 4);
user.getEventManager().waitUntilNumberOfEvent("videoElementCreated", 16); user.getEventManager().waitUntilEventReaches("videoElementCreated", 16);
user.getEventManager().waitUntilNumberOfEvent("streamCreated", 6); user.getEventManager().waitUntilEventReaches("streamCreated", 6);
user.getEventManager().waitUntilNumberOfEvent("videoPlaying", 16); user.getEventManager().waitUntilEventReaches("videoPlaying", 16);
try { try {
System.out.println(getBase64Screenshot(user)); System.out.println(getBase64Screenshot(user));
@ -399,20 +369,7 @@ 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));
user.getDriver().findElement(By.id(("remove-user-btn"))).sendKeys(Keys.ENTER); gracefullyLeaveParticipants(4);
user.getEventManager().waitUntilNumberOfEvent("streamDestroyed", 3);
user.getEventManager().waitUntilNumberOfEvent("sessionDisconnected", 1);
user.getDriver().findElement(By.id(("remove-user-btn"))).sendKeys(Keys.ENTER);
user.getEventManager().waitUntilNumberOfEvent("streamDestroyed", 4);
user.getEventManager().waitUntilNumberOfEvent("sessionDisconnected", 2);
user.getDriver().findElement(By.id(("remove-user-btn"))).sendKeys(Keys.ENTER);
user.getEventManager().waitUntilNumberOfEvent("streamDestroyed", 5);
user.getEventManager().waitUntilNumberOfEvent("sessionDisconnected", 3);
user.getDriver().findElement(By.id(("remove-user-btn"))).sendKeys(Keys.ENTER);
user.getEventManager().waitUntilNumberOfEvent("sessionDisconnected", 4);
} }
@Test @Test
@ -453,11 +410,11 @@ public class OpenViduTestAppE2eTest {
el.sendKeys(Keys.ENTER); el.sendKeys(Keys.ENTER);
} }
user.getEventManager().waitUntilNumberOfEvent("connectionCreated", 16); user.getEventManager().waitUntilEventReaches("connectionCreated", 16);
user.getEventManager().waitUntilNumberOfEvent("accessAllowed", 4); user.getEventManager().waitUntilEventReaches("accessAllowed", 4);
user.getEventManager().waitUntilNumberOfEvent("videoElementCreated", 16); user.getEventManager().waitUntilEventReaches("videoElementCreated", 16);
user.getEventManager().waitUntilNumberOfEvent("streamCreated", 6); user.getEventManager().waitUntilEventReaches("streamCreated", 6);
user.getEventManager().waitUntilNumberOfEvent("videoPlaying", 16); user.getEventManager().waitUntilEventReaches("videoPlaying", 16);
try { try {
System.out.println(getBase64Screenshot(user)); System.out.println(getBase64Screenshot(user));
@ -468,20 +425,7 @@ 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));
user.getDriver().findElement(By.id(("remove-user-btn"))).sendKeys(Keys.ENTER); gracefullyLeaveParticipants(4);
user.getEventManager().waitUntilNumberOfEvent("streamDestroyed", 3);
user.getEventManager().waitUntilNumberOfEvent("sessionDisconnected", 1);
user.getDriver().findElement(By.id(("remove-user-btn"))).sendKeys(Keys.ENTER);
user.getEventManager().waitUntilNumberOfEvent("streamDestroyed", 4);
user.getEventManager().waitUntilNumberOfEvent("sessionDisconnected", 2);
user.getDriver().findElement(By.id(("remove-user-btn"))).sendKeys(Keys.ENTER);
user.getEventManager().waitUntilNumberOfEvent("streamDestroyed", 5);
user.getEventManager().waitUntilNumberOfEvent("sessionDisconnected", 3);
user.getDriver().findElement(By.id(("remove-user-btn"))).sendKeys(Keys.ENTER);
user.getEventManager().waitUntilNumberOfEvent("sessionDisconnected", 4);
} }
@Test @Test
@ -495,7 +439,7 @@ public class OpenViduTestAppE2eTest {
user.getDriver().findElement(By.id("auto-join-checkbox")).click(); user.getDriver().findElement(By.id("auto-join-checkbox")).click();
user.getDriver().findElement(By.id("one2one-btn")).click(); user.getDriver().findElement(By.id("one2one-btn")).click();
user.getEventManager().waitUntilNumberOfEvent("videoPlaying", 4); user.getEventManager().waitUntilEventReaches("videoPlaying", 4);
try { try {
System.out.println(getBase64Screenshot(user)); System.out.println(getBase64Screenshot(user));
@ -506,16 +450,7 @@ 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));
user.getDriver().findElement(By.id("remove-user-btn")).click(); gracefullyLeaveParticipants(2);
user.getEventManager().waitUntilNumberOfEvent("streamDestroyed", 1);
user.getEventManager().waitUntilNumberOfEvent("sessionDisconnected", 1);
user.getDriver().findElement(By.id("remove-user-btn")).click();
user.getEventManager().waitUntilNumberOfEvent("sessionDisconnected", 2);
user.dispose();
} }
@Test @Test
@ -550,12 +485,12 @@ public class OpenViduTestAppE2eTest {
user2.getDriver().findElement(By.id("add-user-btn")).click(); user2.getDriver().findElement(By.id("add-user-btn")).click();
user2.getDriver().findElement(By.className("join-btn")).click(); user2.getDriver().findElement(By.className("join-btn")).click();
try { try {
user2.getEventManager().waitUntilNumberOfEvent("videoPlaying", 2); user2.getEventManager().waitUntilEventReaches("videoPlaying", 2);
Assert.assertTrue(user2.getEventManager() Assert.assertTrue(user2.getEventManager()
.assertMediaTracks(user2.getDriver().findElements(By.tagName("video")), true, true)); .assertMediaTracks(user2.getDriver().findElements(By.tagName("video")), true, true));
user2.getEventManager().waitUntilNumberOfEvent("streamDestroyed", 1); user2.getEventManager().waitUntilEventReaches("streamDestroyed", 1);
user2.getDriver().findElement(By.id("remove-user-btn")).click(); user2.getDriver().findElement(By.id("remove-user-btn")).click();
user2.getEventManager().waitUntilNumberOfEvent("sessionDisconnected", 1); user2.getEventManager().waitUntilEventReaches("sessionDisconnected", 1);
} catch (Exception e) { } catch (Exception e) {
e.printStackTrace(); e.printStackTrace();
Thread.currentThread().interrupt(); Thread.currentThread().interrupt();
@ -568,7 +503,7 @@ public class OpenViduTestAppE2eTest {
user.getDriver().findElement(By.id("add-user-btn")).click(); user.getDriver().findElement(By.id("add-user-btn")).click();
user.getDriver().findElement(By.className("join-btn")).click(); user.getDriver().findElement(By.className("join-btn")).click();
user.getEventManager().waitUntilNumberOfEvent("videoPlaying", 2); user.getEventManager().waitUntilEventReaches("videoPlaying", 2);
try { try {
System.out.println(getBase64Screenshot(user)); System.out.println(getBase64Screenshot(user));
@ -579,9 +514,7 @@ 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));
user.getDriver().findElement(By.id("remove-user-btn")).click(); gracefullyLeaveParticipants(1);
user.getEventManager().waitUntilNumberOfEvent("sessionDisconnected", 1);
t.join(); t.join();
@ -592,6 +525,118 @@ public class OpenViduTestAppE2eTest {
} }
} }
@Test
@DisplayName("Signal message")
void oneToManySignalMessage() throws Exception {
setupBrowser("chrome");
log.info("Signal message");
WebElement addUser = user.getDriver().findElement(By.id("add-user-btn"));
for (int i = 0; i < 4; i++) {
addUser.click();
}
List<WebElement> publishCheckboxes = user.getDriver().findElements(By.className("publish-checkbox"));
for (WebElement el : publishCheckboxes) {
el.click();
}
List<WebElement> joinButtons = user.getDriver().findElements(By.className("join-btn"));
for (WebElement el : joinButtons) {
el.sendKeys(Keys.ENTER);
}
user.getEventManager().waitUntilEventReaches("connectionCreated", 16);
user.getDriver().findElements(By.className(("message-btn"))).get(0).click();
user.getEventManager().waitUntilEventReaches("signal", 4);
gracefullyLeaveParticipants(4);
}
@Test
@DisplayName("Subscribe Unsubscribe")
void subscribeUnsubscribeTest() throws Exception {
setupBrowser("chrome");
log.info("Signal message");
user.getDriver().findElement(By.id("one2one-btn")).click();
user.getDriver().findElements(By.className("publish-checkbox")).get(0).click();
List<WebElement> joinButtons = user.getDriver().findElements(By.className("join-btn"));
for (WebElement el : joinButtons) {
el.sendKeys(Keys.ENTER);
}
user.getEventManager().waitUntilEventReaches("videoPlaying", 2);
Assert.assertEquals(user.getDriver().findElements(By.tagName("video")).size(), 2);
Assert.assertTrue(user.getEventManager().assertMediaTracks(user.getDriver().findElements(By.tagName("video")),
true, true));
user.getDriver().findElements(By.className(("sub-btn"))).get(0).click();
user.getWaiter().until(ExpectedConditions.numberOfElementsToBe(By.tagName("video"), 1));
user.getDriver().findElements(By.className(("sub-btn"))).get(0).click();
user.getEventManager().waitUntilEventReaches("videoPlaying", 3);
Assert.assertEquals(user.getDriver().findElements(By.tagName("video")).size(), 2);
Assert.assertTrue(user.getEventManager().assertMediaTracks(user.getDriver().findElements(By.tagName("video")),
true, true));
gracefullyLeaveParticipants(2);
}
@Test
@DisplayName("Publish Unpublish")
void publishUnpublishTest() throws Exception {
setupBrowser("chrome");
log.info("Signal message");
user.getDriver().findElement(By.id("auto-join-checkbox")).click();
user.getDriver().findElement(By.id("one2one-btn")).click();
user.getEventManager().waitUntilEventReaches("videoPlaying", 4);
Assert.assertTrue(user.getEventManager().assertMediaTracks(user.getDriver().findElements(By.tagName("video")),
true, true));
List<WebElement> publishButtons = user.getDriver().findElements(By.className("publish-btn"));
for (WebElement el : publishButtons) {
el.click();
}
user.getEventManager().waitUntilEventReaches("streamDestroyed", 4);
user.getWaiter().until(ExpectedConditions.numberOfElementsToBe(By.tagName("video"), 0));
for (WebElement el : publishButtons) {
el.click();
}
user.getEventManager().waitUntilEventReaches("videoPlaying", 8);
Assert.assertTrue(user.getEventManager().assertMediaTracks(user.getDriver().findElements(By.tagName("video")),
true, true));
gracefullyLeaveParticipants(2);
}
private void gracefullyLeaveParticipants(int numberOfParticipants) throws Exception {
int accumulatedConnectionDestroyed = 0;
for (int j = 1; j <= numberOfParticipants; j++) {
user.getDriver().findElement(By.id("remove-user-btn")).sendKeys(Keys.ENTER);
user.getEventManager().waitUntilEventReaches("sessionDisconnected", j);
accumulatedConnectionDestroyed = (j != numberOfParticipants) ? (accumulatedConnectionDestroyed + numberOfParticipants - j) : (accumulatedConnectionDestroyed);
user.getEventManager().waitUntilEventReaches("connectionDestroyed", accumulatedConnectionDestroyed);
}
}
private String getBase64Screenshot(BrowserUser user) throws Exception { private String getBase64Screenshot(BrowserUser user) throws Exception {
String screenshotBase64 = ((TakesScreenshot) user.getDriver()).getScreenshotAs(BASE64); String screenshotBase64 = ((TakesScreenshot) user.getDriver()).getScreenshotAs(BASE64);
return "data:image/png;base64," + screenshotBase64; return "data:image/png;base64," + screenshotBase64;