Fix a number of remaining test failures

This commit is contained in:
Robin
2025-10-22 22:57:29 -04:00
parent a1c7255cc6
commit 58cd12b9b8
7 changed files with 63 additions and 20 deletions

View File

@@ -6,7 +6,7 @@ Please see LICENSE in the repository root for full details.
*/ */
import { act, render } from "@testing-library/react"; import { act, render } from "@testing-library/react";
import { expect, test } from "vitest"; import { expect, test, vi } from "vitest";
import { TooltipProvider } from "@vector-im/compound-web"; import { TooltipProvider } from "@vector-im/compound-web";
import { userEvent } from "@testing-library/user-event"; import { userEvent } from "@testing-library/user-event";
import { type ReactNode } from "react"; import { type ReactNode } from "react";
@@ -19,6 +19,8 @@ import { alice, local, localRtcMember } from "../utils/test-fixtures";
import { type MockRTCSession } from "../utils/test"; import { type MockRTCSession } from "../utils/test";
import { ReactionsSenderProvider } from "../reactions/useReactionsSender"; import { ReactionsSenderProvider } from "../reactions/useReactionsSender";
vi.mock("livekit-client/e2ee-worker?worker");
const localIdent = `${localRtcMember.userId}:${localRtcMember.deviceId}`; const localIdent = `${localRtcMember.userId}:${localRtcMember.deviceId}`;
function TestComponent({ function TestComponent({

View File

@@ -7,7 +7,6 @@ Please see LICENSE in the repository root for full details.
import { render } from "@testing-library/react"; import { render } from "@testing-library/react";
import { import {
afterAll,
beforeEach, beforeEach,
expect, expect,
type MockedFunction, type MockedFunction,
@@ -16,9 +15,17 @@ import {
afterEach, afterEach,
} from "vitest"; } from "vitest";
import { act } from "react"; import { act } from "react";
import { type CallMembership } from "matrix-js-sdk/lib/matrixrtc"; import { type RoomMember } from "matrix-js-sdk";
import {
type LivekitTransport,
type CallMembership,
} from "matrix-js-sdk/lib/matrixrtc";
import { mockRtcMembership } from "../utils/test"; import {
exampleTransport,
mockMatrixRoomMember,
mockRtcMembership,
} from "../utils/test";
import { CallEventAudioRenderer } from "./CallEventAudioRenderer"; import { CallEventAudioRenderer } from "./CallEventAudioRenderer";
import { useAudioContext } from "../useAudioContext"; import { useAudioContext } from "../useAudioContext";
import { prefetchSounds } from "../soundUtils"; import { prefetchSounds } from "../soundUtils";
@@ -26,21 +33,23 @@ import { getBasicCallViewModelEnvironment } from "../utils/test-viewmodel";
import { import {
alice, alice,
aliceRtcMember, aliceRtcMember,
bob,
bobRtcMember, bobRtcMember,
local, local,
localRtcMember, localRtcMember,
} from "../utils/test-fixtures"; } from "../utils/test-fixtures";
import { MAX_PARTICIPANT_COUNT_FOR_SOUND } from "../state/CallViewModel"; import { MAX_PARTICIPANT_COUNT_FOR_SOUND } from "../state/CallViewModel";
vitest.mock("livekit-client/e2ee-worker?worker");
vitest.mock("../useAudioContext"); vitest.mock("../useAudioContext");
vitest.mock("../soundUtils"); vitest.mock("../soundUtils");
vitest.mock("../rtcSessionHelpers", async (importOriginal) => ({
...(await importOriginal()),
makeTransport: (): [LivekitTransport] => [exampleTransport],
}));
afterEach(() => { afterEach(() => {
vitest.resetAllMocks(); vitest.clearAllMocks();
});
afterAll(() => {
vitest.restoreAllMocks();
}); });
let playSound: MockedFunction< let playSound: MockedFunction<
@@ -70,6 +79,7 @@ test("plays one sound when entering a call", () => {
const { vm, rtcMemberships$ } = getBasicCallViewModelEnvironment([ const { vm, rtcMemberships$ } = getBasicCallViewModelEnvironment([
local, local,
alice, alice,
bob,
]); ]);
render(<CallEventAudioRenderer vm={vm} />); render(<CallEventAudioRenderer vm={vm} />);
@@ -84,6 +94,7 @@ test("plays a sound when a user joins", () => {
const { vm, rtcMemberships$ } = getBasicCallViewModelEnvironment([ const { vm, rtcMemberships$ } = getBasicCallViewModelEnvironment([
local, local,
alice, alice,
bob,
]); ]);
render(<CallEventAudioRenderer vm={vm} />); render(<CallEventAudioRenderer vm={vm} />);
@@ -122,15 +133,16 @@ test("does not play a sound before the call is successful", () => {
}); });
test("plays no sound when the participant list is more than the maximum size", () => { test("plays no sound when the participant list is more than the maximum size", () => {
const mockMembers: RoomMember[] = [local];
const mockRtcMemberships: CallMembership[] = [localRtcMember]; const mockRtcMemberships: CallMembership[] = [localRtcMember];
for (let i = 0; i < MAX_PARTICIPANT_COUNT_FOR_SOUND; i++) { for (let i = 0; i < MAX_PARTICIPANT_COUNT_FOR_SOUND; i++) {
mockRtcMemberships.push( const membership = mockRtcMembership(`@user${i}:example.org`, `DEVICE${i}`);
mockRtcMembership(`@user${i}:example.org`, `DEVICE${i}`), mockMembers.push(mockMatrixRoomMember(membership));
); mockRtcMemberships.push(membership);
} }
const { vm, rtcMemberships$ } = getBasicCallViewModelEnvironment( const { vm, rtcMemberships$ } = getBasicCallViewModelEnvironment(
[local, alice], mockMembers,
mockRtcMemberships, mockRtcMemberships,
); );
@@ -150,6 +162,7 @@ test("plays one sound when a hand is raised", () => {
const { vm, handRaisedSubject$ } = getBasicCallViewModelEnvironment([ const { vm, handRaisedSubject$ } = getBasicCallViewModelEnvironment([
local, local,
alice, alice,
bob,
]); ]);
render(<CallEventAudioRenderer vm={vm} />); render(<CallEventAudioRenderer vm={vm} />);

View File

@@ -58,6 +58,7 @@ vi.mock("../useAudioContext");
vi.mock("../tile/GridTile"); vi.mock("../tile/GridTile");
vi.mock("../tile/SpotlightTile"); vi.mock("../tile/SpotlightTile");
vi.mock("@livekit/components-react"); vi.mock("@livekit/components-react");
vi.mock("livekit-client/e2ee-worker?worker");
vi.mock("../e2ee/sharedKeyManagement"); vi.mock("../e2ee/sharedKeyManagement");
vi.mock("../livekit/MatrixAudioRenderer"); vi.mock("../livekit/MatrixAudioRenderer");
vi.mock("react-use-measure", () => ({ vi.mock("react-use-measure", () => ({

View File

@@ -45,6 +45,7 @@ function TestComponent({ vm }: { vm: CallViewModel }): ReactNode {
); );
} }
vitest.mock("livekit-client/e2ee-worker?worker");
vitest.mock("../useAudioContext"); vitest.mock("../useAudioContext");
vitest.mock("../soundUtils"); vitest.mock("../soundUtils");

View File

@@ -6,7 +6,7 @@ Please see LICENSE in the repository root for full details.
*/ */
import { render } from "@testing-library/react"; import { render } from "@testing-library/react";
import { expect, test, afterEach } from "vitest"; import { expect, test, afterEach, vi } from "vitest";
import { act } from "react"; import { act } from "react";
import { showReactions } from "../settings/settings"; import { showReactions } from "../settings/settings";
@@ -20,6 +20,8 @@ import {
} from "../utils/test-fixtures"; } from "../utils/test-fixtures";
import { getBasicCallViewModelEnvironment } from "../utils/test-viewmodel"; import { getBasicCallViewModelEnvironment } from "../utils/test-viewmodel";
vi.mock("livekit-client/e2ee-worker?worker");
afterEach(() => { afterEach(() => {
showReactions.setValue(showReactions.defaultValue); showReactions.setValue(showReactions.defaultValue);
}); });

View File

@@ -83,20 +83,32 @@ exports[`InCallView > rendering > renders 1`] = `
class="nav rightNav" class="nav rightNav"
/> />
</header> </header>
<div>
mocked: MatrixAudioRenderer
</div>
<div <div
class="scrollingGrid grid" class="scrollingGrid grid"
> >
<div <div
class="scrolling" class="layer"
style="--gap: 20px; --width: NaNpx; --height: NaNpx;" >
/> <div
class="container slot"
data-id="1"
>
<div
class="slot local slot"
data-block-alignment="start"
data-id="0"
data-inline-alignment="end"
/>
</div>
</div>
</div> </div>
<div <div
class="fixedGrid grid" class="fixedGrid grid"
> >
<div <div />
class="fixed"
/>
</div> </div>
<div <div
class="bg animate" class="bg animate"

View File

@@ -16,6 +16,7 @@ import {
type Room, type Room,
SyncState, SyncState,
} from "matrix-js-sdk"; } from "matrix-js-sdk";
import { ConnectionState, type Room as LivekitRoom } from "livekit-client";
import { E2eeType } from "../e2ee/e2eeType"; import { E2eeType } from "../e2ee/e2eeType";
import { import {
@@ -23,6 +24,8 @@ import {
type CallViewModelOptions, type CallViewModelOptions,
} from "../state/CallViewModel"; } from "../state/CallViewModel";
import { import {
mockLivekitRoom,
mockLocalParticipant,
mockMatrixRoom, mockMatrixRoom,
mockMediaDevices, mockMediaDevices,
mockMuteStates, mockMuteStates,
@@ -31,6 +34,7 @@ import {
} from "./test"; } from "./test";
import { aliceRtcMember, localRtcMember } from "./test-fixtures"; import { aliceRtcMember, localRtcMember } from "./test-fixtures";
import { type RaisedHandInfo, type ReactionInfo } from "../reactions"; import { type RaisedHandInfo, type ReactionInfo } from "../reactions";
import { constant } from "../state/Behavior";
export function getBasicRTCSession( export function getBasicRTCSession(
members: RoomMember[], members: RoomMember[],
@@ -142,6 +146,14 @@ export function getBasicCallViewModelEnvironment(
mockMuteStates(), mockMuteStates(),
{ {
encryptionSystem: { kind: E2eeType.PER_PARTICIPANT }, encryptionSystem: { kind: E2eeType.PER_PARTICIPANT },
livekitRoomFactory: (): LivekitRoom =>
mockLivekitRoom({
localParticipant: mockLocalParticipant({ identity: "" }),
remoteParticipants: new Map(),
disconnect: async () => Promise.resolve(),
setE2EEEnabled: async () => Promise.resolve(),
}),
connectionState$: constant(ConnectionState.Connected),
...callViewModelOptions, ...callViewModelOptions,
}, },
handRaisedSubject$, handRaisedSubject$,