@@ -9,9 +9,14 @@ const { join } = require('path');
99
1010const events = [ ] ;
1111
12- dc . subscribe ( 'tracing:node.test:start' , ( data ) => events . push ( { event : 'start' , name : data . name } ) ) ;
13- dc . subscribe ( 'tracing:node.test:end' , ( data ) => events . push ( { event : 'end' , name : data . name } ) ) ;
14- dc . subscribe ( 'tracing:node.test:error' , ( data ) => events . push ( { event : 'error' , name : data . name } ) ) ;
12+ dc . subscribe ( 'tracing:node.test:start' , ( data ) => events . push ( { event : 'start' , name : data . name , type : data . type } ) ) ;
13+ dc . subscribe ( 'tracing:node.test:end' , ( data ) => events . push ( { event : 'end' , name : data . name , type : data . type } ) ) ;
14+ dc . subscribe ( 'tracing:node.test:error' , ( data ) => events . push ( { event : 'error' , name : data . name , type : data . type } ) ) ;
15+
16+ describe ( 'suite end ordering' , ( ) => {
17+ it ( 'child a' , async ( ) => { await new Promise ( ( r ) => setTimeout ( r , 5 ) ) ; } ) ;
18+ it ( 'child b' , ( ) => { } ) ;
19+ } ) ;
1520
1621test ( 'passing test fires start and end' , async ( ) => { } ) ;
1722
@@ -54,6 +59,19 @@ process.on('exit', () => {
5459 const asyncEnd = events . filter ( ( e ) => e . event === 'end' && e . name === asyncTestName ) ;
5560 assert . strictEqual ( asyncStart . length , 1 ) ;
5661 assert . strictEqual ( asyncEnd . length , 1 ) ;
62+
63+ const suiteNames = new Set ( [ 'suite end ordering' , 'child a' , 'child b' ] ) ;
64+ const suiteSequence = events
65+ . filter ( ( e ) => suiteNames . has ( e . name ) )
66+ . map ( ( e ) => `${ e . event } :${ e . name } ` ) ;
67+ assert . deepStrictEqual ( suiteSequence , [
68+ 'start:suite end ordering' ,
69+ 'start:child a' ,
70+ 'end:child a' ,
71+ 'start:child b' ,
72+ 'end:child b' ,
73+ 'end:suite end ordering' ,
74+ ] ) ;
5775} ) ;
5876
5977// Test bindStore context propagation
0 commit comments