mirror of
https://gitcode.com/GitHub_Trending/ji/jitsi-meet.git
synced 2025-12-30 11:22:31 +00:00
* fix: Fix example file. * fix: Fix using webhook proxy with iframe and jaas tests. * fix: Fixes detecting max users notification. * ref: Clear _joinParticipant to not depend on participant names. * ref: Use joinParticipant in jaas tests. * ref: Drops JAAS_DOMAIN as BASE_URL is used. * fix: Drops ctx from function parameters. * ref: Drops not needed context members. * ref: Drops extra function. * ref: Participant.joinConference to use roomName from options. * doc: Updates docs. * fix: Adds roomName to joinOptions. Make it possible to override the generated value.
114 lines
3.3 KiB
TypeScript
114 lines
3.3 KiB
TypeScript
import { ensureThreeParticipants, ensureTwoParticipants } from '../../helpers/participants';
|
|
|
|
/**
|
|
* The CSS selector for local video when outside of tile view. It should
|
|
* be in a container separate from remote videos so remote videos can
|
|
* scroll while local video stays docked.
|
|
*/
|
|
const FILMSTRIP_VIEW_LOCAL_VIDEO_CSS_SELECTOR = '#filmstripLocalVideo #localVideoContainer';
|
|
|
|
/**
|
|
* The CSS selector for local video tile view is enabled. It should display
|
|
* at the end of all the other remote videos, as the last tile.
|
|
*/
|
|
const TILE_VIEW_LOCAL_VIDEO_CSS_SELECTOR = '.remote-videos #localVideoContainer';
|
|
|
|
describe('TileView', () => {
|
|
it('joining the meeting', () => ensureTwoParticipants());
|
|
|
|
// TODO: implements etherpad check
|
|
|
|
it('pinning exits', async () => {
|
|
await enterTileView();
|
|
|
|
const { p1, p2 } = ctx;
|
|
|
|
await p1.getFilmstrip().pinParticipant(p2);
|
|
|
|
await p1.waitForTileViewDisplay(true);
|
|
});
|
|
|
|
it('local video display', async () => {
|
|
await enterTileView();
|
|
|
|
const { p1 } = ctx;
|
|
|
|
await p1.driver.$(TILE_VIEW_LOCAL_VIDEO_CSS_SELECTOR).waitForDisplayed({ timeout: 3000 });
|
|
await p1.driver.$(FILMSTRIP_VIEW_LOCAL_VIDEO_CSS_SELECTOR).waitForDisplayed({
|
|
timeout: 3000,
|
|
reverse: true
|
|
});
|
|
});
|
|
|
|
it('can exit', async () => {
|
|
const { p1 } = ctx;
|
|
|
|
await p1.getToolbar().clickExitTileViewButton();
|
|
await p1.waitForTileViewDisplay(true);
|
|
});
|
|
|
|
it('local video display independently from remote', async () => {
|
|
const { p1 } = ctx;
|
|
|
|
await p1.driver.$(TILE_VIEW_LOCAL_VIDEO_CSS_SELECTOR).waitForDisplayed({
|
|
timeout: 3000,
|
|
reverse: true
|
|
});
|
|
await p1.driver.$(FILMSTRIP_VIEW_LOCAL_VIDEO_CSS_SELECTOR).waitForDisplayed({ timeout: 3000 });
|
|
});
|
|
|
|
it('lastN', async () => {
|
|
const { p1, p2 } = ctx;
|
|
|
|
if (p1.driver.isFirefox) {
|
|
// Firefox does not support external audio file as input.
|
|
// Not testing as second participant cannot be dominant speaker.
|
|
return;
|
|
}
|
|
|
|
await p2.getToolbar().clickAudioMuteButton();
|
|
|
|
await ensureThreeParticipants({
|
|
configOverwrite: {
|
|
channelLastN: 1,
|
|
startWithAudioMuted: true
|
|
}
|
|
});
|
|
|
|
const { p3 } = ctx;
|
|
|
|
// one inactive icon should appear in few seconds
|
|
await p3.waitForNinjaIcon();
|
|
|
|
const p1EpId = await p1.getEndpointId();
|
|
|
|
await p3.waitForRemoteVideo(p1EpId);
|
|
|
|
const p2EpId = await p2.getEndpointId();
|
|
|
|
await p3.waitForNinjaIcon(p2EpId);
|
|
|
|
// no video for participant 2
|
|
await p3.waitForRemoteVideo(p2EpId, true);
|
|
|
|
// mute audio for participant 1
|
|
await p1.getToolbar().clickAudioMuteButton();
|
|
|
|
// unmute audio for participant 2
|
|
await p2.getToolbar().clickAudioUnmuteButton();
|
|
|
|
await p3.waitForDominantSpeaker(p2EpId);
|
|
|
|
// check video of participant 2 should be received
|
|
await p3.waitForRemoteVideo(p2EpId);
|
|
});
|
|
});
|
|
|
|
/**
|
|
* Attempts to enter tile view and verifies tile view has been entered.
|
|
*/
|
|
async function enterTileView() {
|
|
await ctx.p1.getToolbar().clickEnterTileViewButton();
|
|
await ctx.p1.waitForTileViewDisplay();
|
|
}
|