From 50d27acf2eec5d39f36b75473f3ddc831e45543d Mon Sep 17 00:00:00 2001 From: Marc Rousavy Date: Wed, 5 Aug 2026 15:57:56 +0200 Subject: [PATCH] chore: Add Harness test for attaching outputs to a new `CameraSession` --- .../visioncamera.multi-output.harness.ts | 63 +++++++++++++++++++ 1 file changed, 63 insertions(+) diff --git a/apps/simple-camera/__tests__/visioncamera.multi-output.harness.ts b/apps/simple-camera/__tests__/visioncamera.multi-output.harness.ts index e9803921ef..a4a2d73f2d 100644 --- a/apps/simple-camera/__tests__/visioncamera.multi-output.harness.ts +++ b/apps/simple-camera/__tests__/visioncamera.multi-output.harness.ts @@ -79,6 +79,69 @@ describe('VisionCamera - Multi-Output', () => { } }) + it('reuses removed preview, photo, and video outputs in a new session', async () => { + const firstSession = await VisionCamera.createCameraSession(false) + const secondSession = await VisionCamera.createCameraSession(false) + const previewOutput = VisionCamera.createPreviewOutput() + const photoOutput = VisionCamera.createPhotoOutput({ + targetResolution: CommonResolutions.HD_4_3, + containerFormat: 'jpeg', + quality: 0.8, + qualityPrioritization: 'balanced', + }) + const videoOutput = VisionCamera.createVideoOutput({ + targetResolution: CommonResolutions.HD_16_9, + enableAudio: false, + }) + + try { + const firstControllers = await firstSession.configure([ + { + input: backDevice, + outputs: [ + { output: previewOutput, mirrorMode: 'auto' }, + { output: photoOutput, mirrorMode: 'auto' }, + { output: videoOutput, mirrorMode: 'auto' }, + ], + constraints: [], + }, + ]) + expect(firstControllers).toHaveLength(1) + + await firstSession.configure([]) + + const photoControllers = await secondSession.configure([ + { + input: backDevice, + outputs: [{ output: photoOutput, mirrorMode: 'auto' }], + constraints: [], + }, + ]) + expect(photoControllers).toHaveLength(1) + + const videoControllers = await secondSession.configure([ + { + input: backDevice, + outputs: [{ output: videoOutput, mirrorMode: 'auto' }], + constraints: [], + }, + ]) + expect(videoControllers).toHaveLength(1) + + const previewControllers = await secondSession.configure([ + { + input: backDevice, + outputs: [{ output: previewOutput, mirrorMode: 'auto' }], + constraints: [], + }, + ]) + expect(previewControllers).toHaveLength(1) + } finally { + await firstSession.stop() + await secondSession.stop() + } + }) + it('streams frames, captures a photo, and records video simultaneously', async () => { const session = await VisionCamera.createCameraSession(false) const photoOutput = VisionCamera.createPhotoOutput({