openvidu/frontend/tests/e2e/auth.test.ts
2025-03-10 19:25:11 +01:00

149 lines
4.3 KiB
TypeScript

import { expect } from 'chai';
import { Builder, WebDriver, WebElement } from 'selenium-webdriver';
import { OpenViduCallConfig } from './selenium.conf';
import { OpenViduCallPO } from './utils.po';
const url = OpenViduCallConfig.appUrl;
describe('Testing AUTHENTICATION', () => {
let browser: WebDriver;
let utils: OpenViduCallPO;
async function createChromeBrowser(): Promise<WebDriver> {
return await new Builder()
.forBrowser(OpenViduCallConfig.browserName)
.withCapabilities(OpenViduCallConfig.browserCapabilities)
.setChromeOptions(OpenViduCallConfig.browserOptions)
.usingServer(OpenViduCallConfig.seleniumAddress)
.build();
}
beforeEach(async () => {
browser = await createChromeBrowser();
utils = new OpenViduCallPO(browser);
});
afterEach(async () => {
// console.log(`data:image/png;base64,${await browser.takeScreenshot()}`);
await browser.quit();
});
it('should show the login form with join button disabled', async () => {
await browser.get(url);
let element: WebElement = await utils.waitForElement('#slogan-text');
expect(await element.getText()).to.be.equal('Videoconference rooms in one click');
await utils.checkLoginFormIsPresent();
element = await utils.waitForElement('#join-btn');
expect(await element.isEnabled()).to.be.false;
});
it('should show an error when login with WRONG CREDENTIALS', async () => {
await browser.get(url);
let element: WebElement = await utils.waitForElement('#slogan-text');
expect(await element.getText()).to.be.equal('Videoconference rooms in one click');
await utils.login('user-fail', 'user-fail');
element = await utils.waitForElement('#login-error');
expect(await element.getText()).to.be.equal('Authentication failed. Try again.');
});
it('should show be able to login', async () => {
await browser.get(url);
const element: WebElement = await utils.waitForElement('#slogan-text');
expect(await element.getText()).to.be.equal('Videoconference rooms in one click');
await utils.login('user', 'user');
await utils.waitForElement('#form-room');
expect(await utils.isPresent('prejoin-container')).to.be.false;
await utils.waitForElement('#join-btn');
expect(await utils.isPresent('#join-btn')).to.be.true;
});
it('should do LOGOUT and show the LOGIN FORM when logout button is clicked', async () => {
await browser.get(url);
await utils.waitForElement('#slogan-text');
await utils.login('user', 'user');
await utils.waitForElement('#form-room');
const element = await utils.waitForElement('#logout-content span');
expect(await element.getText()).equal('Hi user, do you want to logout?');
await utils.clickOn('#logout-btn');
await utils.checkLoginFormIsPresent();
expect(await utils.isPresent('#logout-btn')).to.be.false;
await browser.navigate().refresh();
await utils.waitForElement('#slogan-text');
expect(await utils.isPresent('#logout-btn')).to.be.false;
});
it('should be able to do login and join room', async () => {
await browser.get(url);
await utils.waitForElement('#slogan-text');
await utils.waitForElement('#form-login');
await utils.login('user', 'user');
await utils.waitForElement('#form-room');
expect(await utils.isPresent('#prejoin-container')).to.be.false;
await utils.clickOn('#join-btn');
await utils.checkPrejoinIsPresent();
});
it('should redirect to login page if try to force the url without be logged', async () => {
await browser.get(`${url}testSession`);
await utils.waitForElement('#slogan-text');
await utils.waitForElement('#form-login');
expect(await utils.isPresent('#form-room')).to.be.false;
await utils.waitForElement('#login-username');
await utils.waitForElement('#login-password');
const element = await utils.waitForElement('#join-btn');
expect(await element.isEnabled()).to.be.false;
});
it('should show the prejoin page when reloading the page', async () => {
await browser.get(`${url}`);
await utils.waitForElement('#slogan-text');
await utils.waitForElement('#form-login');
await utils.login('user', 'user');
await utils.waitForElement('#form-room');
expect(await utils.isPresent('#prejoin-container')).to.be.false;
await utils.clickOn('#join-btn');
await utils.checkPrejoinIsPresent();
await browser.navigate().refresh();
await utils.checkPrejoinIsPresent();
});
});