mirror of https://github.com/OpenVidu/openvidu.git
openvidu-test-e2e extended to test signal, sub/unsub, publish/unpublish
parent
9830a87b9a
commit
450205eb50
|
@ -38,16 +38,15 @@ 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 {
|
||||||
|
|
||||||
private static class RunnableCallback implements Runnable {
|
private static class RunnableCallback implements Runnable {
|
||||||
|
|
||||||
private final Consumer<JSONObject> callback;
|
private final Consumer<JSONObject> callback;
|
||||||
|
@ -87,15 +86,15 @@ 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(() -> {
|
||||||
while (!this.isInterrupted.get()) {
|
while (!this.isInterrupted.get()) {
|
||||||
this.getEventsFromBrowser();
|
this.getEventsFromBrowser();
|
||||||
|
@ -117,25 +116,29 @@ public class OpenViduEventManager {
|
||||||
public void on(String eventName, Consumer<JSONObject> callback) {
|
public void on(String eventName, Consumer<JSONObject> callback) {
|
||||||
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();
|
||||||
throw e;
|
throw e;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
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();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -154,9 +157,9 @@ public class OpenViduEventManager {
|
||||||
private void emitEvents() {
|
private void emitEvents() {
|
||||||
while (!this.eventQueue.isEmpty()) {
|
while (!this.eventQueue.isEmpty()) {
|
||||||
JSONObject event = this.eventQueue.poll();
|
JSONObject event = this.eventQueue.poll();
|
||||||
|
|
||||||
System.out.println(event.get("event") + ": " + event);
|
System.out.println(event.get("event") + ": " + event);
|
||||||
|
|
||||||
RunnableCallback callback = this.eventCallbacks.get(event.get("event"));
|
RunnableCallback callback = this.eventCallbacks.get(event.get("event"));
|
||||||
if (callback != null) {
|
if (callback != null) {
|
||||||
callback.setEventResult(event);
|
callback.setEventResult(event);
|
||||||
|
@ -178,10 +181,10 @@ public class OpenViduEventManager {
|
||||||
try {
|
try {
|
||||||
JSONObject event = (JSONObject) parser.parse(e);
|
JSONObject event = (JSONObject) parser.parse(e);
|
||||||
String eventName = (String) event.get("event");
|
String eventName = (String) event.get("event");
|
||||||
|
|
||||||
this.eventQueue.add(event);
|
this.eventQueue.add(event);
|
||||||
getNumEvents(eventName).incrementAndGet();
|
getNumEvents(eventName).incrementAndGet();
|
||||||
|
|
||||||
if (this.eventCountdowns.get(eventName) != null) {
|
if (this.eventCountdowns.get(eventName) != null) {
|
||||||
this.eventCountdowns.get(eventName).countDown();
|
this.eventCountdowns.get(eventName).countDown();
|
||||||
}
|
}
|
||||||
|
@ -190,22 +193,22 @@ public class OpenViduEventManager {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private String getAndClearEventsInBrowser() {
|
private String getAndClearEventsInBrowser() {
|
||||||
String events = (String) ((JavascriptExecutor) driver)
|
String events = (String) ((JavascriptExecutor) driver)
|
||||||
.executeScript("var e = window.myEvents; window.myEvents = ''; return e;");
|
.executeScript("var e = window.myEvents; window.myEvents = ''; return e;");
|
||||||
return events;
|
return events;
|
||||||
}
|
}
|
||||||
|
|
||||||
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);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -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));
|
||||||
|
@ -146,17 +147,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));
|
||||||
|
|
||||||
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));
|
||||||
|
@ -193,15 +185,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, 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));
|
||||||
|
@ -238,15 +223,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")),
|
||||||
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));
|
||||||
|
@ -269,10 +247,8 @@ 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));
|
||||||
|
@ -300,10 +276,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));
|
||||||
|
|
||||||
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);
|
||||||
|
|
||||||
|
@ -328,10 +302,8 @@ public class OpenViduTestAppE2eTest {
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
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));
|
||||||
|
@ -360,10 +332,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));
|
||||||
|
|
||||||
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));
|
||||||
|
@ -398,21 +368,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));
|
||||||
|
|
||||||
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));
|
||||||
|
@ -467,21 +424,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));
|
||||||
|
|
||||||
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));
|
||||||
|
@ -505,17 +449,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));
|
||||||
|
|
||||||
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));
|
||||||
|
@ -578,10 +513,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));
|
||||||
|
|
||||||
user.getDriver().findElement(By.id("remove-user-btn")).click();
|
gracefullyLeaveParticipants(1);
|
||||||
|
|
||||||
user.getEventManager().waitUntilNumberOfEvent("sessionDisconnected", 1);
|
|
||||||
|
|
||||||
t.join();
|
t.join();
|
||||||
|
|
||||||
|
@ -591,10 +524,122 @@ 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;
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue