@@ -8,10 +8,23 @@ import type { BrowserProvider } from '../../types/browser'
88export function createBrowserPool ( ctx : Vitest ) : ProcessPool {
99 const providers = new Set < BrowserProvider > ( )
1010
11- const waitForTest = ( id : string ) => {
11+ const waitForTest = async ( provider : BrowserProvider , id : string ) => {
1212 const defer = createDefer ( )
1313 ctx . state . browserTestPromises . set ( id , defer )
14- return defer
14+ const off = provider . catchError ( ( error ) => {
15+ if ( id !== 'no-isolate' ) {
16+ Object . defineProperty ( error , 'VITEST_TEST_PATH' , {
17+ value : id ,
18+ } )
19+ }
20+ defer . reject ( error )
21+ } )
22+ try {
23+ return await defer
24+ }
25+ finally {
26+ off ( )
27+ }
1528 }
1629
1730 const runTests = async ( project : WorkspaceProject , files : string [ ] ) => {
@@ -40,15 +53,15 @@ export function createBrowserPool(ctx: Vitest): ProcessPool {
4053 url . searchParams . append ( 'path' , path )
4154 url . searchParams . set ( 'id' , path )
4255 await provider . openPage ( url . toString ( ) )
43- await waitForTest ( path )
56+ await waitForTest ( provider , path )
4457 }
4558 }
4659 else {
4760 const url = new URL ( '/' , origin )
4861 url . searchParams . set ( 'id' , 'no-isolate' )
4962 paths . forEach ( path => url . searchParams . append ( 'path' , path ) )
5063 await provider . openPage ( url . toString ( ) )
51- await waitForTest ( 'no-isolate' )
64+ await waitForTest ( provider , 'no-isolate' )
5265 }
5366 }
5467
0 commit comments