// @vitest-environment jsdom import { afterEach, describe, expect, it, vi } from 'vitest'; import { cleanup, render, screen } from '@testing-library/react'; vi.mock('../../lib/use-scanner-sound.js', () => ({ useScannerSound: () => ({ playSuccess: vi.fn() }), })); vi.mock('../../lib/use-scanner-flash.js', () => ({ useScannerFlash: () => ({ flashSupported: false, flashOn: false, toggleFlash: vi.fn(), }), })); vi.mock('../../components/scanner/ScannerScanPeek.js', () => ({ default: () =>
, })); vi.mock('../../components/scanner/ScannerCountPill.js', () => ({ default: () => , })); vi.mock('../../components/scanner/ScannerDisambiguation.js', () => ({ default: () => null, })); import ScannerCamera from '../../components/scanner/ScannerCamera.js'; function createCameraFixture() { return { videoRef: { current: document.createElement('video') }, canvasRef: { current: document.createElement('canvas') }, detectionCanvasRef: { current: document.createElement('canvas') }, isStreaming: true, trackedCards: [], videoMetrics: { width: 1280, height: 720 }, startCamera: vi.fn(), streamRef: { current: null }, facingMode: 'environment', switchFacingMode: vi.fn(), }; } function renderCamera(overrides = {}) { const props = { queue: { scannedCards: [], addingCardIds: new Set() }, camera: createCameraFixture(), identification: { disambiguation: null }, onBack: vi.fn(), onOpenCheckout: vi.fn(), latestPeekCard: null, cartCount: 0, ...overrides, }; return render(