From c90d1d8dda2605163a856968a11b39bb8537ab64 Mon Sep 17 00:00:00 2001 From: Robin Date: Wed, 5 Aug 2026 12:04:05 +0200 Subject: [PATCH] Expand GridTile test coverage --- src/tile/GridTile.test.tsx | 44 ++++++++++++++++++++++++++++++++++++-- 1 file changed, 42 insertions(+), 2 deletions(-) diff --git a/src/tile/GridTile.test.tsx b/src/tile/GridTile.test.tsx index 3ee528755..60fbc303c 100644 --- a/src/tile/GridTile.test.tsx +++ b/src/tile/GridTile.test.tsx @@ -5,7 +5,10 @@ SPDX-License-Identifier: AGPL-3.0-only OR LicenseRef-Element-Commercial Please see LICENSE in the repository root for full details. */ -import { type RemoteTrackPublication } from "livekit-client"; +import { + type LocalTrackPublication, + type RemoteTrackPublication, +} from "livekit-client"; import { test, expect } from "vitest"; import { act, render, screen } from "@testing-library/react"; import { axe } from "vitest-axe"; @@ -17,6 +20,9 @@ import { mockRtcMembership, mockRemoteMedia, mockRemoteParticipant, + mockLocalMedia, + mockLocalParticipant, + mockMediaDevices, } from "../utils/test"; import { GridTileViewModel } from "../state/TileViewModel"; import { ReactionsSenderProvider } from "../reactions/useReactionsSender"; @@ -54,7 +60,7 @@ const callVm = { handsRaised$: constant({}), } as Partial as CallViewModel; -test("GridTile is accessible", async () => { +test("GridTile displays remote media", async () => { const vm = mockRemoteMedia( mockRtcMembership("@alice:example.org", "AAAA"), { @@ -88,6 +94,40 @@ test("GridTile is accessible", async () => { screen.getByText("Alice"); }); +test("GridTile displays local media", async () => { + const vm = mockLocalMedia( + mockRtcMembership("@alice:example.org", "AAAA"), + { + rawDisplayName: "Alice", + getMxcAvatarUrl: () => "mxc://adfsg", + }, + mockLocalParticipant({ + getTrackPublication: () => + ({}) as Partial as LocalTrackPublication, + }), + mockMediaDevices({}), + ); + + const { container } = render( + + {}} + targetWidth={300} + targetHeight={200} + showSpeakingIndicators + showNameTags + showRingingStatus + showOutline + focusable + /> + , + ); + expect(await axe(container)).toHaveNoViolations(); + // Name should be visible + screen.getByText("Alice"); +}); + test("GridTile displays ringing media", async () => { const pickupState$ = new BehaviorSubject< RingingMediaViewModel["pickupState$"]["value"]