This commit is contained in:
33
tests/specs/alone/chatPanel.spec.ts
Normal file
33
tests/specs/alone/chatPanel.spec.ts
Normal file
@@ -0,0 +1,33 @@
|
||||
import { ensureOneParticipant } from '../../helpers/participants';
|
||||
|
||||
describe('Chat Panel', () => {
|
||||
it('join participant', () => ensureOneParticipant());
|
||||
|
||||
it('start closed', async () => {
|
||||
expect(await ctx.p1.getChatPanel().isOpen()).toBe(false);
|
||||
});
|
||||
it('open', async () => {
|
||||
const { p1 } = ctx;
|
||||
|
||||
await p1.getToolbar().clickChatButton();
|
||||
expect(await p1.getChatPanel().isOpen()).toBe(true);
|
||||
});
|
||||
it('use shortcut to close', async () => {
|
||||
const chatPanel = ctx.p1.getChatPanel();
|
||||
|
||||
await chatPanel.pressShortcut();
|
||||
expect(await chatPanel.isOpen()).toBe(false);
|
||||
});
|
||||
it('use shortcut to open', async () => {
|
||||
const chatPanel = ctx.p1.getChatPanel();
|
||||
|
||||
await chatPanel.pressShortcut();
|
||||
expect(await chatPanel.isOpen()).toBe(true);
|
||||
});
|
||||
it('use button to open', async () => {
|
||||
const { p1 } = ctx;
|
||||
|
||||
await p1.getToolbar().clickCloseChatButton();
|
||||
expect(await p1.getChatPanel().isOpen()).toBe(false);
|
||||
});
|
||||
});
|
||||
59
tests/specs/alone/dialInAudio.spec.ts
Normal file
59
tests/specs/alone/dialInAudio.spec.ts
Normal file
@@ -0,0 +1,59 @@
|
||||
import process from 'node:process';
|
||||
|
||||
import { ensureOneParticipant } from '../../helpers/participants';
|
||||
import { cleanup, dialIn, isDialInEnabled, waitForAudioFromDialInParticipant } from '../helpers/DialIn';
|
||||
|
||||
describe('Dial-In', () => {
|
||||
it('join participant', async () => {
|
||||
// check rest url is configured
|
||||
if (!process.env.DIAL_IN_REST_URL) {
|
||||
ctx.skipSuiteTests = true;
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
await ensureOneParticipant({ preferGenerateToken: true });
|
||||
|
||||
// check dial-in is enabled
|
||||
if (!await isDialInEnabled(ctx.p1)) {
|
||||
ctx.skipSuiteTests = true;
|
||||
}
|
||||
});
|
||||
|
||||
it('retrieve pin', async () => {
|
||||
let dialInPin: string;
|
||||
|
||||
try {
|
||||
dialInPin = await ctx.p1.getDialInPin();
|
||||
} catch (e) {
|
||||
console.error('dial-in.test.no-pin');
|
||||
ctx.skipSuiteTests = true;
|
||||
throw e;
|
||||
}
|
||||
|
||||
if (dialInPin.length === 0) {
|
||||
console.error('dial-in.test.no-pin');
|
||||
ctx.skipSuiteTests = true;
|
||||
throw new Error('no pin');
|
||||
}
|
||||
|
||||
expect(dialInPin.length >= 8).toBe(true);
|
||||
});
|
||||
|
||||
it('invite dial-in participant', async () => {
|
||||
await dialIn(ctx.p1);
|
||||
});
|
||||
|
||||
it('wait for audio from dial-in participant', async () => {
|
||||
const { p1 } = ctx;
|
||||
|
||||
if (!await p1.isInMuc()) {
|
||||
// local participant did not join abort
|
||||
return;
|
||||
}
|
||||
|
||||
await waitForAudioFromDialInParticipant(p1);
|
||||
|
||||
await cleanup(p1);
|
||||
});
|
||||
});
|
||||
85
tests/specs/alone/invite.spec.ts
Normal file
85
tests/specs/alone/invite.spec.ts
Normal file
@@ -0,0 +1,85 @@
|
||||
import { ensureOneParticipant } from '../../helpers/participants';
|
||||
import { isDialInEnabled } from '../helpers/DialIn';
|
||||
|
||||
describe('Invite', () => {
|
||||
it('join participant', () => ensureOneParticipant({ preferGenerateToken: true }));
|
||||
|
||||
it('url displayed', async () => {
|
||||
const { p1 } = ctx;
|
||||
const inviteDialog = p1.getInviteDialog();
|
||||
|
||||
await inviteDialog.open();
|
||||
await inviteDialog.waitTillOpen();
|
||||
|
||||
const driverUrl = await p1.driver.getUrl();
|
||||
|
||||
expect(driverUrl.includes(await inviteDialog.getMeetingURL())).toBe(true);
|
||||
|
||||
await inviteDialog.clickCloseButton();
|
||||
|
||||
await inviteDialog.waitTillOpen(true);
|
||||
});
|
||||
|
||||
it('dial-in displayed', async () => {
|
||||
const { p1 } = ctx;
|
||||
|
||||
if (!await isDialInEnabled(p1)) {
|
||||
return;
|
||||
}
|
||||
|
||||
const inviteDialog = p1.getInviteDialog();
|
||||
|
||||
await inviteDialog.open();
|
||||
await inviteDialog.waitTillOpen();
|
||||
|
||||
expect((await inviteDialog.getDialInNumber()).length > 0).toBe(true);
|
||||
expect((await inviteDialog.getPinNumber()).length > 0).toBe(true);
|
||||
});
|
||||
|
||||
it('view more numbers', async () => {
|
||||
const { p1 } = ctx;
|
||||
|
||||
if (!await isDialInEnabled(p1)) {
|
||||
return;
|
||||
}
|
||||
|
||||
const inviteDialog = p1.getInviteDialog();
|
||||
|
||||
await inviteDialog.open();
|
||||
await inviteDialog.waitTillOpen();
|
||||
|
||||
const windows = await p1.driver.getWindowHandles();
|
||||
|
||||
expect(windows.length).toBe(1);
|
||||
|
||||
const meetingWindow = windows[0];
|
||||
|
||||
const displayedNumber = await inviteDialog.getDialInNumber();
|
||||
const displayedPin = await inviteDialog.getPinNumber();
|
||||
|
||||
await inviteDialog.openDialInNumbersPage();
|
||||
|
||||
const newWindow = (await p1.driver.getWindowHandles()).filter(w => w !== meetingWindow);
|
||||
|
||||
expect(newWindow.length).toBe(1);
|
||||
|
||||
const moreNumbersWindow = newWindow[0];
|
||||
|
||||
await p1.driver.switchWindow(moreNumbersWindow);
|
||||
|
||||
await browser.pause(10000);
|
||||
|
||||
await p1.driver.$('.dial-in-numbers-list').waitForExist();
|
||||
|
||||
const conferenceIdMessage = p1.driver.$('//div[contains(@class, "pinLabel")]');
|
||||
|
||||
expect((await conferenceIdMessage.getText()).replace(/ /g, '').includes(displayedPin)).toBe(true);
|
||||
|
||||
const numbers = p1.driver.$$('.dial-in-number');
|
||||
|
||||
const nums = await numbers.filter(
|
||||
async el => (await el.getText()).trim() === displayedNumber);
|
||||
|
||||
expect(nums.length).toBe(1);
|
||||
});
|
||||
});
|
||||
46
tests/specs/alone/lockRoomDigitsOnly.spec.ts
Normal file
46
tests/specs/alone/lockRoomDigitsOnly.spec.ts
Normal file
@@ -0,0 +1,46 @@
|
||||
import { ensureOneParticipant } from '../../helpers/participants';
|
||||
|
||||
/**
|
||||
* Tests that the digits only password feature works.
|
||||
*
|
||||
* 1. Lock the room with a string (shouldn't work)
|
||||
* 2. Lock the room with a valid numeric password (should work)
|
||||
*/
|
||||
describe('Lock Room with Digits only', () => {
|
||||
it('join participant', () => ensureOneParticipant({
|
||||
configOverwrite: {
|
||||
roomPasswordNumberOfDigits: 5
|
||||
}
|
||||
}));
|
||||
|
||||
it('lock room with digits only', async () => {
|
||||
const { p1 } = ctx;
|
||||
|
||||
expect(await p1.execute(
|
||||
() => APP.store.getState()['features/base/config'].roomPasswordNumberOfDigits === 5)).toBe(true);
|
||||
|
||||
const p1SecurityDialog = p1.getSecurityDialog();
|
||||
|
||||
await p1.getToolbar().clickSecurityButton();
|
||||
await p1SecurityDialog.waitForDisplay();
|
||||
|
||||
expect(await p1SecurityDialog.isLocked()).toBe(false);
|
||||
|
||||
// Set a non-numeric password.
|
||||
await p1SecurityDialog.addPassword('AAAAA');
|
||||
|
||||
expect(await p1SecurityDialog.isLocked()).toBe(false);
|
||||
await p1SecurityDialog.clickCloseButton();
|
||||
|
||||
await p1.getToolbar().clickSecurityButton();
|
||||
await p1SecurityDialog.waitForDisplay();
|
||||
|
||||
await p1SecurityDialog.addPassword('12345');
|
||||
await p1SecurityDialog.clickCloseButton();
|
||||
|
||||
await p1.getToolbar().clickSecurityButton();
|
||||
await p1SecurityDialog.waitForDisplay();
|
||||
|
||||
expect(await p1SecurityDialog.isLocked()).toBe(true);
|
||||
});
|
||||
});
|
||||
27
tests/specs/alone/videoLayout.spec.ts
Normal file
27
tests/specs/alone/videoLayout.spec.ts
Normal file
@@ -0,0 +1,27 @@
|
||||
import { ensureOneParticipant } from '../../helpers/participants';
|
||||
|
||||
describe('Video Layout', () => {
|
||||
it('join participant', () => ensureOneParticipant());
|
||||
|
||||
it('check', async () => {
|
||||
const { p1 } = ctx;
|
||||
|
||||
const innerWidth = parseInt(await p1.execute('return window.innerWidth'), 10);
|
||||
const innerHeight = parseInt(await p1.execute('return window.innerHeight'), 10);
|
||||
|
||||
const largeVideo = p1.driver.$('//div[@id="largeVideoContainer"]');
|
||||
const filmstrip = p1.driver.$('//div[contains(@class, "filmstrip")]');
|
||||
let filmstripWidth;
|
||||
|
||||
if (!await filmstrip.isExisting() || !await filmstrip.isDisplayed()) {
|
||||
filmstripWidth = 0;
|
||||
} else {
|
||||
filmstripWidth = await filmstrip.getSize('width');
|
||||
}
|
||||
|
||||
const largeVideoSize = await largeVideo.getSize();
|
||||
|
||||
expect((largeVideoSize.width === (innerWidth - filmstripWidth)) || (largeVideoSize.height === innerHeight))
|
||||
.toBe(true);
|
||||
});
|
||||
});
|
||||
Reference in New Issue
Block a user