mirror of https://github.com/OpenVidu/openvidu.git
openvidu-test-e2e: identify testapp user on each openvidu-browser event
parent
6bc8c31af1
commit
0621f205c5
|
@ -268,7 +268,8 @@ public class OpenViduEventManager {
|
||||||
|
|
||||||
private void emitEvents() {
|
private void emitEvents() {
|
||||||
while (!this.eventQueue.isEmpty()) {
|
while (!this.eventQueue.isEmpty()) {
|
||||||
JsonObject event = this.eventQueue.poll();
|
JsonObject userAndEvent = this.eventQueue.poll();
|
||||||
|
final JsonObject event = userAndEvent.get("event").getAsJsonObject();
|
||||||
final String eventType = event.get("type").getAsString();
|
final String eventType = event.get("type").getAsString();
|
||||||
|
|
||||||
log.info(eventType);
|
log.info(eventType);
|
||||||
|
@ -291,7 +292,8 @@ public class OpenViduEventManager {
|
||||||
|
|
||||||
String[] events = rawEvents.replaceFirst("^<br>", "").split("<br>");
|
String[] events = rawEvents.replaceFirst("^<br>", "").split("<br>");
|
||||||
for (String e : events) {
|
for (String e : events) {
|
||||||
JsonObject event = JsonParser.parseString(e).getAsJsonObject();
|
JsonObject userAndEvent = JsonParser.parseString(e).getAsJsonObject();
|
||||||
|
final JsonObject event = userAndEvent.get("event").getAsJsonObject();
|
||||||
final String eventType = event.get("type").getAsString();
|
final String eventType = event.get("type").getAsString();
|
||||||
|
|
||||||
this.eventQueue.add(event);
|
this.eventQueue.add(event);
|
||||||
|
|
|
@ -24,6 +24,7 @@ import org.apache.commons.io.FileUtils;
|
||||||
import org.apache.http.HttpStatus;
|
import org.apache.http.HttpStatus;
|
||||||
import org.junit.Assert;
|
import org.junit.Assert;
|
||||||
import org.junit.jupiter.api.AfterEach;
|
import org.junit.jupiter.api.AfterEach;
|
||||||
|
import org.openqa.selenium.By;
|
||||||
import org.openqa.selenium.TakesScreenshot;
|
import org.openqa.selenium.TakesScreenshot;
|
||||||
import org.openqa.selenium.WebDriver;
|
import org.openqa.selenium.WebDriver;
|
||||||
import org.openqa.selenium.WebElement;
|
import org.openqa.selenium.WebElement;
|
||||||
|
@ -686,4 +687,19 @@ public class OpenViduTestE2e {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
protected void waitUntilUserHasEventsPresent(BrowserUser user, int numberOfUser, String eventType,
|
||||||
|
int numberOfEvents) {
|
||||||
|
user.getWaiter().until(d -> {
|
||||||
|
List<WebElement> elements = d.findElements(By.cssSelector("#openvidu-instance-" + numberOfUser
|
||||||
|
+ " .mat-expansion-panel .mat-expansion-panel-header .mat-content"));
|
||||||
|
long numberOfEventsOfRequiredType = elements.stream().filter(e -> eventType.equals(e.getText().trim()))
|
||||||
|
.count();
|
||||||
|
if (numberOfEvents == numberOfEventsOfRequiredType) {
|
||||||
|
return true;
|
||||||
|
} else {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -298,7 +298,7 @@ export class OpenviduInstanceComponent implements OnInit, OnChanges, OnDestroy {
|
||||||
updateEventList(eventName: string, eventContent: string, event: Event) {
|
updateEventList(eventName: string, eventContent: string, event: Event) {
|
||||||
const eventInterface: OpenViduEvent = { eventName, eventContent, event };
|
const eventInterface: OpenViduEvent = { eventName, eventContent, event };
|
||||||
this.events.push(eventInterface);
|
this.events.push(eventInterface);
|
||||||
this.testFeedService.pushNewEvent(event);
|
this.testFeedService.pushNewEvent({user: this.index, event});
|
||||||
}
|
}
|
||||||
|
|
||||||
toggleSubscribeTo(): void {
|
toggleSubscribeTo(): void {
|
||||||
|
@ -523,7 +523,16 @@ export class OpenviduInstanceComponent implements OnInit, OnChanges, OnDestroy {
|
||||||
}
|
}
|
||||||
if (this.sessionEvents.speechToTextMessage) {
|
if (this.sessionEvents.speechToTextMessage) {
|
||||||
this.session.on('speechToTextMessage', (event: SpeechToTextEvent) => {
|
this.session.on('speechToTextMessage', (event: SpeechToTextEvent) => {
|
||||||
this.updateEventList('speechToTextMessage', event.connection.connectionId, event);
|
const displayedContent = {
|
||||||
|
connection: event.connection.connectionId,
|
||||||
|
text: event.text,
|
||||||
|
reason: event.reason,
|
||||||
|
lang: event.lang
|
||||||
|
}
|
||||||
|
this.updateEventList('speechToTextMessage', JSON.stringify(displayedContent), event);
|
||||||
|
if (event.reason === 'recognized') {
|
||||||
|
console.warn(event);
|
||||||
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -108,7 +108,7 @@ export class TestScenariosComponent implements OnInit, OnDestroy {
|
||||||
|
|
||||||
this.eventsInfoSubscription = this.testFeedService.newLastEvent$.subscribe(
|
this.eventsInfoSubscription = this.testFeedService.newLastEvent$.subscribe(
|
||||||
newEvent => {
|
newEvent => {
|
||||||
(window as any).myEvents += ('<br>' + JSON.stringify(newEvent));
|
(window as any).myEvents += ('<br>' + this.testFeedService.stringifyEventNoCircularDependencies(newEvent));
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -4,8 +4,6 @@ import { OpenviduParamsService } from '../../services/openvidu-params.service';
|
||||||
import { TestFeedService } from '../../services/test-feed.service';
|
import { TestFeedService } from '../../services/test-feed.service';
|
||||||
import { SessionConf } from '../openvidu-instance/openvidu-instance.component';
|
import { SessionConf } from '../openvidu-instance/openvidu-instance.component';
|
||||||
|
|
||||||
var stringify = require('json-stringify-safe');
|
|
||||||
|
|
||||||
@Component({
|
@Component({
|
||||||
selector: 'app-test-sessions',
|
selector: 'app-test-sessions',
|
||||||
templateUrl: './test-sessions.component.html',
|
templateUrl: './test-sessions.component.html',
|
||||||
|
@ -41,7 +39,7 @@ export class TestSessionsComponent implements OnInit, OnDestroy {
|
||||||
|
|
||||||
this.eventsInfoSubscription = this.testFeedService.newLastEvent$.subscribe(
|
this.eventsInfoSubscription = this.testFeedService.newLastEvent$.subscribe(
|
||||||
newEvent => {
|
newEvent => {
|
||||||
(window as any).myEvents += ('<br>' + this.stringifyEventNoCircularDependencies(newEvent));
|
(window as any).myEvents += ('<br>' + this.testFeedService.stringifyEventNoCircularDependencies(newEvent));
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -103,15 +101,4 @@ export class TestSessionsComponent implements OnInit, OnDestroy {
|
||||||
this.loadSubs(subs);
|
this.loadSubs(subs);
|
||||||
}
|
}
|
||||||
|
|
||||||
stringifyEventNoCircularDependencies(event: Event): string {
|
|
||||||
return stringify(event, (key, value) => {
|
|
||||||
// Remove unnecessary properties
|
|
||||||
if (key == 'ee' || key == 'openvidu' || key == 'userHandlerArrowHandler' || key == 'handlers') {
|
|
||||||
return
|
|
||||||
} else {
|
|
||||||
return value;
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -3,10 +3,12 @@ import { Subject } from 'rxjs';
|
||||||
|
|
||||||
import { Event } from 'openvidu-browser';
|
import { Event } from 'openvidu-browser';
|
||||||
|
|
||||||
|
var stringify = require('json-stringify-safe');
|
||||||
|
|
||||||
@Injectable()
|
@Injectable()
|
||||||
export class TestFeedService {
|
export class TestFeedService {
|
||||||
|
|
||||||
lastEvent: Event;
|
lastEvent: { user: number, event: Event };
|
||||||
newLastEvent$ = new Subject<any>();
|
newLastEvent$ = new Subject<any>();
|
||||||
|
|
||||||
constructor() { }
|
constructor() { }
|
||||||
|
@ -15,9 +17,20 @@ export class TestFeedService {
|
||||||
return this.lastEvent;
|
return this.lastEvent;
|
||||||
}
|
}
|
||||||
|
|
||||||
pushNewEvent(event: Event) {
|
pushNewEvent({ user: number, event: Event }) {
|
||||||
this.lastEvent = event;
|
this.lastEvent = { user: number, event: Event };
|
||||||
this.newLastEvent$.next(this.lastEvent);
|
this.newLastEvent$.next(this.lastEvent);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
stringifyEventNoCircularDependencies(event: Event): string {
|
||||||
|
return stringify(event, (key, value) => {
|
||||||
|
// Remove unnecessary properties
|
||||||
|
if (key == 'ee' || key == 'openvidu' || key == 'userHandlerArrowHandler' || key == 'handlers') {
|
||||||
|
return
|
||||||
|
} else {
|
||||||
|
return value;
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue