Some checks failed
Close stale issues and PRs / stale (push) Has been cancelled
139 lines
4.0 KiB
TypeScript
139 lines
4.0 KiB
TypeScript
import type { Participant } from '../../helpers/Participant';
|
|
import {
|
|
checkForScreensharingTile,
|
|
ensureOneParticipant,
|
|
ensureTwoParticipants,
|
|
joinSecondParticipant,
|
|
muteAudioAndCheck,
|
|
unmuteAudioAndCheck,
|
|
unmuteVideoAndCheck
|
|
} from '../../helpers/participants';
|
|
|
|
describe('Mute', () => {
|
|
it('joining the meeting', () => ensureTwoParticipants());
|
|
|
|
it('mute p1 and check', () => toggleMuteAndCheck(ctx.p1, ctx.p2, true));
|
|
|
|
it('unmute p1 and check', () => toggleMuteAndCheck(ctx.p1, ctx.p2, false));
|
|
|
|
it('mute p2 and check', () => toggleMuteAndCheck(ctx.p2, ctx.p1, true));
|
|
|
|
it('unmute p2 and check', () => toggleMuteAndCheck(ctx.p2, ctx.p1, false));
|
|
|
|
it('p1 mutes p2 and check', async () => {
|
|
const { p1, p2 } = ctx;
|
|
|
|
if (!await p1.isModerator()) {
|
|
return;
|
|
}
|
|
|
|
await p1.getFilmstrip().muteAudio(p2);
|
|
|
|
// and now check whether second participant is muted
|
|
await p2.getFilmstrip().assertAudioMuteIconIsDisplayed(p2);
|
|
});
|
|
|
|
it('p2 unmute after p1 mute and check', async () => {
|
|
const { p1, p2 } = ctx;
|
|
|
|
await unmuteAudioAndCheck(p2, p1);
|
|
});
|
|
|
|
it('p1 mutes before p2 joins', async () => {
|
|
await ctx.p2.hangup();
|
|
|
|
const { p1 } = ctx;
|
|
|
|
await p1.getToolbar().clickAudioMuteButton();
|
|
|
|
await ensureTwoParticipants();
|
|
|
|
const { p2 } = ctx;
|
|
|
|
await p2.getFilmstrip().assertAudioMuteIconIsDisplayed(p1);
|
|
|
|
await toggleMuteAndCheck(p1, p2, false);
|
|
});
|
|
|
|
it('mute before join and screen share after in p2p', () => muteP1BeforeP2JoinsAndScreenshare(true));
|
|
|
|
it('mute before join and screen share after with jvb', () => muteP1BeforeP2JoinsAndScreenshare(false));
|
|
});
|
|
|
|
/**
|
|
* Toggles the mute state of a specific Meet conference participant and
|
|
* verifies that a specific other Meet conference participants sees a
|
|
* specific mute state for the former.
|
|
* @param testee The participant whose mute state is to be toggled.
|
|
* @param observer The participant to verify the mute state of {@code testee}.
|
|
* @param muted the mute state of {@code testee} expected to be observed by {@code observer}.
|
|
*/
|
|
async function toggleMuteAndCheck(
|
|
testee: Participant,
|
|
observer: Participant,
|
|
muted: boolean) {
|
|
if (muted) {
|
|
await muteAudioAndCheck(testee, observer);
|
|
} else {
|
|
await unmuteAudioAndCheck(testee, observer);
|
|
}
|
|
}
|
|
|
|
/**
|
|
* Video mutes participant1 before participant2 joins and checks if participant1 can share or unmute video
|
|
* and that media is being received on participant2 in both the cases.
|
|
*
|
|
* @param p2p whether to enable p2p or not.
|
|
*/
|
|
async function muteP1BeforeP2JoinsAndScreenshare(p2p: boolean) {
|
|
await Promise.all([ ctx.p1?.hangup(), ctx.p2?.hangup() ]);
|
|
|
|
await ensureOneParticipant({
|
|
configOverwrite: {
|
|
p2p: {
|
|
enabled: p2p
|
|
}
|
|
}
|
|
});
|
|
|
|
const { p1 } = ctx;
|
|
|
|
await p1.getToolbar().clickVideoMuteButton();
|
|
|
|
await joinSecondParticipant({
|
|
configOverwrite: {
|
|
p2p: {
|
|
enabled: p2p
|
|
}
|
|
}
|
|
});
|
|
|
|
const { p2 } = ctx;
|
|
|
|
if (p2p) {
|
|
await p2.waitForP2PIceConnected();
|
|
} else {
|
|
await p2.waitForIceConnected();
|
|
}
|
|
|
|
await p2.waitForSendMedia();
|
|
|
|
// Check if p1 appears video muted on p2.
|
|
await p2.getParticipantsPane().assertVideoMuteIconIsDisplayed(p1);
|
|
|
|
// Start desktop share.
|
|
await p1.getToolbar().clickDesktopSharingButton();
|
|
|
|
await checkForScreensharingTile(p1, p2);
|
|
|
|
// we need to pass the id of the fake participant we use for the screensharing
|
|
await p2.waitForRemoteVideo(`${await p1.getEndpointId()}-v1`);
|
|
|
|
// Stop desktop share and unmute video and check for video again.
|
|
await p1.getToolbar().clickStopDesktopSharingButton();
|
|
|
|
await p2.getParticipantsPane().assertVideoMuteIconIsDisplayed(p1);
|
|
await unmuteVideoAndCheck(p1, p2);
|
|
await p2.waitForRemoteVideo(await p1.getEndpointId());
|
|
}
|