openvidu-test-e2e updated to support new openvidu-testapp version

pull/73/head
pabloFuente 2018-05-29 18:35:04 +02:00
parent 0315a75187
commit cc1bb3aedf
3 changed files with 122 additions and 62 deletions

View File

@ -36,7 +36,6 @@ import org.json.simple.parser.ParseException;
import org.openqa.selenium.JavascriptExecutor; import org.openqa.selenium.JavascriptExecutor;
import org.openqa.selenium.WebDriver; import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement; import org.openqa.selenium.WebElement;
import org.openqa.selenium.support.ui.WebDriverWait;
/** /**
* Manager event class for BrowserUser. Collects, cleans and stores events from * Manager event class for BrowserUser. Collects, cleans and stores events from
@ -76,7 +75,7 @@ public class OpenViduEventManager {
private AtomicBoolean isInterrupted = new AtomicBoolean(false); private AtomicBoolean isInterrupted = new AtomicBoolean(false);
private int timeOfWaitInSeconds; private int timeOfWaitInSeconds;
public OpenViduEventManager(WebDriver driver, WebDriverWait waiter, int timeOfWaitInSeconds) { public OpenViduEventManager(WebDriver driver, int timeOfWaitInSeconds) {
this.driver = driver; this.driver = driver;
this.eventQueue = new ConcurrentLinkedQueue<JSONObject>(); this.eventQueue = new ConcurrentLinkedQueue<JSONObject>();
this.eventCallbacks = new ConcurrentHashMap<>(); this.eventCallbacks = new ConcurrentHashMap<>();
@ -121,7 +120,8 @@ public class OpenViduEventManager {
this.eventCallbacks.remove(eventName); this.eventCallbacks.remove(eventName);
} }
// 'eventNumber' is accumulative for event 'eventName' for one page while it is not refreshed // 'eventNumber' is accumulative for event 'eventName' for one page while it is
// not refreshed
public void waitUntilEventReaches(String eventName, int eventNumber) throws Exception { 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);
@ -204,17 +204,25 @@ public class OpenViduEventManager {
return events; return events;
} }
public boolean hasMediaStream(WebElement videoElement) {
boolean hasMediaStream = (boolean) ((JavascriptExecutor) driver).executeScript(
"return (!!(document.getElementById('" + videoElement.getAttribute("id") + "').srcObject))");
return hasMediaStream;
}
private boolean hasAudioTracks(WebElement videoElement) { private boolean hasAudioTracks(WebElement videoElement) {
boolean audioTracks = (boolean) ((JavascriptExecutor) driver).executeScript( boolean audioTracks = (boolean) ((JavascriptExecutor) driver)
"return ($('#" + videoElement.getAttribute("id") + "').prop('srcObject').getAudioTracks().length > 0)" .executeScript("return ((document.getElementById('" + videoElement.getAttribute("id")
+ "&& ($('#" + videoElement.getAttribute("id") + "').prop('srcObject').getAudioTracks()[0].enabled)"); + "').srcObject.getAudioTracks().length > 0)" + "&& (document.getElementById('"
+ videoElement.getAttribute("id") + "').srcObject.getAudioTracks()[0].enabled))");
return audioTracks; return audioTracks;
} }
private boolean hasVideoTracks(WebElement videoElement) { private boolean hasVideoTracks(WebElement videoElement) {
boolean videoTracks = (boolean) ((JavascriptExecutor) driver).executeScript( boolean videoTracks = (boolean) ((JavascriptExecutor) driver)
"return ($('#" + videoElement.getAttribute("id") + "').prop('srcObject').getVideoTracks().length > 0)" .executeScript("return ((document.getElementById('" + videoElement.getAttribute("id")
+ "&& ($('#" + videoElement.getAttribute("id") + "').prop('srcObject').getVideoTracks()[0].enabled)"); + "').srcObject.getVideoTracks().length > 0)" + "&& (document.getElementById('"
+ videoElement.getAttribute("id") + "').srcObject.getVideoTracks()[0].enabled))");
return videoTracks; return videoTracks;
} }

View File

@ -23,13 +23,11 @@ import static org.openqa.selenium.OutputType.BASE64;
import org.slf4j.Logger; import org.slf4j.Logger;
import java.io.File; import java.io.File;
import java.util.ArrayList;
import java.util.Arrays; import java.util.Arrays;
import java.util.Iterator; import java.util.Iterator;
import java.util.List; import java.util.List;
import java.util.Queue; import java.util.Queue;
import java.util.concurrent.ConcurrentLinkedQueue; import java.util.concurrent.ConcurrentLinkedQueue;
import java.util.regex.Pattern;
import org.junit.jupiter.api.*; import org.junit.jupiter.api.*;
import org.junit.jupiter.api.extension.ExtendWith; import org.junit.jupiter.api.extension.ExtendWith;
@ -49,8 +47,6 @@ import io.github.bonigarcia.SeleniumExtension;
import io.github.bonigarcia.wdm.ChromeDriverManager; import io.github.bonigarcia.wdm.ChromeDriverManager;
import io.github.bonigarcia.wdm.FirefoxDriverManager; import io.github.bonigarcia.wdm.FirefoxDriverManager;
import io.openvidu.java.client.OpenVidu;
import io.openvidu.java.client.Session;
import io.openvidu.test.e2e.browser.BrowserUser; import io.openvidu.test.e2e.browser.BrowserUser;
import io.openvidu.test.e2e.browser.ChromeUser; import io.openvidu.test.e2e.browser.ChromeUser;
import io.openvidu.test.e2e.browser.FirefoxUser; import io.openvidu.test.e2e.browser.FirefoxUser;
@ -142,7 +138,10 @@ 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().waitUntilEventReaches("videoPlaying", 4); user.getEventManager().waitUntilEventReaches("connectionCreated", 4);
user.getEventManager().waitUntilEventReaches("accessAllowed", 2);
user.getEventManager().waitUntilEventReaches("streamCreated", 4);
user.getEventManager().waitUntilEventReaches("streamPlaying", 4);
try { try {
System.out.println(getBase64Screenshot(user)); System.out.println(getBase64Screenshot(user));
@ -150,6 +149,7 @@ public class OpenViduTestAppE2eTest {
e.printStackTrace(); e.printStackTrace();
} }
Assert.assertEquals(user.getDriver().findElements(By.tagName("video")).size(), 4);
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));
@ -178,9 +178,8 @@ public class OpenViduTestAppE2eTest {
user.getEventManager().waitUntilEventReaches("connectionCreated", 4); user.getEventManager().waitUntilEventReaches("connectionCreated", 4);
user.getEventManager().waitUntilEventReaches("accessAllowed", 2); user.getEventManager().waitUntilEventReaches("accessAllowed", 2);
user.getEventManager().waitUntilEventReaches("videoElementCreated", 4); user.getEventManager().waitUntilEventReaches("streamCreated", 4);
user.getEventManager().waitUntilEventReaches("streamCreated", 1); user.getEventManager().waitUntilEventReaches("streamPlaying", 4);
user.getEventManager().waitUntilEventReaches("videoPlaying", 4);
try { try {
System.out.println(getBase64Screenshot(user)); System.out.println(getBase64Screenshot(user));
@ -188,6 +187,7 @@ public class OpenViduTestAppE2eTest {
e.printStackTrace(); e.printStackTrace();
} }
Assert.assertEquals(user.getDriver().findElements(By.tagName("video")).size(), 4);
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));
@ -216,9 +216,8 @@ public class OpenViduTestAppE2eTest {
user.getEventManager().waitUntilEventReaches("connectionCreated", 4); user.getEventManager().waitUntilEventReaches("connectionCreated", 4);
user.getEventManager().waitUntilEventReaches("accessAllowed", 2); user.getEventManager().waitUntilEventReaches("accessAllowed", 2);
user.getEventManager().waitUntilEventReaches("videoElementCreated", 4); user.getEventManager().waitUntilEventReaches("streamCreated", 4);
user.getEventManager().waitUntilEventReaches("streamCreated", 1); user.getEventManager().waitUntilEventReaches("streamPlaying", 4);
user.getEventManager().waitUntilEventReaches("videoPlaying", 4);
try { try {
System.out.println(getBase64Screenshot(user)); System.out.println(getBase64Screenshot(user));
@ -226,6 +225,7 @@ public class OpenViduTestAppE2eTest {
e.printStackTrace(); e.printStackTrace();
} }
Assert.assertEquals(user.getDriver().findElements(By.tagName("video")).size(), 4);
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));
@ -243,7 +243,10 @@ 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().waitUntilEventReaches("videoPlaying", 4); user.getEventManager().waitUntilEventReaches("connectionCreated", 16);
user.getEventManager().waitUntilEventReaches("accessAllowed", 1);
user.getEventManager().waitUntilEventReaches("streamCreated", 4);
user.getEventManager().waitUntilEventReaches("streamPlaying", 4);
try { try {
System.out.println(getBase64Screenshot(user)); System.out.println(getBase64Screenshot(user));
@ -251,6 +254,7 @@ public class OpenViduTestAppE2eTest {
e.printStackTrace(); e.printStackTrace();
} }
Assert.assertEquals(user.getDriver().findElements(By.tagName("video")).size(), 4);
user.getEventManager().assertMediaTracks(user.getDriver().findElements(By.tagName("video")), true, true); user.getEventManager().assertMediaTracks(user.getDriver().findElements(By.tagName("video")), true, true);
gracefullyLeaveParticipants(4); gracefullyLeaveParticipants(4);
@ -270,8 +274,8 @@ public class OpenViduTestAppE2eTest {
user.getEventManager().waitUntilEventReaches("connectionCreated", 1); user.getEventManager().waitUntilEventReaches("connectionCreated", 1);
user.getEventManager().waitUntilEventReaches("accessAllowed", 1); user.getEventManager().waitUntilEventReaches("accessAllowed", 1);
user.getEventManager().waitUntilEventReaches("videoElementCreated", 1); user.getEventManager().waitUntilEventReaches("streamCreated", 1);
user.getEventManager().waitUntilEventReaches("remoteVideoPlaying", 1); user.getEventManager().waitUntilEventReaches("streamPlaying", 1);
try { try {
System.out.println(getBase64Screenshot(user)); System.out.println(getBase64Screenshot(user));
@ -279,6 +283,7 @@ public class OpenViduTestAppE2eTest {
e.printStackTrace(); e.printStackTrace();
} }
Assert.assertEquals(user.getDriver().findElements(By.tagName("video")).size(), 1);
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));
@ -299,8 +304,8 @@ public class OpenViduTestAppE2eTest {
user.getEventManager().waitUntilEventReaches("connectionCreated", 1); user.getEventManager().waitUntilEventReaches("connectionCreated", 1);
user.getEventManager().waitUntilEventReaches("accessAllowed", 1); user.getEventManager().waitUntilEventReaches("accessAllowed", 1);
user.getEventManager().waitUntilEventReaches("streamCreated", 1);
Thread.sleep(3000); user.getEventManager().waitUntilEventReaches("streamPlaying", 1);
try { try {
System.out.println(getBase64Screenshot(user)); System.out.println(getBase64Screenshot(user));
@ -308,6 +313,10 @@ public class OpenViduTestAppE2eTest {
e.printStackTrace(); e.printStackTrace();
} }
Assert.assertEquals(user.getDriver().findElements(By.tagName("video")).size(), 1);
Assert.assertTrue(user.getEventManager().assertMediaTracks(user.getDriver().findElements(By.tagName("video")),
true, true));
gracefullyLeaveParticipants(1); gracefullyLeaveParticipants(1);
} }
@ -326,8 +335,8 @@ public class OpenViduTestAppE2eTest {
user.getEventManager().waitUntilEventReaches("connectionCreated", 1); user.getEventManager().waitUntilEventReaches("connectionCreated", 1);
user.getEventManager().waitUntilEventReaches("accessAllowed", 1); user.getEventManager().waitUntilEventReaches("accessAllowed", 1);
user.getEventManager().waitUntilEventReaches("videoElementCreated", 1); user.getEventManager().waitUntilEventReaches("streamCreated", 1);
user.getEventManager().waitUntilEventReaches("remoteVideoPlaying", 1); user.getEventManager().waitUntilEventReaches("streamPlaying", 1);
try { try {
System.out.println(getBase64Screenshot(user)); System.out.println(getBase64Screenshot(user));
@ -335,6 +344,7 @@ public class OpenViduTestAppE2eTest {
e.printStackTrace(); e.printStackTrace();
} }
Assert.assertEquals(user.getDriver().findElements(By.tagName("video")).size(), 1);
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));
@ -361,9 +371,8 @@ public class OpenViduTestAppE2eTest {
user.getEventManager().waitUntilEventReaches("connectionCreated", 16); user.getEventManager().waitUntilEventReaches("connectionCreated", 16);
user.getEventManager().waitUntilEventReaches("accessAllowed", 4); user.getEventManager().waitUntilEventReaches("accessAllowed", 4);
user.getEventManager().waitUntilEventReaches("videoElementCreated", 16); user.getEventManager().waitUntilEventReaches("streamCreated", 16);
user.getEventManager().waitUntilEventReaches("streamCreated", 6); user.getEventManager().waitUntilEventReaches("streamPlaying", 16);
user.getEventManager().waitUntilEventReaches("videoPlaying", 16);
try { try {
System.out.println(getBase64Screenshot(user)); System.out.println(getBase64Screenshot(user));
@ -371,6 +380,7 @@ public class OpenViduTestAppE2eTest {
e.printStackTrace(); e.printStackTrace();
} }
Assert.assertEquals(user.getDriver().findElements(By.tagName("video")).size(), 16);
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));
@ -388,7 +398,10 @@ 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().waitUntilEventReaches("videoPlaying", 4); user.getEventManager().waitUntilEventReaches("connectionCreated", 4);
user.getEventManager().waitUntilEventReaches("accessAllowed", 2);
user.getEventManager().waitUntilEventReaches("streamCreated", 4);
user.getEventManager().waitUntilEventReaches("streamPlaying", 4);
try { try {
System.out.println(getBase64Screenshot(user)); System.out.println(getBase64Screenshot(user));
@ -396,6 +409,7 @@ public class OpenViduTestAppE2eTest {
e.printStackTrace(); e.printStackTrace();
} }
Assert.assertEquals(user.getDriver().findElements(By.tagName("video")).size(), 4);
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));
@ -434,10 +448,16 @@ 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().waitUntilEventReaches("videoPlaying", 2); user2.getEventManager().waitUntilEventReaches("connectionCreated", 2);
user2.getEventManager().waitUntilEventReaches("accessAllowed", 1);
user2.getEventManager().waitUntilEventReaches("streamCreated", 2);
user2.getEventManager().waitUntilEventReaches("streamPlaying", 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().waitUntilEventReaches("streamDestroyed", 1); user2.getEventManager().waitUntilEventReaches("streamDestroyed", 1);
user2.getEventManager().waitUntilEventReaches("connectionDestroyed", 1);
user2.getDriver().findElement(By.id("remove-user-btn")).click(); user2.getDriver().findElement(By.id("remove-user-btn")).click();
user2.getEventManager().waitUntilEventReaches("sessionDisconnected", 1); user2.getEventManager().waitUntilEventReaches("sessionDisconnected", 1);
} catch (Exception e) { } catch (Exception e) {
@ -452,7 +472,10 @@ 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().waitUntilEventReaches("videoPlaying", 2); user.getEventManager().waitUntilEventReaches("connectionCreated", 2);
user.getEventManager().waitUntilEventReaches("accessAllowed", 1);
user.getEventManager().waitUntilEventReaches("streamCreated", 2);
user.getEventManager().waitUntilEventReaches("streamPlaying", 2);
try { try {
System.out.println(getBase64Screenshot(user)); System.out.println(getBase64Screenshot(user));
@ -460,6 +483,7 @@ public class OpenViduTestAppE2eTest {
e.printStackTrace(); e.printStackTrace();
} }
Assert.assertEquals(user.getDriver().findElements(By.tagName("video")).size(), 2);
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));
@ -521,7 +545,10 @@ public class OpenViduTestAppE2eTest {
el.sendKeys(Keys.ENTER); el.sendKeys(Keys.ENTER);
} }
user.getEventManager().waitUntilEventReaches("videoPlaying", 2); user.getEventManager().waitUntilEventReaches("connectionCreated", 4);
user.getEventManager().waitUntilEventReaches("accessAllowed", 1);
user.getEventManager().waitUntilEventReaches("streamCreated", 2);
user.getEventManager().waitUntilEventReaches("streamPlaying", 2);
Assert.assertEquals(user.getDriver().findElements(By.tagName("video")).size(), 2); Assert.assertEquals(user.getDriver().findElements(By.tagName("video")).size(), 2);
Assert.assertTrue(user.getEventManager().assertMediaTracks(user.getDriver().findElements(By.tagName("video")), Assert.assertTrue(user.getEventManager().assertMediaTracks(user.getDriver().findElements(By.tagName("video")),
@ -530,9 +557,14 @@ public class OpenViduTestAppE2eTest {
// Global unsubscribe-subscribe // 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.not(ExpectedConditions
.attributeToBeNotEmpty(user.getDriver().findElements(By.tagName("video")).get(0), "srcObject")));
Assert.assertFalse(
user.getEventManager().hasMediaStream(user.getDriver().findElements(By.tagName("video")).get(0)));
user.getDriver().findElements(By.className(("sub-btn"))).get(0).click(); user.getDriver().findElements(By.className(("sub-btn"))).get(0).click();
user.getEventManager().waitUntilEventReaches("videoPlaying", 3); user.getEventManager().waitUntilEventReaches("streamPlaying", 3);
Assert.assertEquals(user.getDriver().findElements(By.tagName("video")).size(), 2); Assert.assertEquals(user.getDriver().findElements(By.tagName("video")).size(), 2);
Assert.assertTrue(user.getEventManager().assertMediaTracks(user.getDriver().findElements(By.tagName("video")), Assert.assertTrue(user.getEventManager().assertMediaTracks(user.getDriver().findElements(By.tagName("video")),
@ -554,6 +586,8 @@ public class OpenViduTestAppE2eTest {
// Video and audio subscribe // Video and audio subscribe
user.getDriver().findElements(By.className(("sub-video-btn"))).get(0).click(); user.getDriver().findElements(By.className(("sub-video-btn"))).get(0).click();
Thread.sleep(1000);
Assert.assertTrue(user.getEventManager().assertMediaTracks(firstVideo, false, true));
user.getDriver().findElements(By.className(("sub-audio-btn"))).get(0).click(); user.getDriver().findElements(By.className(("sub-audio-btn"))).get(0).click();
Thread.sleep(1000); Thread.sleep(1000);
Assert.assertTrue(user.getEventManager().assertMediaTracks(firstVideo, true, true)); Assert.assertTrue(user.getEventManager().assertMediaTracks(firstVideo, true, true));
@ -573,27 +607,36 @@ 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().waitUntilEventReaches("videoPlaying", 4); user.getEventManager().waitUntilEventReaches("connectionCreated", 4);
user.getEventManager().waitUntilEventReaches("accessAllowed", 2);
user.getEventManager().waitUntilEventReaches("streamCreated", 4);
user.getEventManager().waitUntilEventReaches("streamPlaying", 4);
user.getWaiter().until(ExpectedConditions.numberOfElementsToBe(By.tagName("video"), 4));
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));
Thread.sleep(2000); Thread.sleep(2000);
List<WebElement> publishButtons = user.getDriver().findElements(By.className("publish-btn")); List<WebElement> publishButtons = user.getDriver().findElements(By.className("pub-btn"));
for (WebElement el : publishButtons) { for (WebElement el : publishButtons) {
el.click(); el.click();
} }
user.getEventManager().waitUntilEventReaches("streamDestroyed", 4); user.getEventManager().waitUntilEventReaches("streamDestroyed", 4);
user.getWaiter().until(ExpectedConditions.numberOfElementsToBe(By.tagName("video"), 0)); for (WebElement video : user.getDriver().findElements(By.tagName("video"))) {
user.getWaiter()
.until(ExpectedConditions.not(ExpectedConditions.attributeToBeNotEmpty(video, "srcObject")));
Assert.assertFalse(user.getEventManager().hasMediaStream(video));
}
for (WebElement el : publishButtons) { for (WebElement el : publishButtons) {
el.click(); el.click();
Thread.sleep(1000); Thread.sleep(1000);
} }
user.getEventManager().waitUntilEventReaches("videoPlaying", 8); user.getEventManager().waitUntilEventReaches("streamCreated", 8);
user.getEventManager().waitUntilEventReaches("streamPlaying", 8);
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));
@ -618,32 +661,39 @@ 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("streamPlaying", (event) -> {
threadAssertions.add(((String) event.get("eventContent")).contains("CAMERA")); threadAssertions.add(((String) event.get("eventContent")).contains("CAMERA"));
}); });
user.getDriver().findElement(By.id("one2many-btn")).click(); user.getDriver().findElement(By.id("one2many-btn")).click();
Thread.sleep(2000); Thread.sleep(2000);
user.getEventManager().waitUntilEventReaches("videoPlaying", 2); user.getEventManager().waitUntilEventReaches("connectionCreated", 4);
user.getEventManager().off("videoPlaying"); user.getEventManager().waitUntilEventReaches("accessAllowed", 1);
user.getEventManager().waitUntilEventReaches("streamCreated", 2);
user.getEventManager().waitUntilEventReaches("streamPlaying", 2);
user.getEventManager().off("streamPlaying");
for (Iterator<Boolean> iter = threadAssertions.iterator(); iter.hasNext();) { for (Iterator<Boolean> iter = threadAssertions.iterator(); iter.hasNext();) {
Assert.assertTrue(iter.next()); Assert.assertTrue(iter.next());
iter.remove(); iter.remove();
} }
user.getWaiter().until(ExpectedConditions.numberOfElementsToBe(By.tagName("video"), 2));
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));
Thread.sleep(2000); Thread.sleep(2000);
// Second publication (only video (SCREEN)) // Second publication (only video (SCREEN))
user.getEventManager().on("videoPlaying", (event) -> { user.getEventManager().on("streamPlaying", (event) -> {
threadAssertions.add(((String) event.get("eventContent")).contains("SCREEN")); threadAssertions.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("streamDestroyed", 2);
user.getEventManager().off("videoPlaying"); user.getEventManager().waitUntilEventReaches("accessAllowed", 2);
user.getEventManager().waitUntilEventReaches("streamCreated", 4);
user.getEventManager().waitUntilEventReaches("streamPlaying", 4);
user.getEventManager().off("streamPlaying");
for (Iterator<Boolean> iter = threadAssertions.iterator(); iter.hasNext();) { for (Iterator<Boolean> iter = threadAssertions.iterator(); iter.hasNext();) {
Assert.assertTrue(iter.next()); Assert.assertTrue(iter.next());
iter.remove(); iter.remove();
@ -655,12 +705,15 @@ public class OpenViduTestAppE2eTest {
Thread.sleep(2000); Thread.sleep(2000);
// Third publication (audio + video [CAMERA]) // Third publication (audio + video [CAMERA])
user.getEventManager().on("videoPlaying", (event) -> { user.getEventManager().on("streamPlaying", (event) -> {
threadAssertions.add(((String) event.get("eventContent")).contains("CAMERA")); threadAssertions.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("streamDestroyed", 4);
user.getEventManager().off("videoPlaying"); user.getEventManager().waitUntilEventReaches("accessAllowed", 3);
user.getEventManager().waitUntilEventReaches("streamCreated", 6);
user.getEventManager().waitUntilEventReaches("streamPlaying", 6);
user.getEventManager().off("streamPlaying");
for (Iterator<Boolean> iter = threadAssertions.iterator(); iter.hasNext();) { for (Iterator<Boolean> iter = threadAssertions.iterator(); iter.hasNext();) {
Assert.assertTrue(iter.next()); Assert.assertTrue(iter.next());
iter.remove(); iter.remove();
@ -686,19 +739,18 @@ public class OpenViduTestAppE2eTest {
user.getEventManager().waitUntilEventReaches("connectionCreated", 1); user.getEventManager().waitUntilEventReaches("connectionCreated", 1);
user.getEventManager().waitUntilEventReaches("accessAllowed", 1); user.getEventManager().waitUntilEventReaches("accessAllowed", 1);
user.getEventManager().waitUntilEventReaches("videoElementCreated", 1); user.getEventManager().waitUntilEventReaches("streamCreated", 1);
user.getEventManager().waitUntilEventReaches("videoPlaying", 1); user.getEventManager().waitUntilEventReaches("streamPlaying", 1);
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));
WebElement recordBtn = user.getDriver().findElements(By.className("publisher-rec-btn")).get(0); WebElement recordBtn = user.getDriver().findElements(By.className("publisher-rec-btn")).get(0);
WebElement pauseRecordBtn = user.getDriver().findElements(By.className("publisher-rec-pause-btn")).get(0);
recordBtn.click(); recordBtn.click();
Thread.sleep(2000); Thread.sleep(2000);
WebElement pauseRecordBtn = user.getDriver().findElements(By.className("publisher-rec-pause-btn")).get(0);
pauseRecordBtn.click(); pauseRecordBtn.click();
Thread.sleep(2000); Thread.sleep(2000);
@ -732,11 +784,11 @@ public class OpenViduTestAppE2eTest {
final String sessionName = "RECORDED_SESSION"; final String sessionName = "RECORDED_SESSION";
user.getDriver().findElement(By.id("add-user-btn")).click(); user.getDriver().findElement(By.id("add-user-btn")).click();
user.getDriver().findElement(By.id("session-name-input")).clear(); user.getDriver().findElement(By.id("session-name-input-0")).clear();
user.getDriver().findElement(By.id("session-name-input")).sendKeys(sessionName); user.getDriver().findElement(By.id("session-name-input-0")).sendKeys(sessionName);
// Try to record a non-existing session // Try to record a non-existing session
user.getDriver().findElement(By.id("session-api-btn")).click(); user.getDriver().findElement(By.id("session-api-btn-0")).click();
Thread.sleep(1000); Thread.sleep(1000);
user.getDriver().findElement(By.id("start-recording-btn")).click(); user.getDriver().findElement(By.id("start-recording-btn")).click();
user.getWaiter() user.getWaiter()
@ -749,13 +801,13 @@ public class OpenViduTestAppE2eTest {
user.getEventManager().waitUntilEventReaches("connectionCreated", 1); user.getEventManager().waitUntilEventReaches("connectionCreated", 1);
user.getEventManager().waitUntilEventReaches("accessAllowed", 1); user.getEventManager().waitUntilEventReaches("accessAllowed", 1);
user.getEventManager().waitUntilEventReaches("videoElementCreated", 1); user.getEventManager().waitUntilEventReaches("streamCreated", 1);
user.getEventManager().waitUntilEventReaches("videoPlaying", 1); user.getEventManager().waitUntilEventReaches("streamPlaying", 1);
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("session-api-btn")).click(); user.getDriver().findElement(By.id("session-api-btn-0")).click();
Thread.sleep(1000); Thread.sleep(1000);
user.getDriver().findElement(By.id("start-recording-btn")).click(); user.getDriver().findElement(By.id("start-recording-btn")).click();

View File

@ -67,7 +67,7 @@ public class BrowserUser {
protected void configureDriver() { protected void configureDriver() {
this.waiter = new WebDriverWait(this.driver, this.timeOfWaitInSeconds); this.waiter = new WebDriverWait(this.driver, this.timeOfWaitInSeconds);
this.eventManager = new OpenViduEventManager(this.driver, this.waiter, this.timeOfWaitInSeconds); this.eventManager = new OpenViduEventManager(this.driver, this.timeOfWaitInSeconds);
} }
public void dispose() { public void dispose() {