import { describe, expect, it, vi } from 'vitest' import { act, fireEvent, renderWithProviders, screen, } from '../../../test/utils' import VideoViewer from './VideoViewer' describe('VideoViewer', () => { const items = [ { src: 'https://cdn.example.com/one.mp4', poster: '/one.jpg', mimeType: 'video/mp4', filename: 'one.mp4', preload: 'auto' as const, }, { src: 'https://cdn.example.com/two.webm', mimeType: 'video/webm' }, ] it('renders nothing with no active video', () => { const { container } = renderWithProviders( ) expect(container.firstChild).toBeNull() }) it('renders media attributes and an optional source type', () => { renderWithProviders( ) const video = screen.getByTestId('video-viewer').querySelector('video') expect(video).not.toBeNull() if (!video) throw new Error('Expected video element') expect(video).toHaveAttribute('src', items[0].src) expect(video).toHaveAttribute('poster', items[0].poster) expect(video).toHaveAttribute('preload', 'auto') expect(video).toHaveAttribute('autoplay') expect(video?.muted).toBe(true) expect(video.querySelector('source')).toHaveAttribute('type', 'video/mp4') }) it('defaults preload and navigates stacked items', () => { renderWithProviders() expect(screen.getByText('1 / 2')).toBeInTheDocument() expect( screen.getByTestId('video-viewer').querySelector('video') ).toHaveAttribute('preload', 'auto') fireEvent.click(screen.getByRole('button', { name: 'Next video' })) expect( screen.getByTestId('video-viewer').querySelector('video') ).toHaveAttribute('src', items[1].src) expect( screen.getByTestId('video-viewer').querySelector('video') ).toHaveAttribute('preload', 'metadata') }) it('pauses the toolkit\u2019s own native audio when it opens', () => { // `useActiveAudioPlayer` only covers the players stream-chat-react // mounts. `MessageAttachment.Audio` and the playable `LinkAttachment` // card render plain `