fix: Improve audio channel detection for WebRTC (#2280)
- Related: #2191
This commit is contained in:
@@ -1,4 +1,4 @@
|
||||
import { describe, expect, it } from 'vitest';
|
||||
import { describe, expect, it, vi } from 'vitest';
|
||||
import { AudioProperties, mayHaveAudio } from '../../src/utils/audio';
|
||||
|
||||
// @vitest-environment jsdom
|
||||
@@ -29,6 +29,36 @@ describe('mayHaveAudio', () => {
|
||||
expect(mayHaveAudio(element)).toBeFalsy();
|
||||
});
|
||||
|
||||
it('should detect audio when srcObject MediaStream has audio tracks', () => {
|
||||
// Mock MediaStream for jsdom environment
|
||||
const MockMediaStream = class MediaStream {};
|
||||
vi.stubGlobal('MediaStream', MockMediaStream);
|
||||
|
||||
const element = {} as HTMLVideoElement & AudioProperties;
|
||||
const mockStream = new MockMediaStream();
|
||||
(mockStream as unknown as { getAudioTracks: () => unknown[] }).getAudioTracks =
|
||||
() => [{}];
|
||||
element.srcObject = mockStream as unknown as MediaStream;
|
||||
expect(mayHaveAudio(element)).toBeTruthy();
|
||||
|
||||
vi.unstubAllGlobals();
|
||||
});
|
||||
|
||||
it('should not detect audio when srcObject MediaStream has no audio tracks', () => {
|
||||
// Mock MediaStream for jsdom environment
|
||||
const MockMediaStream = class MediaStream {};
|
||||
vi.stubGlobal('MediaStream', MockMediaStream);
|
||||
|
||||
const element = {} as HTMLVideoElement & AudioProperties;
|
||||
const mockStream = new MockMediaStream();
|
||||
(mockStream as unknown as { getAudioTracks: () => unknown[] }).getAudioTracks =
|
||||
() => [];
|
||||
element.srcObject = mockStream as unknown as MediaStream;
|
||||
expect(mayHaveAudio(element)).toBeFalsy();
|
||||
|
||||
vi.unstubAllGlobals();
|
||||
});
|
||||
|
||||
it('should detect audio when no evidence to the contrary', () => {
|
||||
const element = {} as HTMLVideoElement & AudioProperties;
|
||||
expect(mayHaveAudio(element)).toBeTruthy();
|
||||
|
||||
Reference in New Issue
Block a user