ov-components: enhance leaveRoom method with error handling and verification steps

master
Carlos Santos 2025-05-26 17:45:28 +02:00
parent b10bc5f8c6
commit 3f234276ee
2 changed files with 51 additions and 11 deletions

View File

@ -24,8 +24,9 @@ describe('Testing API Directives', () => {
afterEach(async () => { afterEach(async () => {
// console.log('data:image/png;base64,' + await browser.takeScreenshot()); // console.log('data:image/png;base64,' + await browser.takeScreenshot());
try { try {
// leaving room if connected if (await utils.isPresent('#session-container')) {
await utils.leaveRoom(); await utils.leaveRoom();
}
} catch (error) {} } catch (error) {}
await browser.sleep(500); await browser.sleep(500);
await browser.quit(); await browser.quit();
@ -201,7 +202,7 @@ describe('Testing API Directives', () => {
expect(await utils.isPresent('#token-error')).toBeTrue(); expect(await utils.isPresent('#token-error')).toBeTrue();
}); });
it('should show the token error WITHOUT prejoin page', async () => { fit('should show the token error WITHOUT prejoin page', async () => {
const fixedUrl = `${url}&roomName=TOKEN_ERROR&prejoin=false&participantName=PNAME`; const fixedUrl = `${url}&roomName=TOKEN_ERROR&prejoin=false&participantName=PNAME`;
await browser.get(`${fixedUrl}`); await browser.get(`${fixedUrl}`);
@ -221,7 +222,7 @@ describe('Testing API Directives', () => {
expect(await utils.isPresent('#openvidu-dialog')).toBeTrue(); expect(await utils.isPresent('#openvidu-dialog')).toBeTrue();
}); });
it('should run the app with VIDEO DISABLED in prejoin page', async () => { fit('should run the app with VIDEO DISABLED in prejoin page', async () => {
await browser.get(`${url}&prejoin=true&videoEnabled=false`); await browser.get(`${url}&prejoin=true&videoEnabled=false`);
await utils.checkPrejoinIsPresent(); await utils.checkPrejoinIsPresent();
@ -239,13 +240,13 @@ describe('Testing API Directives', () => {
await utils.waitForElement('#videocam_off'); await utils.waitForElement('#videocam_off');
expect(await utils.isPresent('#videocam_off')).toBeTrue(); expect(await utils.isPresent('#videocam_off')).toBeTrue();
console.log('data:image/png;base64,' + await browser.takeScreenshot()); console.log('data:image/png;base64,' + (await browser.takeScreenshot()));
await utils.waitForElement('#video-poster'); await utils.waitForElement('#video-poster');
expect(await utils.getNumberOfElements('video')).toEqual(0); expect(await utils.getNumberOfElements('video')).toEqual(0);
}); });
it('should run the app with VIDEO DISABLED and WITHOUT PREJOIN page', async () => { fit('should run the app with VIDEO DISABLED and WITHOUT PREJOIN page', async () => {
await browser.get(`${url}&prejoin=false&videoEnabled=false`); await browser.get(`${url}&prejoin=false&videoEnabled=false`);
await utils.checkSessionIsPresent(); await utils.checkSessionIsPresent();
@ -261,7 +262,7 @@ describe('Testing API Directives', () => {
expect(await utils.isPresent('#videocam_off')).toBeTrue(); expect(await utils.isPresent('#videocam_off')).toBeTrue();
}); });
it('should run the app with AUDIO DISABLED in prejoin page', async () => { fit('should run the app with AUDIO DISABLED in prejoin page', async () => {
await browser.get(`${url}&audioEnabled=false`); await browser.get(`${url}&audioEnabled=false`);
await utils.checkPrejoinIsPresent(); await utils.checkPrejoinIsPresent();
@ -277,7 +278,7 @@ describe('Testing API Directives', () => {
await utils.clickOn('#join-button'); await utils.clickOn('#join-button');
await utils.checkSessionIsPresent(); await utils.checkSessionIsPresent();
console.log('data:image/png;base64,' + await browser.takeScreenshot()); console.log('data:image/png;base64,' + (await browser.takeScreenshot()));
expect(await utils.getNumberOfElements('video')).toEqual(1); expect(await utils.getNumberOfElements('video')).toEqual(1);
expect(await utils.getNumberOfElements('audio')).toEqual(0); expect(await utils.getNumberOfElements('audio')).toEqual(0);
@ -285,7 +286,7 @@ describe('Testing API Directives', () => {
expect(await utils.isPresent('#mic_off')).toBeTrue(); expect(await utils.isPresent('#mic_off')).toBeTrue();
}); });
it('should run the app with AUDIO DISABLED and WITHOUT PREJOIN page', async () => { fit('should run the app with AUDIO DISABLED and WITHOUT PREJOIN page', async () => {
await browser.get(`${url}&prejoin=false&audioEnabled=false`); await browser.get(`${url}&prejoin=false&audioEnabled=false`);
await browser.sleep(1000); await browser.sleep(1000);

View File

@ -137,8 +137,47 @@ export class OpenViduComponentsPO {
} }
async leaveRoom() { async leaveRoom() {
await this.clickOn('body'); try {
await this.clickOn('#leave-btn'); // Close any open panels or menus clicking on the body
await this.clickOn('body');
await this.browser.sleep(300);
// Verify that the leave button is present
await this.waitForElement('#leave-btn');
// Click on the leave button
await this.clickOn('#leave-btn');
// Verify that the session container is no longer present
await this.browser.wait(
async () => {
return !(await this.isPresent('#session-container'));
},
this.TIMEOUT,
'Session container should disappear after leaving room'
);
// Wait for the prejoin container to be present again
await this.browser.sleep(500);
// Verify that there are no video elements left in the DOM
const videoCount = await this.getNumberOfElements('video');
if (videoCount > 0) {
console.warn(`Warning: ${videoCount} video elements still present after leaving room`);
}
} catch (error) {
console.error('Error during leaveRoom:', error);
// Try to reload the page as a fallback
try {
await this.browser.executeScript('window.location.reload()');
await this.browser.sleep(2000);
} catch (reloadError) {
console.error('Failed to reload page as fallback:', reloadError);
}
throw error;
}
} }
async togglePanel(panelName: string) { async togglePanel(panelName: string) {