From 7c0289043a90fbb881a53ae77c89a46f96e98edb Mon Sep 17 00:00:00 2001 From: Ammar Ansari Date: Thu, 2 Nov 2023 15:06:28 +0500 Subject: [PATCH] test for lower hand using web sdk --- .../src/playwright/videoHandRaise.test.ts | 66 ++++++++++++++++--- .../src/playwright/videoUtils.ts | 4 ++ 2 files changed, 61 insertions(+), 9 deletions(-) diff --git a/internal/e2e-realtime-api/src/playwright/videoHandRaise.test.ts b/internal/e2e-realtime-api/src/playwright/videoHandRaise.test.ts index 06bdb95eb..eb89e9a38 100644 --- a/internal/e2e-realtime-api/src/playwright/videoHandRaise.test.ts +++ b/internal/e2e-realtime-api/src/playwright/videoHandRaise.test.ts @@ -25,7 +25,7 @@ test.describe('Video room hand raise/lower', () => { await context.close() }) - test('should raise member one hand using room session instance', async () => { + test('should raise memberOne hand using room session instance via Node SDK', async () => { // Expect no hand raise from both members expect(memberOne.handraised).toBe(false) expect(memberTwo.handraised).toBe(false) @@ -55,16 +55,18 @@ test.describe('Video room hand raise/lower', () => { ) // Wait for member.updated events to be received on the Web SDK for both pages - const memberOneUpdatedWeb = await memberOnePageOne - await memberOnePageTwo + const memberOnePageOneUpdatedWeb = await memberOnePageOne + const memberOnePageTwoUpdatedWeb = await memberOnePageTwo // Expect a hand raise to be true on both Node & Web SDKs for memberOne only expect(memberOneUpdatedNode.handraised).toBe(true) - expect(memberOneUpdatedWeb.handraised).toBe(true) + expect(memberOnePageOneUpdatedWeb.handraised).toBe(true) + expect(memberOnePageTwoUpdatedWeb.handraised).toBe(true) + expect(memberTwo.handraised).toBe(false) }) - test('should raise member two hand using member instance', async () => { + test('should raise memberTwo hand using member instance via Node SDK', async () => { // Expect member.updated event on pageOne via Web SDK for memberTwo const memberTwoPageOne = expectMemberUpdated({ page: pageOne, @@ -77,7 +79,7 @@ test.describe('Video room hand raise/lower', () => { memberName: memberTwo.name, }) - // Raise memberTwo hand using a member object using Node SDK + // Raise memberTwo hand using a member object via Node SDK const memberTwoUpdatedNode = await new Promise( async (resolve, _reject) => { roomSession.on('member.updated', (member) => { @@ -90,11 +92,57 @@ test.describe('Video room hand raise/lower', () => { ) // Wait for member.updated events to be received on the Web SDK for both pages - const memberTwoUpdatedWeb = await memberTwoPageOne - await memberTwoPageTwo + const memberTwoPageOneUpdatedWeb = await memberTwoPageOne + const memberTwoPageTwoUpdatedWeb = await memberTwoPageTwo // Expect a hand raise to be true on both Node & Web SDKs for memberTwo only expect(memberTwoUpdatedNode.handraised).toBe(true) - expect(memberTwoUpdatedWeb.handraised).toBe(true) + expect(memberTwoPageOneUpdatedWeb.handraised).toBe(true) + expect(memberTwoPageTwoUpdatedWeb.handraised).toBe(true) + }) + + test('should lower memberOne hand using room session instance via Web SDK', async () => { + // Expect member.updated event on pageOne via Web SDK for memberOne + const memberOnePageOne = expectMemberUpdated({ + page: pageOne, + memberName: memberOne.name, + }) + + // Expect member.updated event on pageTwo via Web SDK for memberOne + const memberOnePageTwo = expectMemberUpdated({ + page: pageTwo, + memberName: memberOne.name, + }) + + // Expect member.updated event via Node SDK for memberOne + const memberOneNode = new Promise( + async (resolve, _reject) => { + roomSession.on('member.updated', (member) => { + if (member.name === memberOne.name) { + resolve(member) + } + }) + } + ) + + await pageOne.evaluate(async () => { + // @ts-expect-error + const roomSession = window._roomObj + + // MemberId is not needed here since roomSession on pageOne refers to memberOne's roomSession + await roomSession.setRaisedHand({ raised: false }) + }) + + // Wait for member.updated events to be received on the Web SDK for both pages + const memberOnePageOneUpdatedWeb = await memberOnePageOne + const memberOnePageTwoUpdatedWeb = await memberOnePageTwo + + // Wait for member.updated events to be received on the Node SDK + const memberOneUpdatedNode = await memberOneNode + + // Expect a hand raise to be false on both Node & Web SDKs for memberOne only + expect(memberOneUpdatedNode.handraised).toBe(false) + expect(memberOnePageOneUpdatedWeb.handraised).toBe(false) + expect(memberOnePageTwoUpdatedWeb.handraised).toBe(false) }) }) diff --git a/internal/e2e-realtime-api/src/playwright/videoUtils.ts b/internal/e2e-realtime-api/src/playwright/videoUtils.ts index 3576a5e23..ac436ae43 100644 --- a/internal/e2e-realtime-api/src/playwright/videoUtils.ts +++ b/internal/e2e-realtime-api/src/playwright/videoUtils.ts @@ -21,6 +21,10 @@ const PERMISSIONS = [ 'room.recording', 'room.playback', 'room.playback_seek', + 'room.member.raisehand', + 'room.member.lowerhand', + 'room.self.raisehand', + 'room.self.lowerhand', ] type CreateVRTParams = {