diff --git a/internal/e2e-js/tests/buildVideoWithVideoSDK.spec.ts b/internal/e2e-js/tests/buildVideoWithVideoSDK.spec.ts index 89624142e..86036a095 100644 --- a/internal/e2e-js/tests/buildVideoWithVideoSDK.spec.ts +++ b/internal/e2e-js/tests/buildVideoWithVideoSDK.spec.ts @@ -4,7 +4,7 @@ import { SERVER_URL, createTestRoomSession, expectMCUVisible, - expectRoomJoined, + expectRoomJoinWithDefaults, randomizeRoomName, } from '../utils' @@ -62,7 +62,7 @@ test.describe('buildVideoElement with Video SDK', () => { }) // Join a video room without passing the rootElement - await expectRoomJoined(page) + await expectRoomJoinWithDefaults(page) expect(await page.$$('div[id^="sw-sdk-"] > video')).toHaveLength(0) expect(await page.$$('div[id^="sw-overlay-"]')).toHaveLength(0) @@ -82,7 +82,7 @@ test.describe('buildVideoElement with Video SDK', () => { }) // Join a video room without passing the rootElement - await expectRoomJoined(page) + await expectRoomJoinWithDefaults(page) // Build a video element const { element } = await page.evaluate(async () => { @@ -154,7 +154,7 @@ test.describe('buildVideoElement with Video SDK', () => { }) // Join a video room and expect both video and member overlays - await expectRoomJoined(page) + await expectRoomJoinWithDefaults(page) await expectMCUVisible(page) @@ -287,9 +287,7 @@ test.describe('buildVideoElement with Video SDK', () => { const roomName = randomizeRoomName('build-video-element') - await createRoomSession(page, { - roomName, - }) + await createRoomSession(page, { roomName }) // Create a video element await page.evaluate(async () => { @@ -306,7 +304,7 @@ test.describe('buildVideoElement with Video SDK', () => { }) // Join a video room - await expectRoomJoined(page) + await expectRoomJoinWithDefaults(page) await expectMCUVisible(page) @@ -326,12 +324,11 @@ test.describe('buildVideoElement with Video SDK', () => { const roomName = randomizeRoomName('build-video-element') - await createRoomSession(page, { - roomName, - }) + await createRoomSession(page, { roomName }) // Join a video room with rootElement - await expectRoomJoined(page) + await expectRoomJoinWithDefaults(page) + await expectRoomJoinWithDefaults(page) // Create a video element with the same rootElement await page.evaluate(async () => { @@ -365,12 +362,10 @@ test.describe('buildVideoElement with Video SDK', () => { const roomName = randomizeRoomName('build-video-element') - await createRoomSession(pageOne, { - roomName, - }) + await createRoomSession(pageOne, { roomName }) // Join a video room from pageOne - await expectRoomJoined(pageOne) + await expectRoomJoinWithDefaults(pageOne) await expectMCUVisible(pageOne) await test.step('should have correct DOM elements and overlayMap with one member', async () => { @@ -381,12 +376,10 @@ test.describe('buildVideoElement with Video SDK', () => { expect(await getLocalVideoOverlay(pageOne)).toBeDefined() }) - await createRoomSession(pageTwo, { - roomName, - }) + await createRoomSession(pageTwo, { roomName }) // Join a video room from pageTwo - await expectRoomJoined(pageTwo) + await expectRoomJoinWithDefaults(pageTwo) await expectMCUVisible(pageTwo) await test.step('should have correct DOM elements and overlayMap with two members', async () => { diff --git a/internal/e2e-js/tests/roomSession.spec.ts b/internal/e2e-js/tests/roomSession.spec.ts index 6434e5faf..57923aa37 100644 --- a/internal/e2e-js/tests/roomSession.spec.ts +++ b/internal/e2e-js/tests/roomSession.spec.ts @@ -6,8 +6,8 @@ import { randomizeRoomName, setLayoutOnPage, expectLayoutChanged, - expectRoomJoined, expectMCUVisible, + expectRoomJoinWithDefaults, } from '../utils' test.describe('RoomSession', () => { @@ -62,7 +62,7 @@ test.describe('RoomSession', () => { }) // --------------- Joining the room --------------- - const joinParams = await expectRoomJoined(page) + const joinParams = await expectRoomJoinWithDefaults(page) expect(joinParams.room).toBeDefined() expect(joinParams.room_session).toBeDefined() @@ -628,7 +628,7 @@ test.describe('RoomSession', () => { ]) // --------------- Joining the 1st room --------------- - await expectRoomJoined(pageOne) + await expectRoomJoinWithDefaults(pageOne) // Checks that the video is visible await expectMCUVisible(pageOne) @@ -668,7 +668,7 @@ test.describe('RoomSession', () => { ) // --------------- Joining the 2nd room --------------- - await expectRoomJoined(pageTwo) + await expectRoomJoinWithDefaults(pageTwo) // Checks that the video is visible await expectMCUVisible(pageTwo) diff --git a/internal/e2e-js/tests/roomSessionAudienceCount.spec.ts b/internal/e2e-js/tests/roomSessionAudienceCount.spec.ts index 83318a30d..5467a7628 100644 --- a/internal/e2e-js/tests/roomSessionAudienceCount.spec.ts +++ b/internal/e2e-js/tests/roomSessionAudienceCount.spec.ts @@ -5,7 +5,7 @@ import { SERVER_URL, createTestRoomSession, randomizeRoomName, - expectRoomJoined, + expectRoomJoinWithDefaults, } from '../utils' test.describe('RoomSession Audience Count', () => { @@ -94,7 +94,7 @@ test.describe('RoomSession Audience Count', () => { expectedAudienceCount ) - await expectRoomJoined(pageOne) + await expectRoomJoinWithDefaults(pageOne) const expectorPageTwo = expectAudienceCount(pageTwo) const audienceCountPageTwoPromise = expectorPageTwo.waitFor( @@ -102,13 +102,19 @@ test.describe('RoomSession Audience Count', () => { ) // join as audience on pageTwo and resolve on `room.joined` - const joinTwoParams: any = await expectRoomJoined(pageTwo) + const joinTwoParams: any = await expectRoomJoinWithDefaults(pageTwo, { + joinAs: 'audience', + }) // expect to have only 1 audience in the room at the moment expect(joinTwoParams.room_session.audience_count).toBe(1) const [_, ...pageThreeToFive] = audiencePages // join as audiences on pageThree to pageFive and resolve on `room.joined` - await Promise.all(pageThreeToFive.map((page) => expectRoomJoined(page))) + await Promise.all( + pageThreeToFive.map((page) => + expectRoomJoinWithDefaults(page, { joinAs: 'audience' }) + ) + ) // wait for all the room.audienceCount await Promise.all([ diff --git a/internal/e2e-js/tests/roomSessionAutomaticStream.spec.ts b/internal/e2e-js/tests/roomSessionAutomaticStream.spec.ts index 6f42081a7..21546ac4c 100644 --- a/internal/e2e-js/tests/roomSessionAutomaticStream.spec.ts +++ b/internal/e2e-js/tests/roomSessionAutomaticStream.spec.ts @@ -3,18 +3,18 @@ import type { Video } from '@signalwire/js' import { SERVER_URL, createTestRoomSession, - expectRoomJoined, expectMCUVisible, createRoom, createStreamForRoom, randomizeRoomName, deleteRoom, + expectRoomJoinWithDefaults, } from '../utils' test.describe('Room Session Auto Stream', () => { const streamingURL = `${process.env.RTMP_SERVER}${process.env.RTMP_STREAM_NAME}` - test('Should Join a Room with existing stream', async ({ + test('should join a room with existing stream', async ({ createCustomPage, }) => { const roomName = randomizeRoomName('auto-stream-e2e') @@ -36,8 +36,7 @@ test.describe('Room Session Auto Stream', () => { await createStreamForRoom(roomName, streamingURL) await createTestRoomSession(pageOne, connectionSettings) - - await expectRoomJoined(pageOne) + await expectRoomJoinWithDefaults(pageOne) await expectMCUVisible(pageOne) diff --git a/internal/e2e-js/tests/roomSessionBadNetwork.spec.ts b/internal/e2e-js/tests/roomSessionBadNetwork.spec.ts index 463c4b2fd..0a2dde965 100644 --- a/internal/e2e-js/tests/roomSessionBadNetwork.spec.ts +++ b/internal/e2e-js/tests/roomSessionBadNetwork.spec.ts @@ -4,11 +4,11 @@ import { SERVER_URL, createTestRoomSession, randomizeRoomName, - expectRoomJoined, expectMCUVisible, expectMCUVisibleForAudience, expectPageReceiveMedia, expectMediaEvent, + expectRoomJoinWithDefaults, } from '../utils' type Test = { @@ -54,7 +54,9 @@ test.describe('roomSessionBadNetwork', () => { ) // --------------- Joining the room --------------- - const joinParams: any = await expectRoomJoined(page) + const joinParams: any = await expectRoomJoinWithDefaults(page, { + joinAs: row.join_as, + }) expect(joinParams.room).toBeDefined() expect(joinParams.room_session).toBeDefined() diff --git a/internal/e2e-js/tests/roomSessionCleanup.spec.ts b/internal/e2e-js/tests/roomSessionCleanup.spec.ts index 52d0b39f9..5cb730812 100644 --- a/internal/e2e-js/tests/roomSessionCleanup.spec.ts +++ b/internal/e2e-js/tests/roomSessionCleanup.spec.ts @@ -1,7 +1,8 @@ +import { Video } from '@signalwire/js' import { test, expect } from '../fixtures' import { createTestRoomSession, - expectRoomJoined, + expectRoomJoinWithDefaults, leaveRoom, randomizeRoomName, SERVER_URL, @@ -25,11 +26,12 @@ test.describe('RoomSession', () => { attachSagaMonitor: true, }) - await expectRoomJoined(page) + await expectRoomJoinWithDefaults(page) await test.step('the room should have workers and listeners attached', async () => { const watchers: Record = await page.evaluate(() => { - const roomObj = window._roomObj + // @ts-expect-error + const roomObj: Video.RoomSession = window._roomObj return { // @ts-expect-error @@ -53,7 +55,8 @@ test.describe('RoomSession', () => { await test.step('the room should not have any workers and listeners attached', async () => { const watchers: Record = await page.evaluate(() => { - const roomObj = window._roomObj + // @ts-expect-error + const roomObj: Video.RoomSession = window._roomObj return { // @ts-expect-error diff --git a/internal/e2e-js/tests/roomSessionDemote.spec.ts b/internal/e2e-js/tests/roomSessionDemote.spec.ts index 3537f4b9f..331a3b632 100644 --- a/internal/e2e-js/tests/roomSessionDemote.spec.ts +++ b/internal/e2e-js/tests/roomSessionDemote.spec.ts @@ -3,12 +3,10 @@ import type { Video } from '@signalwire/js' import { SERVER_URL, createTestRoomSession, - expectSDPDirection, - expectInteractivityMode, expectMemberId, - expectRoomJoined, expectMCUVisible, expectPageReceiveAudio, + expectRoomJoinWithDefaults, } from '../utils' test.describe('RoomSession demote participant', () => { @@ -43,10 +41,10 @@ test.describe('RoomSession demote participant', () => { createTestRoomSession(pageTwo, participant2Settings), ]) - await expectRoomJoined(pageOne) + await expectRoomJoinWithDefaults(pageOne) await expectMCUVisible(pageOne) - const pageTwoRoomJoined = await expectRoomJoined(pageTwo) + const pageTwoRoomJoined = await expectRoomJoinWithDefaults(pageTwo) const participant2Id = pageTwoRoomJoined.member_id await expectMemberId(pageTwo, participant2Id) await expectMCUVisible(pageTwo) @@ -54,6 +52,11 @@ test.describe('RoomSession demote participant', () => { // Wait five seconds before demoting await pageOne.waitForTimeout(5000) + const promiseAudienceRoomJoined = expectRoomJoinWithDefaults(pageTwo, { + invokeJoin: false, + joinAs: 'audience', + }) + // Demote participant on pageTwo to audience from pageOne // and resolve on `member.left` amd `layout.changed` with // position off-canvas @@ -108,15 +111,11 @@ test.describe('RoomSession demote participant', () => { { demoteMemberId: participant2Id } ) - const promiseAudienceRoomJoined = await expectRoomJoined(pageTwo, { - invokeJoin: false, - }) - // Expect same member ID as before demote await expectMemberId(pageTwo, participant2Id) - await expectMemberId(pageTwo, promiseAudienceRoomJoined.member_id) - await expectInteractivityMode(pageTwo, 'audience') - await expectSDPDirection(pageTwo, 'recvonly', true) + + // Make sure the demoted user received room.joined with correct states + await promiseAudienceRoomJoined await expectPageReceiveAudio(pageTwo) }) diff --git a/internal/e2e-js/tests/roomSessionDemoteAudience.spec.ts b/internal/e2e-js/tests/roomSessionDemoteAudience.spec.ts index f212ec6eb..eaa3a576a 100644 --- a/internal/e2e-js/tests/roomSessionDemoteAudience.spec.ts +++ b/internal/e2e-js/tests/roomSessionDemoteAudience.spec.ts @@ -5,9 +5,9 @@ import { createTestRoomSession, expectSDPDirection, expectInteractivityMode, - expectRoomJoined, expectMCUVisible, expectMCUVisibleForAudience, + expectRoomJoinWithDefaults, } from '../utils' test.describe('RoomSession demote method', () => { @@ -46,13 +46,15 @@ test.describe('RoomSession demote method', () => { ]) // --------------- Joining from the 1st tab as member and resolve on 'room.joined' --------------- - await expectRoomJoined(pageOne) + await expectRoomJoinWithDefaults(pageOne) // Checks that the video is visible on pageOne await expectMCUVisible(pageOne) // --------------- Joining from the 2st tab as audience and resolve on 'room.joined' --------------- - const pageTwoRoomJoined: any = await expectRoomJoined(pageTwo) + const pageTwoRoomJoined: any = await expectRoomJoinWithDefaults(pageTwo, { + joinAs: 'audience', + }) // Checks that the video is visible on pageTwo await expectMCUVisibleForAudience(pageTwo) diff --git a/internal/e2e-js/tests/roomSessionDemotePromote.spec.ts b/internal/e2e-js/tests/roomSessionDemotePromote.spec.ts index fd945d49d..5ce2dfc03 100644 --- a/internal/e2e-js/tests/roomSessionDemotePromote.spec.ts +++ b/internal/e2e-js/tests/roomSessionDemotePromote.spec.ts @@ -7,8 +7,8 @@ import { expectInteractivityMode, expectMemberId, randomizeRoomName, - expectRoomJoined, expectMCUVisible, + expectRoomJoinWithDefaults, } from '../utils' test.describe('RoomSession demote participant and then promote again', () => { @@ -48,13 +48,13 @@ test.describe('RoomSession demote participant and then promote again', () => { ]) // --------------- Joining from the 1st tab as member and resolve on 'room.joined' --------------- - await expectRoomJoined(pageOne) + await expectRoomJoinWithDefaults(pageOne) // Checks that the video is visible on pageOne await expectMCUVisible(pageOne) // --------------- Joining from the 2nd tab as member and resolve on 'room.joined' --------------- - const pageTwoRoomJoined: any = await expectRoomJoined(pageTwo) + const pageTwoRoomJoined: any = await expectRoomJoinWithDefaults(pageTwo) const participant2Id = pageTwoRoomJoined.member_id await expectMemberId(pageTwo, participant2Id) @@ -66,9 +66,17 @@ test.describe('RoomSession demote participant and then promote again', () => { await pageTwo.waitForTimeout(1000) + const promiseDemotedRoomJoined = pageTwo.evaluate(() => { + return new Promise((resolve) => { + // @ts-expect-error + const roomObj = window._roomObj + roomObj.once('room.joined', resolve) + }) + }) + // --------------- Demote participant on pageTwo to audience from pageOne // and resolve on `member.left` amd `layout.changed` with position off-canvas --------------- - await pageOne.evaluate( + const promiseDemoterMemberLeft = pageOne.evaluate( async ({ demoteMemberId }) => { // @ts-expect-error const roomObj: Video.RoomSession = window._roomObj @@ -118,17 +126,14 @@ test.describe('RoomSession demote participant and then promote again', () => { { demoteMemberId: participant2Id } ) - const promiseAudienceRoomJoined = await pageTwo.evaluate(() => { - return new Promise((resolve) => { - // @ts-expect-error - const roomObj = window._roomObj - roomObj.once('room.joined', resolve) - }) - }) + const [demotedRoomJoined, _] = await Promise.all([ + promiseDemotedRoomJoined, + promiseDemoterMemberLeft, + ]) // --------------- Make sure member_id is the same after demote on pageTwo --------------- await expectMemberId(pageTwo, participant2Id) // before demote - await expectMemberId(pageTwo, promiseAudienceRoomJoined.member_id) // after demote + await expectMemberId(pageTwo, demotedRoomJoined.member_id) // after demote await expectInteractivityMode(pageTwo, 'audience') await expectSDPDirection(pageTwo, 'recvonly', true) @@ -137,6 +142,14 @@ test.describe('RoomSession demote participant and then promote again', () => { await pageTwo.waitForTimeout(1000) + const promisePromotedRoomJoined = pageTwo.evaluate(() => { + return new Promise((resolve) => { + // @ts-expect-error + const roomObj = window._roomObj + roomObj.once('room.joined', resolve) + }) + }) + // --------------- Promote audience from pageOne and resolve on `member.joined` --------------- const promiseMemberWaitingForMemberJoin = pageOne.evaluate( async ({ promoteMemberId }) => { @@ -170,10 +183,6 @@ test.describe('RoomSession demote participant and then promote again', () => { { promoteMemberId: participant2Id } ) - const promisePromotedRoomJoined = expectRoomJoined(pageTwo, { - invokeJoin: false, - }) - await Promise.all([ promiseMemberWaitingForMemberJoin, promisePromotedRoomJoined, diff --git a/internal/e2e-js/tests/roomSessionDemoteReattachPromote.spec.ts b/internal/e2e-js/tests/roomSessionDemoteReattachPromote.spec.ts index ebeda0555..389b0447c 100644 --- a/internal/e2e-js/tests/roomSessionDemoteReattachPromote.spec.ts +++ b/internal/e2e-js/tests/roomSessionDemoteReattachPromote.spec.ts @@ -7,9 +7,9 @@ import { expectInteractivityMode, expectMemberId, randomizeRoomName, - expectRoomJoined, expectMCUVisible, expectMCUVisibleForAudience, + expectRoomJoinWithDefaults, } from '../utils' test.describe('RoomSession demote participant, reattach and then promote again', () => { @@ -48,10 +48,10 @@ test.describe('RoomSession demote participant, reattach and then promote again', createTestRoomSession(pageTwo, participant2Settings), ]) - await expectRoomJoined(pageOne) + await expectRoomJoinWithDefaults(pageOne) await expectMCUVisible(pageOne) - const pageTwoRoomJoined: any = await expectRoomJoined(pageTwo) + const pageTwoRoomJoined: any = await expectRoomJoinWithDefaults(pageTwo) const participant2Id = pageTwoRoomJoined.member_id await expectMemberId(pageTwo, participant2Id) await expectMCUVisible(pageTwo) @@ -60,6 +60,14 @@ test.describe('RoomSession demote participant, reattach and then promote again', await pageTwo.waitForTimeout(1000) + const promiseAudienceRoomJoined = pageTwo.evaluate(() => { + return new Promise((resolve) => { + // @ts-expect-error + const roomObj = window._roomObj + roomObj.once('room.joined', resolve) + }) + }) + // --------------- Demote participant on pageTwo to audience from pageOne // and resolve on `member.left` amd `layout.changed` with position off-canvas --------------- await pageOne.evaluate( @@ -111,17 +119,11 @@ test.describe('RoomSession demote participant, reattach and then promote again', { demoteMemberId: participant2Id } ) - const promiseAudienceRoomJoined = await pageTwo.evaluate(() => { - return new Promise((resolve) => { - // @ts-expect-error - const roomObj = window._roomObj - roomObj.once('room.joined', resolve) - }) - }) + const audienceRoomJoined = await promiseAudienceRoomJoined // --------------- Make sure member_id is the same after demote on pageTwo --------------- await expectMemberId(pageTwo, participant2Id) // before demote - await expectMemberId(pageTwo, promiseAudienceRoomJoined.member_id) // after demote + await expectMemberId(pageTwo, audienceRoomJoined.member_id) // after demote await expectInteractivityMode(pageTwo, 'audience') await expectSDPDirection(pageTwo, 'recvonly', true) @@ -148,7 +150,9 @@ test.describe('RoomSession demote participant, reattach and then promote again', console.time('reattach') // Join again - const reattachParams: any = await expectRoomJoined(pageTwo) + const reattachParams: any = await expectRoomJoinWithDefaults(pageTwo, { + joinAs: 'audience', + }) console.timeEnd('reattach') expect(reattachParams.room).toBeDefined() @@ -157,10 +161,10 @@ test.describe('RoomSession demote participant, reattach and then promote again', expect(reattachParams.room.name).toBe(room_name) // Make sure the member_id is stable expect(reattachParams.member_id).toBeDefined() - expect(reattachParams.member_id).toBe(promiseAudienceRoomJoined.member_id) + expect(reattachParams.member_id).toBe(audienceRoomJoined.member_id) // Also call_id must remain the same expect(reattachParams.call_id).toBeDefined() - expect(reattachParams.call_id).toBe(promiseAudienceRoomJoined.call_id) + expect(reattachParams.call_id).toBe(audienceRoomJoined.call_id) await expectMCUVisibleForAudience(pageTwo) await expectInteractivityMode(pageTwo, 'audience') @@ -170,6 +174,10 @@ test.describe('RoomSession demote participant, reattach and then promote again', // --------------- Time to promote again at PageTwo --------------- + const promisePromotedRoomJoined = expectRoomJoinWithDefaults(pageTwo, { + invokeJoin: false, + }) + const promiseMemberWaitingForMemberJoin = pageOne.evaluate( async ({ promoteMemberId }) => { // @ts-expect-error @@ -202,10 +210,6 @@ test.describe('RoomSession demote participant, reattach and then promote again', { promoteMemberId: participant2Id } ) - const promisePromotedRoomJoined = expectRoomJoined(pageTwo, { - invokeJoin: false, - }) - await Promise.all([ promiseMemberWaitingForMemberJoin, promisePromotedRoomJoined, diff --git a/internal/e2e-js/tests/roomSessionDevices.spec.ts b/internal/e2e-js/tests/roomSessionDevices.spec.ts index 8bcd4e5f5..eccaad61f 100644 --- a/internal/e2e-js/tests/roomSessionDevices.spec.ts +++ b/internal/e2e-js/tests/roomSessionDevices.spec.ts @@ -4,7 +4,7 @@ import { SERVER_URL, createTestRoomSession, randomizeRoomName, - expectRoomJoined, + expectRoomJoinWithDefaults, } from '../utils' test.describe('RoomSessionDevices', () => { @@ -25,7 +25,7 @@ test.describe('RoomSessionDevices', () => { }) // --------------- Joining the room --------------- - const joinParams = await expectRoomJoined(page) + const joinParams = await expectRoomJoinWithDefaults(page) expect(joinParams.room).toBeDefined() expect(joinParams.room_session).toBeDefined() @@ -79,7 +79,7 @@ test.describe('RoomSessionDevices', () => { }) // --------------- Joining the room --------------- - const joinParams = await expectRoomJoined(page) + const joinParams = await expectRoomJoinWithDefaults(page) expect(joinParams.room).toBeDefined() expect(joinParams.room_session).toBeDefined() @@ -135,7 +135,7 @@ test.describe('RoomSessionDevices', () => { }) // --------------- Joining the room --------------- - const joinParams = await expectRoomJoined(page) + const joinParams = await expectRoomJoinWithDefaults(page) expect(joinParams.room).toBeDefined() expect(joinParams.room_session).toBeDefined() @@ -200,7 +200,7 @@ test.describe('RoomSessionDevices', () => { }) // --------------- Joining the room --------------- - const joinParams = await expectRoomJoined(page) + const joinParams = await expectRoomJoinWithDefaults(page) expect(joinParams.room).toBeDefined() expect(joinParams.room_session).toBeDefined() diff --git a/internal/e2e-js/tests/roomSessionFollowLeader.spec.ts b/internal/e2e-js/tests/roomSessionFollowLeader.spec.ts index 6bebc0789..505bf038f 100644 --- a/internal/e2e-js/tests/roomSessionFollowLeader.spec.ts +++ b/internal/e2e-js/tests/roomSessionFollowLeader.spec.ts @@ -3,11 +3,11 @@ import type { Video } from '@signalwire/js' import { SERVER_URL, createTestRoomSession, - expectRoomJoined, expectMCUVisible, expectMCUVisibleForAudience, expectPageReceiveAudio, randomizeRoomName, + expectRoomJoinWithDefaults, } from '../utils' test.describe('RoomSession end_room_session_on_leave feature', () => { @@ -44,9 +44,21 @@ test.describe('RoomSession end_room_session_on_leave feature', () => { }) ) - await Promise.all(allPages.map((page) => expectRoomJoined(page))) - // last page is audience - await Promise.all(allPages.map((page, i) => i === allPages.length - 1 ? expectMCUVisibleForAudience(page) : expectMCUVisible(page))) + // Last page is audience + await Promise.all( + allPages.map((page, i) => + i === allPages.length - 1 + ? expectRoomJoinWithDefaults(page, { joinAs: 'audience' }) + : expectRoomJoinWithDefaults(page, { joinAs: 'member' }) + ) + ) + await Promise.all( + allPages.map((page, i) => + i === allPages.length - 1 + ? expectMCUVisibleForAudience(page) + : expectMCUVisible(page) + ) + ) await Promise.all(allPages.map((page) => expectPageReceiveAudio(page))) await pageOne.waitForTimeout(2000) diff --git a/internal/e2e-js/tests/roomSessionJoinFrom.spec.ts b/internal/e2e-js/tests/roomSessionJoinFrom.spec.ts index ce480ddd9..666c3b9fb 100644 --- a/internal/e2e-js/tests/roomSessionJoinFrom.spec.ts +++ b/internal/e2e-js/tests/roomSessionJoinFrom.spec.ts @@ -6,7 +6,7 @@ import { createOrUpdateRoom, deleteRoom, randomizeRoomName, - expectRoomJoined, + expectRoomJoinWithDefaults, } from '../utils' interface TestConfig { @@ -41,7 +41,7 @@ test.describe('RoomSession join_from', () => { test(`should not be possible to join a room before the join_from [${row.testName}]`, async ({ createCustomPage, }) => { - const buildRoomSession = (opts = { expectToJoin: true }) => { + const buildRoomSession = () => { return createTestRoomSession(page, { vrt: { room_name: row.roomName, @@ -51,7 +51,6 @@ test.describe('RoomSession join_from', () => { join_from: row.autoCreateRoom ? joinFrom : undefined, }, initialEvents: [], - expectToJoin: opts.expectToJoin, }) } let roomData: any = {} @@ -68,7 +67,7 @@ test.describe('RoomSession join_from', () => { }) } - await buildRoomSession({ expectToJoin: false }) + await buildRoomSession() // --------------- Joining the room and expect an error --------------- const joinError: any = await page.evaluate(async () => { @@ -88,7 +87,7 @@ test.describe('RoomSession join_from', () => { await buildRoomSession() // --------------- Joining the room --------------- - const joinParams: any = await expectRoomJoined(page) + const joinParams: any = await expectRoomJoinWithDefaults(page) expect(joinParams.room).toBeDefined() expect(joinParams.room_session).toBeDefined() diff --git a/internal/e2e-js/tests/roomSessionJoinUntil.spec.ts b/internal/e2e-js/tests/roomSessionJoinUntil.spec.ts index 2d87f7576..6861a33bc 100644 --- a/internal/e2e-js/tests/roomSessionJoinUntil.spec.ts +++ b/internal/e2e-js/tests/roomSessionJoinUntil.spec.ts @@ -63,7 +63,6 @@ test.describe('RoomSession join_until', () => { join_until: row.autoCreateRoom ? joinUntil : undefined, }, initialEvents: [], - expectToJoin: false, }) await page.waitForTimeout(delay) diff --git a/internal/e2e-js/tests/roomSessionLocalStream.spec.ts b/internal/e2e-js/tests/roomSessionLocalStream.spec.ts index 90abe1e9e..14dfab5bf 100644 --- a/internal/e2e-js/tests/roomSessionLocalStream.spec.ts +++ b/internal/e2e-js/tests/roomSessionLocalStream.spec.ts @@ -3,10 +3,11 @@ import type { Video } from '@signalwire/js' import { SERVER_URL, createTestRoomSession, - expectRoomJoined, randomizeRoomName, createTestVRTToken, expectMCUVisibleForAudience, + expectRoomJoinWithDefaults, + expectRoomJoined, } from '../utils' test.describe('RoomSession with custom local stream', () => { @@ -93,7 +94,7 @@ test.describe('RoomSession with custom local stream', () => { } await createTestRoomSession(page, connectionSettings) - await expectRoomJoined(page) + await expectRoomJoinWithDefaults(page) await expectMCUVisibleForAudience(page) const before = await page.evaluate(async () => { diff --git a/internal/e2e-js/tests/roomSessionLockUnlock.spec.ts b/internal/e2e-js/tests/roomSessionLockUnlock.spec.ts index 76b6d2510..fa54d640f 100644 --- a/internal/e2e-js/tests/roomSessionLockUnlock.spec.ts +++ b/internal/e2e-js/tests/roomSessionLockUnlock.spec.ts @@ -4,8 +4,8 @@ import { SERVER_URL, createTestRoomSession, randomizeRoomName, - expectRoomJoined, expectMCUVisible, + expectRoomJoinWithDefaults, } from '../utils' test.describe('RoomSession Lock/Unlock', () => { @@ -28,7 +28,7 @@ test.describe('RoomSession Lock/Unlock', () => { }) // --------------- Joining the room --------------- - const joinParams = await expectRoomJoined(page) + const joinParams = await expectRoomJoinWithDefaults(page) expect(joinParams.room).toBeDefined() expect(joinParams.room_session).toBeDefined() diff --git a/internal/e2e-js/tests/roomSessionMaxMembers.spec.ts b/internal/e2e-js/tests/roomSessionMaxMembers.spec.ts index c08153704..064c54124 100644 --- a/internal/e2e-js/tests/roomSessionMaxMembers.spec.ts +++ b/internal/e2e-js/tests/roomSessionMaxMembers.spec.ts @@ -3,11 +3,11 @@ import type { Video } from '@signalwire/js' import { SERVER_URL, createTestRoomSession, - expectRoomJoined, expectMCUVisible, createRoom, randomizeRoomName, deleteRoom, + expectRoomJoinWithDefaults, } from '../utils' test.describe('Room Session Max Members', () => { @@ -41,12 +41,14 @@ test.describe('Room Session Max Members', () => { permissions: ['room.stream'], }, initialEvents: ['stream.started', 'stream.ended'], - expectToJoin: false, }) }) ) - await Promise.all([expectRoomJoined(pageOne), expectRoomJoined(pageTwo)]) + await Promise.all([ + expectRoomJoinWithDefaults(pageOne), + expectRoomJoinWithDefaults(pageTwo), + ]) await Promise.all([expectMCUVisible(pageOne), expectMCUVisible(pageTwo)]) diff --git a/internal/e2e-js/tests/roomSessionMethodsOnNonExistingMembers.spec.ts b/internal/e2e-js/tests/roomSessionMethodsOnNonExistingMembers.spec.ts index 9611da74d..9a237247e 100644 --- a/internal/e2e-js/tests/roomSessionMethodsOnNonExistingMembers.spec.ts +++ b/internal/e2e-js/tests/roomSessionMethodsOnNonExistingMembers.spec.ts @@ -4,8 +4,8 @@ import { SERVER_URL, createTestRoomSession, randomizeRoomName, - expectRoomJoined, expectMCUVisible, + expectRoomJoinWithDefaults, } from '../utils' test.describe('RoomSession methods on non existing members', () => { @@ -39,7 +39,7 @@ test.describe('RoomSession methods on non existing members', () => { }) // --------------- Joining the room --------------- - const joinParams: any = await expectRoomJoined(page) + const joinParams: any = await expectRoomJoinWithDefaults(page) expect(joinParams.room).toBeDefined() expect(joinParams.room_session).toBeDefined() diff --git a/internal/e2e-js/tests/roomSessionMultipleStreams.spec.ts b/internal/e2e-js/tests/roomSessionMultipleStreams.spec.ts index 0c1a00ada..a9e3e6447 100644 --- a/internal/e2e-js/tests/roomSessionMultipleStreams.spec.ts +++ b/internal/e2e-js/tests/roomSessionMultipleStreams.spec.ts @@ -3,7 +3,7 @@ import type { Video } from '@signalwire/js' import { SERVER_URL, createTestRoomSession, - expectRoomJoined, + expectRoomJoinWithDefaults, expectMCUVisible, randomizeRoomName, } from '../utils' @@ -34,10 +34,10 @@ test.describe('Room Session Multiple Streams', () => { return streamStarted } - test('Should create multiple streams and list data about them all', async ({ + test('should create multiple streams and list data about them all', async ({ createCustomPage, }) => { - const pageOne = await createCustomPage({ name: '[pageOnes]' }) + const pageOne = await createCustomPage({ name: '[pageOne]' }) await pageOne.goto(SERVER_URL) const connectionSettings = { @@ -51,8 +51,7 @@ test.describe('Room Session Multiple Streams', () => { } await createTestRoomSession(pageOne, connectionSettings) - - await expectRoomJoined(pageOne) + await expectRoomJoinWithDefaults(pageOne) await expectMCUVisible(pageOne) @@ -74,10 +73,10 @@ test.describe('Room Session Multiple Streams', () => { expect(streamsResult.streams).toHaveLength(2) }) - test('Should not create more the MAX_STREAM_FOR_ENTERPRIZE streams', async ({ + test(`should not create more than ${MAX_STREAM_FOR_ENTERPRIZE} streams`, async ({ createCustomPage, }) => { - const pageOne = await createCustomPage({ name: '[pageOnes]' }) + const pageOne = await createCustomPage({ name: '[pageOne]' }) await pageOne.goto(SERVER_URL) const connectionSettings = { @@ -91,8 +90,7 @@ test.describe('Room Session Multiple Streams', () => { } await createTestRoomSession(pageOne, connectionSettings) - - await expectRoomJoined(pageOne) + await expectRoomJoinWithDefaults(pageOne) await expectMCUVisible(pageOne) diff --git a/internal/e2e-js/tests/roomSessionPromoteDemote.spec.ts b/internal/e2e-js/tests/roomSessionPromoteDemote.spec.ts index 70f5e64c2..bc21d0312 100644 --- a/internal/e2e-js/tests/roomSessionPromoteDemote.spec.ts +++ b/internal/e2e-js/tests/roomSessionPromoteDemote.spec.ts @@ -8,11 +8,11 @@ import { expectMemberId, expectLayoutChanged, setLayoutOnPage, - expectRoomJoined, expectMCUVisible, expectMCUVisibleForAudience, expectPageReceiveAudio, randomizeRoomName, + expectRoomJoinWithDefaults, } from '../utils' test.describe('RoomSession promote/demote methods', () => { @@ -64,10 +64,12 @@ test.describe('RoomSession promote/demote methods', () => { createTestRoomSession(pageTwo, audienceSettings), ]) - await expectRoomJoined(pageOne) + await expectRoomJoinWithDefaults(pageOne) await expectMCUVisible(pageOne) - const pageTwoRoomJoined = await expectRoomJoined(pageTwo) + const pageTwoRoomJoined = await expectRoomJoinWithDefaults(pageTwo, { + joinAs: 'audience', + }) const audienceId = pageTwoRoomJoined.member_id await expectMCUVisibleForAudience(pageTwo) await expectPageReceiveAudio(pageTwo) @@ -83,8 +85,13 @@ test.describe('RoomSession promote/demote methods', () => { ]) expect(layoutChangedResults).toStrictEqual([true, true]) + const promisePromotedRoomJoined = expectRoomJoinWithDefaults(pageTwo, { + invokeJoin: false, + joinAs: 'member', + }) + // --------------- Promote audience from pageOne and resolve on `member.joined` --------------- - await pageOne.evaluate( + const promisePromoterMemberJoined = pageOne.evaluate( async ({ promoteMemberId }) => { // @ts-expect-error const roomObj: Video.RoomSession = window._roomObj @@ -109,22 +116,18 @@ test.describe('RoomSession promote/demote methods', () => { { promoteMemberId: audienceId } ) - await pageTwo.waitForTimeout(2000) - - await expectMemberId(pageTwo, audienceId) - await expectInteractivityMode(pageTwo, 'member') - await expectSDPDirection(pageTwo, 'sendrecv', true) + await Promise.all([promisePromoterMemberJoined, promisePromotedRoomJoined]) // Promotion done. - await pageTwo.waitForTimeout(2000) // Demote to audience again from pageOne // and resolve on `member.left` // and `layout.changed` with position off-canvas - const promiseAudienceRoomJoined = expectRoomJoined(pageTwo, { + const promiseDemotedRoomJoined = expectRoomJoinWithDefaults(pageTwo, { invokeJoin: false, + joinAs: 'audience', }) const promiseMemberWaitingForMemberLeft = pageOne.evaluate( @@ -176,7 +179,7 @@ test.describe('RoomSession promote/demote methods', () => { ) const [audienceRoomJoined, _] = await Promise.all([ - promiseAudienceRoomJoined, + promiseDemotedRoomJoined, promiseMemberWaitingForMemberLeft, ]) diff --git a/internal/e2e-js/tests/roomSessionPromoteMeta.spec.ts b/internal/e2e-js/tests/roomSessionPromoteMeta.spec.ts index a93da90da..113acee8f 100644 --- a/internal/e2e-js/tests/roomSessionPromoteMeta.spec.ts +++ b/internal/e2e-js/tests/roomSessionPromoteMeta.spec.ts @@ -5,9 +5,9 @@ import { createTestRoomSession, expectSDPDirection, expectInteractivityMode, - expectRoomJoined, expectMCUVisible, expectMCUVisibleForAudience, + expectRoomJoinWithDefaults, } from '../utils' test.describe('RoomSession promote updating member meta', () => { @@ -46,13 +46,15 @@ test.describe('RoomSession promote updating member meta', () => { ]) // --------------- Joining from the 1st tab as member and resolve on 'room.joined' --------------- - await expectRoomJoined(pageOne) + await expectRoomJoinWithDefaults(pageOne, { joinAs: 'member' }) // Checks that the video is visible on pageOne await expectMCUVisible(pageOne) // --------------- Joining from the 2st tab as audience and resolve on 'room.joined' --------------- - const pageTwoRoomJoined = await expectRoomJoined(pageTwo) + const pageTwoRoomJoined = await expectRoomJoinWithDefaults(pageTwo, { + joinAs: 'audience', + }) // Checks that the video is visible on pageTwo await expectMCUVisibleForAudience(pageTwo) diff --git a/internal/e2e-js/tests/roomSessionPromoteParticipant.spec.ts b/internal/e2e-js/tests/roomSessionPromoteParticipant.spec.ts index ea5485b05..20087a3e4 100644 --- a/internal/e2e-js/tests/roomSessionPromoteParticipant.spec.ts +++ b/internal/e2e-js/tests/roomSessionPromoteParticipant.spec.ts @@ -3,8 +3,8 @@ import type { Video } from '@signalwire/js' import { createTestRoomSession, SERVER_URL, - expectRoomJoined, expectMCUVisible, + expectRoomJoinWithDefaults, } from '../utils' test.describe('RoomSession promote myself', () => { @@ -28,7 +28,7 @@ test.describe('RoomSession promote myself', () => { await createTestRoomSession(pageOne, memberSettings) // --------------- Joining from the 1st tab as member and resolve on 'room.joined' --------------- - await expectRoomJoined(pageOne) + await expectRoomJoinWithDefaults(pageOne) // Checks that the video is visible on pageOne await expectMCUVisible(pageOne) diff --git a/internal/e2e-js/tests/roomSessionPromoteReattachDemote.spec.ts b/internal/e2e-js/tests/roomSessionPromoteReattachDemote.spec.ts index 6fca23cb5..efbff479a 100644 --- a/internal/e2e-js/tests/roomSessionPromoteReattachDemote.spec.ts +++ b/internal/e2e-js/tests/roomSessionPromoteReattachDemote.spec.ts @@ -8,11 +8,11 @@ import { expectMemberId, expectLayoutChanged, setLayoutOnPage, - expectRoomJoined, expectMCUVisible, expectMCUVisibleForAudience, expectPageReceiveAudio, randomizeRoomName, + expectRoomJoinWithDefaults, } from '../utils' test.describe('RoomSession promote/demote methods', () => { @@ -64,10 +64,12 @@ test.describe('RoomSession promote/demote methods', () => { createTestRoomSession(pageTwo, audienceSettings), ]) - await expectRoomJoined(pageOne) + await expectRoomJoinWithDefaults(pageOne) await expectMCUVisible(pageOne) - const pageTwoRoomJoined = await expectRoomJoined(pageTwo) + const pageTwoRoomJoined = await expectRoomJoinWithDefaults(pageTwo, { + joinAs: 'audience', + }) const pageTwoMemberId = pageTwoRoomJoined.member_id await expectMCUVisibleForAudience(pageTwo) await expectPageReceiveAudio(pageTwo) @@ -144,7 +146,7 @@ test.describe('RoomSession promote/demote methods', () => { await createTestRoomSession(pageTwo, promotedSettings) console.time('reattach') - const reattachParams: any = await expectRoomJoined(pageTwo) + const reattachParams: any = await expectRoomJoinWithDefaults(pageTwo) console.timeEnd('reattach') expect(reattachParams.room).toBeDefined() @@ -169,8 +171,9 @@ test.describe('RoomSession promote/demote methods', () => { // and resolve on `member.left` // and `layout.changed` with position off-canvas - const promiseAudienceRoomJoined = expectRoomJoined(pageTwo, { + const promiseAudienceRoomJoined = expectRoomJoinWithDefaults(pageTwo, { invokeJoin: false, + joinAs: 'audience', }) const promiseMemberWaitingForMemberLeft = pageOne.evaluate( diff --git a/internal/e2e-js/tests/roomSessionRaiseHand.spec.ts b/internal/e2e-js/tests/roomSessionRaiseHand.spec.ts index 2d4795b73..844908dc3 100644 --- a/internal/e2e-js/tests/roomSessionRaiseHand.spec.ts +++ b/internal/e2e-js/tests/roomSessionRaiseHand.spec.ts @@ -4,8 +4,8 @@ import { SERVER_URL, createTestRoomSession, randomizeRoomName, - expectRoomJoined, expectMCUVisible, + expectRoomJoinWithDefaults, } from '../utils' test.describe('RoomSession Raise/Lower hand', () => { @@ -29,7 +29,7 @@ test.describe('RoomSession Raise/Lower hand', () => { await createTestRoomSession(page, memberSettings) // --------------- Joining the room --------------- - const joinParams = await expectRoomJoined(page) + const joinParams = await expectRoomJoinWithDefaults(page) expect(joinParams.room).toBeDefined() expect(joinParams.room_session).toBeDefined() @@ -84,7 +84,7 @@ test.describe('RoomSession Raise/Lower hand', () => { await createTestRoomSession(page, memberSettings) // --------------- Joining the room --------------- - const joinParams = await expectRoomJoined(page) + const joinParams = await expectRoomJoinWithDefaults(page) expect(joinParams.room).toBeDefined() expect(joinParams.room_session).toBeDefined() diff --git a/internal/e2e-js/tests/roomSessionReattach.spec.ts b/internal/e2e-js/tests/roomSessionReattach.spec.ts index db52842b1..81be2997f 100644 --- a/internal/e2e-js/tests/roomSessionReattach.spec.ts +++ b/internal/e2e-js/tests/roomSessionReattach.spec.ts @@ -4,10 +4,10 @@ import { SERVER_URL, createTestRoomSession, randomizeRoomName, - expectRoomJoined, expectMCUVisible, expectMCUVisibleForAudience, getRemoteMediaIP, + expectRoomJoinWithDefaults, } from '../utils' type Test = { @@ -46,7 +46,9 @@ test.describe('RoomSessionReattach', () => { await createTestRoomSession(page, connectionSettings) // --------------- Joining the room --------------- - const joinParams: any = await expectRoomJoined(page) + const joinParams: any = await expectRoomJoinWithDefaults(page, { + joinAs: row.join_as, + }) expect(joinParams.room).toBeDefined() expect(joinParams.room_session).toBeDefined() @@ -79,7 +81,9 @@ test.describe('RoomSessionReattach', () => { console.time('reattach') // Join again - const reattachParams: any = await expectRoomJoined(page) + const reattachParams: any = await expectRoomJoinWithDefaults(page, { + joinAs: row.join_as, + }) console.timeEnd('reattach') expect(reattachParams.room).toBeDefined() diff --git a/internal/e2e-js/tests/roomSessionReattachBadAuth.spec.ts b/internal/e2e-js/tests/roomSessionReattachBadAuth.spec.ts index 45ec7738e..1ee98503a 100644 --- a/internal/e2e-js/tests/roomSessionReattachBadAuth.spec.ts +++ b/internal/e2e-js/tests/roomSessionReattachBadAuth.spec.ts @@ -5,8 +5,8 @@ import { createTestRoomSession, createTestRoomSessionWithJWT, randomizeRoomName, - expectRoomJoined, expectMCUVisible, + expectRoomJoinWithDefaults, } from '../utils' test.describe('RoomSessionReattachBadAuth', () => { @@ -30,7 +30,7 @@ test.describe('RoomSessionReattachBadAuth', () => { await createTestRoomSession(page, connectionSettings) // --------------- Joining the room --------------- - const joinParams: any = await expectRoomJoined(page) + const joinParams: any = await expectRoomJoinWithDefaults(page) expect(joinParams.room).toBeDefined() expect(joinParams.room_session).toBeDefined() diff --git a/internal/e2e-js/tests/roomSessionReattachMultiple.spec.ts b/internal/e2e-js/tests/roomSessionReattachMultiple.spec.ts index 70b824299..5d666b9d8 100644 --- a/internal/e2e-js/tests/roomSessionReattachMultiple.spec.ts +++ b/internal/e2e-js/tests/roomSessionReattachMultiple.spec.ts @@ -4,10 +4,10 @@ import { SERVER_URL, createTestRoomSession, randomizeRoomName, - expectRoomJoined, expectMCUVisible, expectMCUVisibleForAudience, deleteRoom, + expectRoomJoinWithDefaults, } from '../utils' type Test = { @@ -47,7 +47,9 @@ test.describe('RoomSessionReattach', () => { } await createTestRoomSession(page, connectionSettings) - const joinParams: any = await expectRoomJoined(page) + const joinParams: any = await expectRoomJoinWithDefaults(page, { + joinAs: row.join_as, + }) const roomId = joinParams.room_session.room_id expect(joinParams.room).toBeDefined() @@ -77,7 +79,9 @@ test.describe('RoomSessionReattach', () => { console.time(`time-reattach-${row.join_as}`) // Join again - const reattachParams: any = await expectRoomJoined(page) + const reattachParams: any = await expectRoomJoinWithDefaults(page, { + joinAs: row.join_as, + }) console.timeEnd(`time-reattach-${row.join_as}`) expect(reattachParams.room).toBeDefined() @@ -106,7 +110,9 @@ test.describe('RoomSessionReattach', () => { console.time(`time-reattach-${row.join_as}-2`) // Join again - const reattachParams2: any = await expectRoomJoined(page) + const reattachParams2: any = await expectRoomJoinWithDefaults(page, { + joinAs: row.join_as, + }) console.timeEnd(`time-reattach-${row.join_as}-2`) expect(reattachParams2.room).toBeDefined() diff --git a/internal/e2e-js/tests/roomSessionReattachScreenshare.spec.ts b/internal/e2e-js/tests/roomSessionReattachScreenshare.spec.ts index 115e01bd8..2fcb444f8 100644 --- a/internal/e2e-js/tests/roomSessionReattachScreenshare.spec.ts +++ b/internal/e2e-js/tests/roomSessionReattachScreenshare.spec.ts @@ -4,11 +4,11 @@ import { SERVER_URL, createTestRoomSession, randomizeRoomName, - expectRoomJoined, expectMCUVisible, expectMCUVisibleForAudience, getRemoteMediaIP, expectScreenShareJoined, + expectRoomJoinWithDefaults, } from '../utils' type Test = { @@ -44,7 +44,9 @@ test.describe('RoomSessionReattach', () => { await createTestRoomSession(page, connectionSettings) // --------------- Joining the room --------------- - const joinParams: any = await expectRoomJoined(page) + const joinParams: any = await expectRoomJoinWithDefaults(page, { + joinAs: row.join_as, + }) expect(joinParams.room).toBeDefined() expect(joinParams.room_session).toBeDefined() @@ -84,7 +86,9 @@ test.describe('RoomSessionReattach', () => { console.time('reattach') // Join again - const reattachParams: any = await expectRoomJoined(page) + const reattachParams: any = await expectRoomJoinWithDefaults(page, { + joinAs: row.join_as, + }) console.timeEnd('reattach') expect(reattachParams.room).toBeDefined() diff --git a/internal/e2e-js/tests/roomSessionReattachWrongCallId.spec.ts b/internal/e2e-js/tests/roomSessionReattachWrongCallId.spec.ts index fde0f0586..c98e68e5a 100644 --- a/internal/e2e-js/tests/roomSessionReattachWrongCallId.spec.ts +++ b/internal/e2e-js/tests/roomSessionReattachWrongCallId.spec.ts @@ -5,9 +5,9 @@ import { SERVER_URL, createTestRoomSession, randomizeRoomName, - expectRoomJoined, expectMCUVisible, expectMCUVisibleForAudience, + expectRoomJoinWithDefaults, } from '../utils' type Test = { @@ -48,7 +48,9 @@ test.describe('RoomSessionReattachWrongCallId', () => { await createTestRoomSession(page, connectionSettings) // --------------- Joining the room --------------- - const joinParams: any = await expectRoomJoined(page) + const joinParams: any = await expectRoomJoinWithDefaults(page, { + joinAs: row.join_as, + }) expect(joinParams.room).toBeDefined() expect(joinParams.room_session).toBeDefined() diff --git a/internal/e2e-js/tests/roomSessionReattachWrongProtocol.spec.ts b/internal/e2e-js/tests/roomSessionReattachWrongProtocol.spec.ts index 90a24c9ff..2b5556b4b 100644 --- a/internal/e2e-js/tests/roomSessionReattachWrongProtocol.spec.ts +++ b/internal/e2e-js/tests/roomSessionReattachWrongProtocol.spec.ts @@ -4,8 +4,8 @@ import { SERVER_URL, createTestRoomSession, randomizeRoomName, - expectRoomJoined, expectMCUVisible, + expectRoomJoinWithDefaults, } from '../utils' test.describe('RoomSessionReattachWrongProtocol', () => { @@ -30,7 +30,7 @@ test.describe('RoomSessionReattachWrongProtocol', () => { await createTestRoomSession(page, connectionSettings) // --------------- Joining the room --------------- - const joinParams: any = await expectRoomJoined(page) + const joinParams: any = await expectRoomJoinWithDefaults(page) expect(joinParams.room).toBeDefined() expect(joinParams.room_session).toBeDefined() diff --git a/internal/e2e-js/tests/roomSessionRemoveAllMembers.spec.ts b/internal/e2e-js/tests/roomSessionRemoveAllMembers.spec.ts index 8ceaaa3dc..af7157c58 100644 --- a/internal/e2e-js/tests/roomSessionRemoveAllMembers.spec.ts +++ b/internal/e2e-js/tests/roomSessionRemoveAllMembers.spec.ts @@ -3,10 +3,10 @@ import type { Video } from '@signalwire/js' import { SERVER_URL, createTestRoomSession, - expectRoomJoined, expectMCUVisible, expectPageReceiveAudio, randomizeRoomName, + expectRoomJoinWithDefaults, } from '../utils' test.describe('RoomSession removeAllMembers method', () => { @@ -41,7 +41,7 @@ test.describe('RoomSession removeAllMembers method', () => { }) ) - await Promise.all(allPages.map((page) => expectRoomJoined(page))) + await Promise.all(allPages.map((page) => expectRoomJoinWithDefaults(page))) await Promise.all(allPages.map((page) => expectMCUVisible(page))) await Promise.all(allPages.map((page) => expectPageReceiveAudio(page))) diff --git a/internal/e2e-js/tests/roomSessionStreaming.spec.ts b/internal/e2e-js/tests/roomSessionStreaming.spec.ts index 5af16b2c1..4bf3e75ab 100644 --- a/internal/e2e-js/tests/roomSessionStreaming.spec.ts +++ b/internal/e2e-js/tests/roomSessionStreaming.spec.ts @@ -3,9 +3,9 @@ import type { Video } from '@signalwire/js' import { SERVER_URL, createTestRoomSession, - expectRoomJoined, expectMCUVisible, randomizeRoomName, + expectRoomJoinWithDefaults, } from '../utils' test.describe('RoomSession', () => { @@ -38,22 +38,24 @@ test.describe('RoomSession', () => { createTestRoomSession(pageThree, connectionSettings), ]) - // --------------- Joining from the 2nd tab and resolve on 'stream.started' --------------- + // --------------- Promise that resolve on 'stream.started' --------------- const pageTwoStreamPromise = pageTwo.evaluate(() => { return new Promise((resolve) => { // @ts-expect-error const roomObj: Video.RoomSession = window._roomObj roomObj.on('stream.started', (stream: any) => resolve(stream)) - roomObj.join() }) }) // --------------- Joining from the 1st tab and resolve on 'room.joined' --------------- - await expectRoomJoined(pageOne) + await expectRoomJoinWithDefaults(pageOne) // Checks that the video is visible on pageOne await expectMCUVisible(pageOne) + // --------------- Joining from the 2nd tab and resolve on 'room.joined' --------------- + await expectRoomJoinWithDefaults(pageTwo) + const streamingURL = `${process.env.RTMP_SERVER}${process.env.RTMP_STREAM_NAME}` // --------------- Start stream from 1st room --------------- @@ -84,55 +86,57 @@ test.describe('RoomSession', () => { // Checks that the video is visible on pageTwo await expectMCUVisible(pageTwo) - // --------------- Joining from the 3rd tab and get the active streams --------------- - const { streamsOnJoined, streamsOnGet, streamOnEnd }: any = - await pageThree.evaluate(() => { - return new Promise((resolve) => { - // @ts-expect-error - const roomObj: Video.RoomSession = window._roomObj - - roomObj.on('room.joined', async (params) => { - const result = await roomObj.getStreams() - - const streamOnEnd = await Promise.all( - result.streams.map((stream: any) => { - const streamEnded = new Promise((resolve) => { - roomObj.on('stream.ended', (params) => { - if (params.id === stream.id) { - resolve(params) - } - }) - }) + // --------------- Get the active streams from 3rd tab --------------- + const pageThreeStreamPromise: any = pageThree.evaluate(() => { + return new Promise((resolve) => { + // @ts-expect-error + const roomObj: Video.RoomSession = window._roomObj + + roomObj.on('room.joined', async (params) => { + const result = await roomObj.getStreams() - stream.stop().then(() => { - console.log(`Stream ${stream.id} stopped!`) + const streamOnEnd = await Promise.all( + result.streams.map((stream: any) => { + const streamEnded = new Promise((resolve) => { + roomObj.on('stream.ended', (params) => { + if (params.id === stream.id) { + resolve(params) + } }) + }) - return streamEnded + stream.stop().then(() => { + console.log(`Stream ${stream.id} stopped!`) }) - ) - - const streamSerializer = (stream: any) => { - return { - id: stream.id, - roomSessionId: stream.roomSessionId, - state: stream.state, - url: stream.url, - stop: stream.stop, - } - } - resolve({ - streamsOnJoined: - params.room_session.streams?.map(streamSerializer), - streamsOnGet: result.streams.map(streamSerializer), - streamOnEnd: streamOnEnd.map(streamSerializer), + return streamEnded }) - }) + ) + + const streamSerializer = (stream: any) => { + return { + id: stream.id, + roomSessionId: stream.roomSessionId, + state: stream.state, + url: stream.url, + stop: stream.stop, + } + } - roomObj.join() + resolve({ + streamsOnJoined: params.room_session.streams?.map(streamSerializer), + streamsOnGet: result.streams.map(streamSerializer), + streamOnEnd: streamOnEnd.map(streamSerializer), + }) }) }) + }) + + // --------------- Joining from the 3rd tab and resolve on 'room.joined' --------------- + await expectRoomJoinWithDefaults(pageThree) + + const { streamsOnJoined, streamsOnGet, streamOnEnd } = + await pageThreeStreamPromise expect(streamsOnJoined.length).toEqual(streamsOnGet.length) expect(streamsOnGet.length).toEqual(streamOnEnd.length) diff --git a/internal/e2e-js/tests/roomSessionStreamingAPI.spec.ts b/internal/e2e-js/tests/roomSessionStreamingAPI.spec.ts index 6415239f6..e8dbdc86d 100644 --- a/internal/e2e-js/tests/roomSessionStreamingAPI.spec.ts +++ b/internal/e2e-js/tests/roomSessionStreamingAPI.spec.ts @@ -6,8 +6,8 @@ import { randomizeRoomName, createStreamForRoom, deleteRoom, - expectRoomJoined, expectMCUVisible, + expectRoomJoinWithDefaults, } from '../utils' test.describe('Room Streaming from REST API', () => { @@ -40,10 +40,9 @@ test.describe('Room Streaming from REST API', () => { `${process.env.RTMP_SERVER}${streamName}` ) + // Create and join room from the 1st tab and resolve on 'room.joined' await createTestRoomSession(pageOne, connectionSettings) - - // --------------- Joining from the 1st tab and resolve on 'room.joined' --------------- - await expectRoomJoined(pageOne) + await expectRoomJoinWithDefaults(pageOne) // Checks that the video is visible on pageOne await expectMCUVisible(pageOne) @@ -52,7 +51,6 @@ test.describe('Room Streaming from REST API', () => { const STREAM_CHECK_URL = process.env.STREAM_CHECK_URL! await pageTwo.goto(STREAM_CHECK_URL, { waitUntil: 'domcontentloaded' }) await pageTwo.waitForSelector(`text=${streamName}`, { timeout: 10_000 }) - await deleteRoom(roomData.id) }) }) diff --git a/internal/e2e-js/tests/roomSessionTalkingEventsParticipant.spec.ts b/internal/e2e-js/tests/roomSessionTalkingEventsParticipant.spec.ts index 4fd0fcff5..55459deba 100644 --- a/internal/e2e-js/tests/roomSessionTalkingEventsParticipant.spec.ts +++ b/internal/e2e-js/tests/roomSessionTalkingEventsParticipant.spec.ts @@ -2,9 +2,9 @@ import { test, expect } from '../fixtures' import { SERVER_URL, createTestRoomSession, - expectRoomJoined, expectMCUVisible, expectMemberTalkingEvent, + expectRoomJoinWithDefaults, } from '../utils' test.describe('RoomSession talking events to participant', () => { @@ -43,13 +43,13 @@ test.describe('RoomSession talking events to participant', () => { createTestRoomSession(pageTwo, member2Settings), ]) - await expectRoomJoined(pageTwo) + await expectRoomJoinWithDefaults(pageTwo) await expectMCUVisible(pageTwo) const talkingTruePromisePageTwo = expectMemberTalkingEvent(pageTwo) - const joinParams: any = await expectRoomJoined(pageOne) + const joinParams: any = await expectRoomJoinWithDefaults(pageOne) await expectMCUVisible(pageOne) diff --git a/internal/e2e-js/tests/roomSessionTalkingEventsToAudience.spec.ts b/internal/e2e-js/tests/roomSessionTalkingEventsToAudience.spec.ts index 8857aa633..493b374cb 100644 --- a/internal/e2e-js/tests/roomSessionTalkingEventsToAudience.spec.ts +++ b/internal/e2e-js/tests/roomSessionTalkingEventsToAudience.spec.ts @@ -1,10 +1,11 @@ +import { Video } from '@signalwire/js' import { test } from '../fixtures' import { SERVER_URL, createTestRoomSession, - expectRoomJoined, expectMCUVisible, expectMCUVisibleForAudience, + expectRoomJoinWithDefaults, } from '../utils' test.describe('RoomSession talking events to audience', () => { @@ -43,7 +44,7 @@ test.describe('RoomSession talking events to audience', () => { ]) // --------------- Joining from the 2nd tab as audience and resolve on 'room.joined' --------------- - await expectRoomJoined(pageTwo) + await expectRoomJoinWithDefaults(pageTwo, { joinAs: 'audience' }) // Checks that the video is visible on pageTwo await expectMCUVisibleForAudience(pageTwo) @@ -60,7 +61,7 @@ test.describe('RoomSession talking events to audience', () => { const waitForMemberJoined = pageTwo.evaluate(async () => { return new Promise((resolve, reject) => { // @ts-expect-error - const roomObj = window._roomObj + const roomObj: Video.RoomSession = window._roomObj roomObj.on('member.joined', ({ member }) => { if (member.name === 'e2e_member') { resolve(true) @@ -74,7 +75,7 @@ test.describe('RoomSession talking events to audience', () => { await pageTwo.waitForTimeout(1000) // --------------- Joining from the 1st tab as member and resolve on 'room.joined' --------------- - await expectRoomJoined(pageOne) + await expectRoomJoinWithDefaults(pageOne) // Checks that the video is visible on pageOne await expectMCUVisible(pageOne) diff --git a/internal/e2e-js/tests/roomSessionUnauthorized.spec.ts b/internal/e2e-js/tests/roomSessionUnauthorized.spec.ts index 73f875d10..e1b396d60 100644 --- a/internal/e2e-js/tests/roomSessionUnauthorized.spec.ts +++ b/internal/e2e-js/tests/roomSessionUnauthorized.spec.ts @@ -4,8 +4,8 @@ import { SERVER_URL, createTestRoomSession, randomizeRoomName, - expectRoomJoined, expectMCUVisibleForAudience, + expectRoomJoinWithDefaults, } from '../utils' test.describe('RoomSession unauthorized methods for audience', () => { @@ -40,7 +40,9 @@ test.describe('RoomSession unauthorized methods for audience', () => { }) // --------------- Joining the room --------------- - const joinParams = await expectRoomJoined(page) + const joinParams = await expectRoomJoinWithDefaults(page, { + joinAs: 'audience', + }) expect(joinParams.room).toBeDefined() expect(joinParams.room_session).toBeDefined() diff --git a/internal/e2e-js/tests/roomSessionUpdateMedia.spec.ts b/internal/e2e-js/tests/roomSessionUpdateMedia.spec.ts index 5caefb817..23547ce8a 100644 --- a/internal/e2e-js/tests/roomSessionUpdateMedia.spec.ts +++ b/internal/e2e-js/tests/roomSessionUpdateMedia.spec.ts @@ -3,7 +3,7 @@ import { Page, test, expect } from '../fixtures' import { createTestRoomSession, expectMCUVisible, - expectRoomJoined, + expectRoomJoinWithDefaults, expectStatWithPolling, getStats, randomizeRoomName, @@ -25,7 +25,7 @@ test.describe('RoomSession Update Media', () => { await createTestRoomSession(page, memberSettings) // --------------- Joining the room --------------- - const joinParams = await expectRoomJoined(page) + const joinParams = await expectRoomJoinWithDefaults(page) expect(joinParams.room).toBeDefined() expect(joinParams.room_session).toBeDefined() diff --git a/internal/e2e-js/tests/roomSettings.spec.ts b/internal/e2e-js/tests/roomSettings.spec.ts index 440fffd4a..a55c58ec9 100644 --- a/internal/e2e-js/tests/roomSettings.spec.ts +++ b/internal/e2e-js/tests/roomSettings.spec.ts @@ -6,8 +6,8 @@ import { deleteRoom, CreateOrUpdateRoomOptions, randomizeRoomName, - expectRoomJoined, expectRecordingStarted, + expectRoomJoinWithDefaults, } from '../utils' interface TestConfig { @@ -38,18 +38,22 @@ test.describe('Room Settings', () => { expect: (params) => { // match either room.joined or recording.started events try { - expect(params).toEqual(expect.objectContaining({ - room_session: expect.objectContaining({ - recording: true - }), - room: expect.objectContaining({ - recording: true + expect(params).toEqual( + expect.objectContaining({ + room_session: expect.objectContaining({ + recording: true, + }), + room: expect.objectContaining({ + recording: true, + }), }) - })) - } catch(_e) { - expect(params).toEqual(expect.objectContaining({ - state: 'recording' - })) + ) + } catch (_e) { + expect(params).toEqual( + expect.objectContaining({ + state: 'recording', + }) + ) } }, }, @@ -77,8 +81,8 @@ test.describe('Room Settings', () => { // --------------- wait for room.joined or recording.started event--------------- let params = await Promise.race([ - expectRoomJoined(page), - expectRecordingStarted(page) + expectRoomJoinWithDefaults(page), + expectRecordingStarted(page), ]) // Run custom expectations for each run row.expect(params) diff --git a/internal/e2e-js/utils.ts b/internal/e2e-js/utils.ts index 2fee64317..8a1b97328 100644 --- a/internal/e2e-js/utils.ts +++ b/internal/e2e-js/utils.ts @@ -158,7 +158,7 @@ export const createTestSATToken = async () => { } interface GuestSATTokenRequest { - allowed_addresses: string[]; + allowed_addresses: string[] } export const createGuestSATToken = async (bodyData: GuestSATTokenRequest) => { const response = await fetch( @@ -191,7 +191,6 @@ export const getResourceAddresses = async (resource_id: string) => { return data } - interface CreateTestCRTOptions { ttl: number member_id: string @@ -225,7 +224,6 @@ export const createTestRoomSession = async ( vrt: CreateTestVRTOptions /** set of events to automatically subscribe before room.join() */ initialEvents?: string[] - expectToJoin?: boolean roomSessionOptions?: Record shouldPassRootElement?: boolean attachSagaMonitor?: boolean @@ -307,18 +305,6 @@ export const createTestRoomSession = async ( } ) - if (options.expectToJoin !== false) { - expectRoomJoined(page, { invokeJoin: false }).then(async (params) => { - await expectMemberId(page, params.member_id) - - const dir = options.vrt.join_as === 'audience' ? 'recvonly' : 'sendrecv' - await expectSDPDirection(page, dir, true) - - const mode = options.vrt.join_as === 'audience' ? 'audience' : 'member' - await expectInteractivityMode(page, mode) - }) - } - return roomSession } @@ -509,8 +495,8 @@ export const createCFClient = async ( page: Page, params?: CreateCFClientParams ) => { - const sat = await createTestSATToken(); - return createCFClientWithToken(page, sat, params); + const sat = await createTestSATToken() + return createCFClientWithToken(page, sat, params) } export const createGuestCFClient = async ( @@ -518,8 +504,8 @@ export const createGuestCFClient = async ( bodyData: GuestSATTokenRequest, params?: CreateCFClientParams ) => { - const sat = await createGuestSATToken(bodyData); - return createCFClientWithToken(page, sat, params); + const sat = await createGuestSATToken(bodyData) + return createCFClientWithToken(page, sat, params) } const createCFClientWithToken = async ( @@ -563,7 +549,6 @@ const createCFClientWithToken = async ( }, } - // @ts-expect-error const SignalWire = window._SWJS.SignalWire const client: SignalWireContract = await SignalWire({ host: options.RELAY_HOST, @@ -572,7 +557,6 @@ const createCFClientWithToken = async ( ...(options.attachSagaMonitor && { sagaMonitor }), }) - // @ts-expect-error window._client = client return client }, @@ -1403,7 +1387,7 @@ export class MockWebhookServer extends EventEmitter { constructor() { super() this.app = express() - this.app.use(express.urlencoded({ extended: true })); + this.app.use(express.urlencoded({ extended: true })) const self = this this.app.all('/', (req: Request, res: Response) => { self.emit('request', req) @@ -1415,7 +1399,7 @@ export class MockWebhookServer extends EventEmitter { listen(port: number = 18989, startTunnel: boolean = false) { return new Promise((resolve) => { this.server = this.app.listen(port, (err?: Error) => { - if(err) { + if (err) { console.error('Error Starting MockWebhookServer: ', err) process.exit(5) } @@ -1424,7 +1408,7 @@ export class MockWebhookServer extends EventEmitter { return } }) - + if (startTunnel) { const MAX_RETRIES = 3 const tunnel = (attempt = 0) => { @@ -1436,13 +1420,13 @@ export class MockWebhookServer extends EventEmitter { 'proxy', '--headless', '--insecure', - `${port}` + `${port}`, ]) this.zrokProcess.on('error', (err) => { - console.error('zrok process error event: ', err); + console.error('zrok process error event: ', err) }) this.zrokProcess.stdout.on('data', (data) => { - console.log(`zrok processs stdout: ${data}`); + console.log(`zrok processs stdout: ${data}`) }) this.zrokProcess.stderr.on('data', (data) => { const dataStr = data.toString('utf-8') @@ -1451,7 +1435,12 @@ export class MockWebhookServer extends EventEmitter { const logObj = JSON.parse(dataStr) if (logObj.level == 'info') { console.log(`zrok process stdout: ${data}`) - if (logObj.msg && logObj.msg.startsWith('access your zrok share at the following endpoints:')) { + if ( + logObj.msg && + logObj.msg.startsWith( + 'access your zrok share at the following endpoints:' + ) + ) { const tunnelUrl = logObj.msg.split('\n')[1].trim() resolve(tunnelUrl as string) } @@ -1462,23 +1451,23 @@ export class MockWebhookServer extends EventEmitter { if (dataStr.startsWith('[ERROR]: unable to create share')) { console.error('Error Starting Zrok Share: ', dataStr) if (attempt < MAX_RETRIES) { - console.log(`Retrying (attempt: ${attempt+1} `) - tunnel(attempt+1) + console.log(`Retrying (attempt: ${attempt + 1} `) + tunnel(attempt + 1) } else { process.exit(5) } } } }) - + this.zrokProcess.on('close', (code) => { - console.log(`zrok process exited with code ${code}`); + console.log(`zrok process exited with code ${code}`) }) } catch (err) { console.error('Error Starting Zrok Share: ', err) if (attempt < MAX_RETRIES) { - console.log(`Retrying (attempt: ${attempt+1} `) - tunnel(attempt+1) + console.log(`Retrying (attempt: ${attempt + 1} `) + tunnel(attempt + 1) } else { process.exit(5) } @@ -1506,7 +1495,6 @@ export class MockWebhookServer extends EventEmitter { } } - // #endregion // #region Utilities for Resources CRUD operations @@ -1792,6 +1780,23 @@ export const expectRoomJoined = ( }, options) } +export const expectRoomJoinWithDefaults = async ( + page: Page, + options?: { + invokeJoin?: boolean + joinAs?: CreateTestVRTOptions['join_as'] + } +) => { + const { invokeJoin = true, joinAs = 'member' } = options || {} + const params = await expectRoomJoined(page, { invokeJoin }) + await expectMemberId(page, params.member_id) + const dir = joinAs === 'audience' ? 'recvonly' : 'sendrecv' + await expectSDPDirection(page, dir, true) + const mode = joinAs === 'audience' ? 'audience' : 'member' + await expectInteractivityMode(page, mode) + return params +} + export const expectRecordingStarted = (page: Page) => { return page.evaluate(() => { return new Promise((resolve, reject) => {