Some checks failed
Close stale issues and PRs / stale (push) Has been cancelled
87 lines
2.7 KiB
TypeScript
87 lines
2.7 KiB
TypeScript
import { ensureTwoParticipants } from '../../helpers/participants';
|
|
|
|
describe('Audio only', () => {
|
|
it('joining the meeting', () => ensureTwoParticipants());
|
|
|
|
/**
|
|
* Enables audio only mode for p1 and verifies that the other participant sees participant1 as video muted.
|
|
*/
|
|
it('set and check', () => setAudioOnlyAndCheck(true));
|
|
|
|
/**
|
|
* Verifies that participant1 sees avatars for itself and other participants.
|
|
*/
|
|
it('avatars check', async () => {
|
|
const { p1 } = ctx;
|
|
|
|
await p1.driver.$('//div[@id="dominantSpeaker"]').waitForDisplayed();
|
|
|
|
// Makes sure that the avatar is displayed in the local thumbnail and that the video is not displayed.
|
|
await p1.assertThumbnailShowsAvatar(p1);
|
|
});
|
|
|
|
/**
|
|
* Disables audio only mode and verifies that both participants see p1 as not video muted.
|
|
*/
|
|
it('disable and check', () => setAudioOnlyAndCheck(false));
|
|
|
|
/**
|
|
* Mutes video on participant1, toggles audio-only twice and then verifies if both participants see participant1
|
|
* as video muted.
|
|
*/
|
|
it('mute video, set twice and check muted', async () => {
|
|
const { p1 } = ctx;
|
|
|
|
// Mute video on participant1.
|
|
await p1.getToolbar().clickVideoMuteButton();
|
|
|
|
await verifyVideoMute(true);
|
|
|
|
// Enable audio-only mode.
|
|
await setAudioOnlyAndCheck(true);
|
|
|
|
// Disable audio-only mode.
|
|
await p1.getVideoQualityDialog().setVideoQuality(false);
|
|
|
|
// p1 should stay muted since it was muted before audio-only was enabled.
|
|
await verifyVideoMute(true);
|
|
});
|
|
|
|
it('unmute video and check not muted', async () => {
|
|
// Unmute video on participant1.
|
|
await ctx.p1.getToolbar().clickVideoUnmuteButton();
|
|
|
|
await verifyVideoMute(false);
|
|
});
|
|
});
|
|
|
|
/**
|
|
* Toggles the audio only state of a p1 participant and verifies participant sees the audio only label and that
|
|
* p2 participant sees a video mute state for the former.
|
|
* @param enable
|
|
*/
|
|
async function setAudioOnlyAndCheck(enable: boolean) {
|
|
const { p1 } = ctx;
|
|
|
|
await p1.getVideoQualityDialog().setVideoQuality(enable);
|
|
|
|
await verifyVideoMute(enable);
|
|
|
|
await p1.driver.$('//div[@id="videoResolutionLabel"][contains(@class, "audio-only")]')
|
|
.waitForDisplayed({ reverse: !enable });
|
|
}
|
|
|
|
/**
|
|
* Verifies that p1 and p2 see p1 as video muted or not.
|
|
* @param muted
|
|
*/
|
|
async function verifyVideoMute(muted: boolean) {
|
|
const { p1, p2 } = ctx;
|
|
|
|
// Verify the observer sees the testee in the desired muted state.
|
|
await p2.getParticipantsPane().assertVideoMuteIconIsDisplayed(p1, !muted);
|
|
|
|
// Verify the testee sees itself in the desired muted state.
|
|
await p1.getParticipantsPane().assertVideoMuteIconIsDisplayed(p1, !muted);
|
|
}
|