From 0621f205c53f09c52dde9be9cdc67bd8417df784 Mon Sep 17 00:00:00 2001 From: pabloFuente Date: Tue, 8 Nov 2022 14:20:42 +0100 Subject: [PATCH] openvidu-test-e2e: identify testapp user on each openvidu-browser event --- .../test/e2e/OpenViduEventManager.java | 8 +++++--- .../io/openvidu/test/e2e/OpenViduTestE2e.java | 16 ++++++++++++++++ .../openvidu-instance.component.ts | 13 +++++++++++-- .../test-scenarios.component.ts | 4 ++-- .../test-sessions/test-sessions.component.ts | 15 +-------------- .../src/app/services/test-feed.service.ts | 19 ++++++++++++++++--- 6 files changed, 51 insertions(+), 24 deletions(-) diff --git a/openvidu-test-e2e/src/main/java/io/openvidu/test/e2e/OpenViduEventManager.java b/openvidu-test-e2e/src/main/java/io/openvidu/test/e2e/OpenViduEventManager.java index ea6a3246..4ebc175c 100644 --- a/openvidu-test-e2e/src/main/java/io/openvidu/test/e2e/OpenViduEventManager.java +++ b/openvidu-test-e2e/src/main/java/io/openvidu/test/e2e/OpenViduEventManager.java @@ -268,8 +268,9 @@ public class OpenViduEventManager { private void emitEvents() { while (!this.eventQueue.isEmpty()) { - JsonObject event = this.eventQueue.poll(); - final String eventType = event.get("type").getAsString(); + JsonObject userAndEvent = this.eventQueue.poll(); + final JsonObject event = userAndEvent.get("event").getAsJsonObject(); + final String eventType = event.get("type").getAsString(); log.info(eventType); @@ -291,7 +292,8 @@ public class OpenViduEventManager { String[] events = rawEvents.replaceFirst("^
", "").split("
"); 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(); this.eventQueue.add(event); diff --git a/openvidu-test-e2e/src/main/java/io/openvidu/test/e2e/OpenViduTestE2e.java b/openvidu-test-e2e/src/main/java/io/openvidu/test/e2e/OpenViduTestE2e.java index 5e9f20eb..e04c1964 100644 --- a/openvidu-test-e2e/src/main/java/io/openvidu/test/e2e/OpenViduTestE2e.java +++ b/openvidu-test-e2e/src/main/java/io/openvidu/test/e2e/OpenViduTestE2e.java @@ -24,6 +24,7 @@ import org.apache.commons.io.FileUtils; import org.apache.http.HttpStatus; import org.junit.Assert; import org.junit.jupiter.api.AfterEach; +import org.openqa.selenium.By; import org.openqa.selenium.TakesScreenshot; import org.openqa.selenium.WebDriver; 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 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; + } + }); + } + } diff --git a/openvidu-testapp/src/app/components/openvidu-instance/openvidu-instance.component.ts b/openvidu-testapp/src/app/components/openvidu-instance/openvidu-instance.component.ts index 10cae371..b4715822 100644 --- a/openvidu-testapp/src/app/components/openvidu-instance/openvidu-instance.component.ts +++ b/openvidu-testapp/src/app/components/openvidu-instance/openvidu-instance.component.ts @@ -298,7 +298,7 @@ export class OpenviduInstanceComponent implements OnInit, OnChanges, OnDestroy { updateEventList(eventName: string, eventContent: string, event: Event) { const eventInterface: OpenViduEvent = { eventName, eventContent, event }; this.events.push(eventInterface); - this.testFeedService.pushNewEvent(event); + this.testFeedService.pushNewEvent({user: this.index, event}); } toggleSubscribeTo(): void { @@ -523,7 +523,16 @@ export class OpenviduInstanceComponent implements OnInit, OnChanges, OnDestroy { } if (this.sessionEvents.speechToTextMessage) { 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); + } }); } } diff --git a/openvidu-testapp/src/app/components/test-scenarios/test-scenarios.component.ts b/openvidu-testapp/src/app/components/test-scenarios/test-scenarios.component.ts index 9e6fc072..176a2432 100644 --- a/openvidu-testapp/src/app/components/test-scenarios/test-scenarios.component.ts +++ b/openvidu-testapp/src/app/components/test-scenarios/test-scenarios.component.ts @@ -108,7 +108,7 @@ export class TestScenariosComponent implements OnInit, OnDestroy { this.eventsInfoSubscription = this.testFeedService.newLastEvent$.subscribe( newEvent => { - (window as any).myEvents += ('
' + JSON.stringify(newEvent)); + (window as any).myEvents += ('
' + this.testFeedService.stringifyEventNoCircularDependencies(newEvent)); }); } @@ -409,7 +409,7 @@ export class TestScenariosComponent implements OnInit, OnDestroy { }; report.serverEvents = streamInRemoteInfo.events; for (const ev of report.serverEvents) { - ev.timestamp = Number(ev.timestamp) - report.startTime; + ev.timestamp = Number(ev.timestamp) - report.startTime; } }); diff --git a/openvidu-testapp/src/app/components/test-sessions/test-sessions.component.ts b/openvidu-testapp/src/app/components/test-sessions/test-sessions.component.ts index 2a1f1388..9d0570da 100644 --- a/openvidu-testapp/src/app/components/test-sessions/test-sessions.component.ts +++ b/openvidu-testapp/src/app/components/test-sessions/test-sessions.component.ts @@ -4,8 +4,6 @@ import { OpenviduParamsService } from '../../services/openvidu-params.service'; import { TestFeedService } from '../../services/test-feed.service'; import { SessionConf } from '../openvidu-instance/openvidu-instance.component'; -var stringify = require('json-stringify-safe'); - @Component({ selector: 'app-test-sessions', templateUrl: './test-sessions.component.html', @@ -41,7 +39,7 @@ export class TestSessionsComponent implements OnInit, OnDestroy { this.eventsInfoSubscription = this.testFeedService.newLastEvent$.subscribe( newEvent => { - (window as any).myEvents += ('
' + this.stringifyEventNoCircularDependencies(newEvent)); + (window as any).myEvents += ('
' + this.testFeedService.stringifyEventNoCircularDependencies(newEvent)); }); } @@ -103,15 +101,4 @@ export class TestSessionsComponent implements OnInit, OnDestroy { 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; - } - }); - } - } diff --git a/openvidu-testapp/src/app/services/test-feed.service.ts b/openvidu-testapp/src/app/services/test-feed.service.ts index 7579547a..51850aeb 100644 --- a/openvidu-testapp/src/app/services/test-feed.service.ts +++ b/openvidu-testapp/src/app/services/test-feed.service.ts @@ -3,10 +3,12 @@ import { Subject } from 'rxjs'; import { Event } from 'openvidu-browser'; +var stringify = require('json-stringify-safe'); + @Injectable() export class TestFeedService { - lastEvent: Event; + lastEvent: { user: number, event: Event }; newLastEvent$ = new Subject(); constructor() { } @@ -15,9 +17,20 @@ export class TestFeedService { return this.lastEvent; } - pushNewEvent(event: Event) { - this.lastEvent = event; + pushNewEvent({ user: number, event: Event }) { + this.lastEvent = { user: number, event: Event }; 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; + } + }); + } + }