@@ -43,12 +43,22 @@ function setupWebMode(): {
4343 win : Record < string , unknown > ;
4444 origInternals : unknown ;
4545 provider : TauriProvider ;
46+ openExternal : ReturnType < typeof vi . fn > ;
4647} {
4748 const win = globalThis as unknown as Record < string , unknown > ;
4849 const origInternals = win [ '__TAURI_INTERNALS__' ] ;
4950 delete win [ '__TAURI_INTERNALS__' ] ;
51+ const openExternal = vi . fn ( ) ;
5052
51- return { win, origInternals, provider : new TauriProvider ( createTracer ( ) ) } ;
53+ return {
54+ win,
55+ origInternals,
56+ openExternal,
57+ provider : new TauriProvider ( createTracer ( ) , {
58+ hasTauriGlobals : ( ) => false ,
59+ openExternal,
60+ } ) ,
61+ } ;
5262}
5363
5464import { TauriProvider } from '@/infrastructure/tauri/TauriProvider' ;
@@ -413,12 +423,11 @@ describe('TauriProvider', () => {
413423 await expect ( provider . writeToClipboard ( 'copied text' ) ) . rejects . toThrow ( 'denied' ) ;
414424 } ) ;
415425
416- it ( 'should reject in web mode' , async ( ) => {
426+ it ( 'should use browser clipboard fallback in web mode' , async ( ) => {
417427 const { provider : webProvider } = setupWebMode ( ) ;
418428
419- await expect ( webProvider . writeToClipboard ( 'text' ) ) . rejects . toThrow (
420- 'Clipboard write is unavailable outside Tauri' ,
421- ) ;
429+ await expect ( webProvider . writeToClipboard ( 'text' ) ) . resolves . toBeUndefined ( ) ;
430+ expect ( mockedTauriInvoke ) . not . toHaveBeenCalled ( ) ;
422431 } ) ;
423432 } ) ;
424433
@@ -461,12 +470,11 @@ describe('TauriProvider', () => {
461470 } ) ;
462471 } ) ;
463472
464- it ( 'should reject outside Tauri' , async ( ) => {
465- const { provider : webProvider } = setupWebMode ( ) ;
473+ it ( 'should use the runtime fallback outside Tauri' , async ( ) => {
474+ const { provider : webProvider , openExternal } = setupWebMode ( ) ;
466475
467- await expect ( webProvider . openUrl ( 'https://example.com' ) ) . rejects . toThrow (
468- 'External URL opening is unavailable outside Tauri' ,
469- ) ;
476+ await expect ( webProvider . openUrl ( 'https://example.com' ) ) . resolves . toBeUndefined ( ) ;
477+ expect ( openExternal ) . toHaveBeenCalledWith ( 'https://example.com' ) ;
470478 } ) ;
471479 } ) ;
472480
0 commit comments