snapshot of https://github.com/jitsi/jitsi-meet.git @ fd1749dd28f4138aa80234fc7f311b19aaffa0e7 (2026-09-15)
This commit is contained in:
155
tests/specs/iframe/chat.spec.ts
Normal file
155
tests/specs/iframe/chat.spec.ts
Normal file
@@ -0,0 +1,155 @@
|
||||
import type { Participant } from '../../helpers/Participant';
|
||||
import { setTestProperties } from '../../helpers/TestProperties';
|
||||
import { config as testsConfig } from '../../helpers/TestsConfig';
|
||||
import { joinMuc } from '../../helpers/joinMuc';
|
||||
|
||||
import { checkIframeApi } from './util';
|
||||
|
||||
setTestProperties(__filename, {
|
||||
usesBrowsers: [ 'p1', 'p2' ]
|
||||
});
|
||||
|
||||
describe('Chat', () => {
|
||||
let p1: Participant, p2: Participant;
|
||||
|
||||
it('setup', async () => {
|
||||
p1 = await joinMuc({ name: 'p1', iFrameApi: true, token: testsConfig.jwt.preconfiguredToken });
|
||||
if (!await checkIframeApi(p1)) {
|
||||
return;
|
||||
}
|
||||
p2 = await joinMuc({ name: 'p2', iFrameApi: true });
|
||||
|
||||
await p1.switchToMainFrame();
|
||||
await p2.switchToMainFrame();
|
||||
});
|
||||
|
||||
it('send message', async () => {
|
||||
await p2.getIframeAPI().addEventListener('chatUpdated');
|
||||
await p2.getIframeAPI().addEventListener('incomingMessage');
|
||||
await p1.getIframeAPI().addEventListener('outgoingMessage');
|
||||
|
||||
const testMessage = 'Hello world';
|
||||
|
||||
await p1.getIframeAPI().executeCommand('sendChatMessage', testMessage);
|
||||
|
||||
const chatUpdatedEvent: {
|
||||
isOpen: boolean;
|
||||
unreadCount: number;
|
||||
} = await p2.driver.waitUntil(() => p2.getIframeAPI().getEventResult('chatUpdated'), {
|
||||
timeout: 3000,
|
||||
timeoutMsg: 'Chat was not updated'
|
||||
});
|
||||
|
||||
expect(chatUpdatedEvent).toEqual({
|
||||
isOpen: false,
|
||||
unreadCount: 1
|
||||
});
|
||||
|
||||
const incomingMessageEvent: {
|
||||
from: string;
|
||||
message: string;
|
||||
nick: string;
|
||||
privateMessage: boolean;
|
||||
} = await p2.getIframeAPI().getEventResult('incomingMessage');
|
||||
|
||||
expect(incomingMessageEvent).toMatchObject({
|
||||
from: await p1.getEndpointId(),
|
||||
message: testMessage,
|
||||
nick: p1.name,
|
||||
privateMessage: false
|
||||
});
|
||||
|
||||
const outgoingMessageEvent: {
|
||||
message: string;
|
||||
privateMessage: boolean;
|
||||
} = await p1.getIframeAPI().getEventResult('outgoingMessage');
|
||||
|
||||
expect(outgoingMessageEvent).toEqual({
|
||||
message: testMessage,
|
||||
privateMessage: false
|
||||
});
|
||||
|
||||
await p1.getIframeAPI().clearEventResults('outgoingMessage');
|
||||
await p2.getIframeAPI().clearEventResults('chatUpdated');
|
||||
await p2.getIframeAPI().clearEventResults('incomingMessage');
|
||||
});
|
||||
|
||||
it('toggle chat', async () => {
|
||||
await p2.getIframeAPI().executeCommand('toggleChat');
|
||||
|
||||
await testSendGroupMessageWithChatOpen(p1, p2);
|
||||
|
||||
await p1.getIframeAPI().clearEventResults('outgoingMessage');
|
||||
await p2.getIframeAPI().clearEventResults('chatUpdated');
|
||||
await p2.getIframeAPI().clearEventResults('incomingMessage');
|
||||
});
|
||||
|
||||
it('private chat', async () => {
|
||||
const testMessage = 'Hello private world!';
|
||||
|
||||
await p1.getIframeAPI().executeCommand('initiatePrivateChat', await p2.getEndpointId());
|
||||
await p1.getIframeAPI().executeCommand('sendChatMessage', testMessage, await p2.getEndpointId());
|
||||
|
||||
const incomingMessageEvent = await p2.driver.waitUntil(
|
||||
() => p2.getIframeAPI().getEventResult('incomingMessage'), {
|
||||
timeout: 3000,
|
||||
timeoutMsg: 'Chat was not received'
|
||||
});
|
||||
|
||||
expect(incomingMessageEvent).toMatchObject({
|
||||
from: await p1.getEndpointId(),
|
||||
message: testMessage,
|
||||
nick: p1.name,
|
||||
privateMessage: true
|
||||
});
|
||||
|
||||
expect(await p1.getIframeAPI().getEventResult('outgoingMessage')).toEqual({
|
||||
message: testMessage,
|
||||
privateMessage: true
|
||||
});
|
||||
|
||||
await p1.getIframeAPI().executeCommand('cancelPrivateChat');
|
||||
|
||||
await p2.getIframeAPI().clearEventResults('chatUpdated');
|
||||
await p2.getIframeAPI().clearEventResults('incomingMessage');
|
||||
|
||||
await testSendGroupMessageWithChatOpen(p1, p2);
|
||||
});
|
||||
});
|
||||
|
||||
/**
|
||||
* Send a group message from [sender], verify that it was received correctly by [receiver].
|
||||
* @param sender the Participant that sends the message.
|
||||
* @param receiver the Participant that receives the message.
|
||||
*/
|
||||
async function testSendGroupMessageWithChatOpen(sender: Participant, receiver: Participant) {
|
||||
const testMessage = 'Hello world again';
|
||||
|
||||
await sender.getIframeAPI().executeCommand('sendChatMessage', testMessage);
|
||||
|
||||
const chatUpdatedEvent: {
|
||||
isOpen: boolean;
|
||||
unreadCount: number;
|
||||
} = await receiver.driver.waitUntil(() => receiver.getIframeAPI().getEventResult('chatUpdated'), {
|
||||
timeout: 3000,
|
||||
timeoutMsg: 'Chat was not updated'
|
||||
});
|
||||
|
||||
expect(chatUpdatedEvent).toEqual({
|
||||
isOpen: true,
|
||||
unreadCount: 0
|
||||
});
|
||||
|
||||
const incomingMessageEvent = await receiver.driver.waitUntil(
|
||||
() => receiver.getIframeAPI().getEventResult('incomingMessage'), {
|
||||
timeout: 3000,
|
||||
timeoutMsg: 'Chat was not received'
|
||||
});
|
||||
|
||||
expect(incomingMessageEvent).toMatchObject({
|
||||
from: await sender.getEndpointId(),
|
||||
message: testMessage,
|
||||
nick: sender.name,
|
||||
privateMessage: false
|
||||
});
|
||||
}
|
||||
Reference in New Issue
Block a user