mirror of https://github.com/OpenVidu/openvidu.git
ov-components: enhance leaveRoom method with error handling and verification steps
parent
b10bc5f8c6
commit
3f234276ee
|
@ -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);
|
||||||
|
|
|
@ -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) {
|
||||||
|
|
Loading…
Reference in New Issue