From 1a9250517ce75c55302416699949d1a33a30b81a Mon Sep 17 00:00:00 2001 From: Bernard Gawor Date: Fri, 3 Apr 2026 14:19:22 +0200 Subject: [PATCH 1/5] add test --- .../tests/methods/addTrackMethod.test.ts | 22 +++++++++++++++++++ 1 file changed, 22 insertions(+) diff --git a/packages/webrtc-client/tests/methods/addTrackMethod.test.ts b/packages/webrtc-client/tests/methods/addTrackMethod.test.ts index 5e7da6dcd..0fe3d4092 100644 --- a/packages/webrtc-client/tests/methods/addTrackMethod.test.ts +++ b/packages/webrtc-client/tests/methods/addTrackMethod.test.ts @@ -1,7 +1,10 @@ +import { FakeMediaStreamTrack } from 'fake-mediastreamtrack'; import { expect, it } from 'vitest'; import { WebRTCEndpoint } from '../../src'; +import { TrackContextImpl } from '../../src/internal'; import { deserializePeerMediaEvent, serializeServerMediaEvent } from '../../src/mediaEvent'; +import { createTransceiverConfig } from '../../src/tracks/transceivers'; import { createConnectedEventWithOneEndpoint, mockTrack } from '../fixtures'; import { mockMediaStream, mockRTCPeerConnection } from '../mocks'; @@ -51,6 +54,25 @@ it('Adding track updates internal state', () => { expect(localEndpoint.tracks.size).toBe(1); }); +it('Simulcast transceiver config includes the stream', () => { + const stream = { id: 'test-stream-id' } as MediaStream; + const videoTrack = new FakeMediaStreamTrack({ kind: 'video' }); + + const trackContext = new TrackContextImpl( + { id: 'endpoint-1', metadata: undefined, tracks: new Map() }, + 'track-1', + undefined, + { enabled: true, enabledVariants: [1, 2, 3], disabledVariants: [] }, + ); + trackContext.track = videoTrack; + trackContext.stream = stream; + trackContext.maxBandwidth = 0; + + const config = createTransceiverConfig(trackContext); + + expect(config.streams).toEqual([stream]); +}); + it('Adding track before being accepted by the server throws error', async () => { // Given mockRTCPeerConnection(); From 1a47af0ef0ba2ede4bb645d0837dab939af84a43 Mon Sep 17 00:00:00 2001 From: Bernard Gawor Date: Fri, 3 Apr 2026 14:19:56 +0200 Subject: [PATCH 2/5] add trackcontext stream to simulcast transceiver config --- packages/webrtc-client/src/tracks/transceivers.ts | 1 + 1 file changed, 1 insertion(+) diff --git a/packages/webrtc-client/src/tracks/transceivers.ts b/packages/webrtc-client/src/tracks/transceivers.ts index 7d5af7ead..d8267bc8c 100644 --- a/packages/webrtc-client/src/tracks/transceivers.ts +++ b/packages/webrtc-client/src/tracks/transceivers.ts @@ -99,6 +99,7 @@ const createSimulcastTransceiverConfig = ( // in other case lower resolution encoding can get // higher max_bitrate sendEncodings: calculateSimulcastEncodings(encodings, maxBandwidth), + streams: trackContext.stream ? [trackContext.stream] : [], }; }; From dfc8562842b178509b6a0bed9767e75aa4a545d2 Mon Sep 17 00:00:00 2001 From: Bernard Gawor Date: Fri, 3 Apr 2026 14:23:19 +0200 Subject: [PATCH 3/5] fix build --- packages/webrtc-client/tests/methods/addTrackMethod.test.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/webrtc-client/tests/methods/addTrackMethod.test.ts b/packages/webrtc-client/tests/methods/addTrackMethod.test.ts index 0fe3d4092..43af5244b 100644 --- a/packages/webrtc-client/tests/methods/addTrackMethod.test.ts +++ b/packages/webrtc-client/tests/methods/addTrackMethod.test.ts @@ -59,7 +59,7 @@ it('Simulcast transceiver config includes the stream', () => { const videoTrack = new FakeMediaStreamTrack({ kind: 'video' }); const trackContext = new TrackContextImpl( - { id: 'endpoint-1', metadata: undefined, tracks: new Map() }, + { id: 'endpoint-1', type: 'webrtc', metadata: undefined, tracks: new Map() }, 'track-1', undefined, { enabled: true, enabledVariants: [1, 2, 3], disabledVariants: [] }, From 1bd8525782182ef45185608ee9e79bfa91c5b806 Mon Sep 17 00:00:00 2001 From: Bernard Gawor Date: Fri, 3 Apr 2026 14:30:28 +0200 Subject: [PATCH 4/5] add enum variants --- packages/webrtc-client/tests/methods/addTrackMethod.test.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/webrtc-client/tests/methods/addTrackMethod.test.ts b/packages/webrtc-client/tests/methods/addTrackMethod.test.ts index 43af5244b..3a04a2f3f 100644 --- a/packages/webrtc-client/tests/methods/addTrackMethod.test.ts +++ b/packages/webrtc-client/tests/methods/addTrackMethod.test.ts @@ -1,7 +1,7 @@ import { FakeMediaStreamTrack } from 'fake-mediastreamtrack'; import { expect, it } from 'vitest'; -import { WebRTCEndpoint } from '../../src'; +import { Variant, WebRTCEndpoint } from '../../src'; import { TrackContextImpl } from '../../src/internal'; import { deserializePeerMediaEvent, serializeServerMediaEvent } from '../../src/mediaEvent'; import { createTransceiverConfig } from '../../src/tracks/transceivers'; @@ -62,7 +62,7 @@ it('Simulcast transceiver config includes the stream', () => { { id: 'endpoint-1', type: 'webrtc', metadata: undefined, tracks: new Map() }, 'track-1', undefined, - { enabled: true, enabledVariants: [1, 2, 3], disabledVariants: [] }, + { enabled: true, enabledVariants: [Variant.VARIANT_LOW, Variant.VARIANT_MEDIUM, Variant.VARIANT_HIGH], disabledVariants: [] }, ); trackContext.track = videoTrack; trackContext.stream = stream; From c5ffce589c7e1d8a6282f7e545c479590d802486 Mon Sep 17 00:00:00 2001 From: Bernard Gawor Date: Fri, 3 Apr 2026 14:34:53 +0200 Subject: [PATCH 5/5] format --- packages/webrtc-client/tests/methods/addTrackMethod.test.ts | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/packages/webrtc-client/tests/methods/addTrackMethod.test.ts b/packages/webrtc-client/tests/methods/addTrackMethod.test.ts index 3a04a2f3f..d204cf5f2 100644 --- a/packages/webrtc-client/tests/methods/addTrackMethod.test.ts +++ b/packages/webrtc-client/tests/methods/addTrackMethod.test.ts @@ -62,7 +62,11 @@ it('Simulcast transceiver config includes the stream', () => { { id: 'endpoint-1', type: 'webrtc', metadata: undefined, tracks: new Map() }, 'track-1', undefined, - { enabled: true, enabledVariants: [Variant.VARIANT_LOW, Variant.VARIANT_MEDIUM, Variant.VARIANT_HIGH], disabledVariants: [] }, + { + enabled: true, + enabledVariants: [Variant.VARIANT_LOW, Variant.VARIANT_MEDIUM, Variant.VARIANT_HIGH], + disabledVariants: [], + }, ); trackContext.track = videoTrack; trackContext.stream = stream;