11import type {
2- BrowserLauncher ,
32 Logger ,
43 Reporter ,
54 ReporterArgs ,
5+ TestSession ,
66 TestSuiteResult ,
77} from '@web/test-runner-core' ;
88
@@ -17,8 +17,8 @@ interface Options {
1717
1818const color =
1919 ( [ x , y ] : [ number , number ] ) =>
20- ( z : string ) =>
21- `\x1b[${ x } m${ z } \x1b[${ y } m${ reset } ` ;
20+ ( z : string ) =>
21+ `\x1b[${ x } m${ z } \x1b[${ y } m${ reset } ` ;
2222const reset = `\x1b[0m\x1b[0m` ;
2323const green = color ( [ 32 , 89 ] ) ;
2424const red = color ( [ 31 , 89 ] ) ;
@@ -30,54 +30,60 @@ export function summaryReporter(opts: Options): Reporter {
3030 let args : ReporterArgs ;
3131 let favoriteBrowser : string ;
3232
33- function log (
33+ function logTest (
3434 logger : Logger ,
3535 name : string ,
3636 passed : boolean ,
3737 skipped : boolean ,
38- prefix = ' ' ,
38+ prefix : string ,
3939 postfix = '' ,
4040 ) {
4141 const sign = skipped ? dim ( '-' ) : passed ? green ( '✓' ) : red ( '𐄂' ) ;
4242 if ( flatten ) logger . log ( `${ sign } ${ name } ${ postfix } ` ) ;
43- else logger . log ( `${ prefix } ${ sign } ${ name } ` ) ;
43+ else logger . log ( `${ prefix } ${ sign } ${ name } ` ) ;
4444 }
4545
46- function logResults (
46+ function logSuite (
4747 logger : Logger ,
48- results ? : TestSuiteResult ,
49- prefix ? : string ,
50- browser ?: BrowserLauncher ,
48+ suite : TestSuiteResult ,
49+ parent : string ,
50+ browserName : string ,
5151 ) {
52- const browserName = browser ?. name ? ` ${ dim ( `[${ browser . name } ]` ) } ` : '' ;
53- for ( const result of results ?. tests ?? [ ] ) {
54- log (
52+ let prefix = parent ?? '' ;
53+ if ( flatten ) prefix += `${ suite . name } ` ;
54+ else logger . log ( `${ prefix } ${ suite . name } ${ ! parent ? browserName : '' } ` ) ;
55+
56+ for ( const test of suite . tests ?? [ ] ) {
57+ logTest (
5558 logger ,
56- flatten ? `${ prefix ?? '' } ${ result . name } ` : result . name ,
57- result . passed ,
58- result . skipped ,
59+ flatten && prefix ? `${ prefix } ${ test . name } ` : test . name ,
60+ test . passed ,
61+ test . skipped ,
5962 prefix ,
6063 browserName ,
6164 ) ;
6265 }
6366
64- for ( const suite of results ?. suites ?? [ ] ) {
65- logSuite ( logger , suite , prefix , browser ) ;
67+ if ( ! flatten || prefix ) prefix += ' '
68+ for ( const childSuite of suite . suites ?? [ ] ) {
69+ logSuite ( logger , childSuite , prefix , browserName ) ;
6670 }
6771 }
6872
69- function logSuite (
73+ function logResults (
7074 logger : Logger ,
71- suite : TestSuiteResult ,
72- parent ?: string ,
73- browser ?: BrowserLauncher ,
75+ session : TestSession ,
7476 ) {
75- const browserName = browser ?. name ? ` ${ dim ( `[${ browser . name } ]` ) } ` : '' ;
76- let pref = parent ? `${ parent } ` : ' ' ;
77- if ( flatten ) pref += `${ suite . name } ` ;
78- else logger . log ( `${ pref } ${ suite . name } ${ browserName } ` ) ;
77+ if ( session . testResults ) {
78+ const browserName = session . browser ?. name ? ` ${ dim ( `[${ session . browser . name } ]` ) } ` : '' ;
79+ const suite = session . testResults ;
7980
80- logResults ( logger , suite , pref , browser ) ;
81+ if ( suite . suites . length || suite . tests . length ) {
82+ logSuite ( logger , suite , '' , browserName ) ;
83+ } else {
84+ logger . log ( `No tests on ${ session . testFile } ${ browserName } ` ) ;
85+ }
86+ }
8187 }
8288
8389 let cachedLogger : Logger ;
@@ -94,7 +100,7 @@ export function summaryReporter(opts: Options): Reporter {
94100 reportTestFileResults ( { logger, sessionsForTestFile } ) {
95101 cachedLogger = logger ;
96102 for ( const session of sessionsForTestFile ) {
97- logResults ( logger , session . testResults , '' , session . browser ) ;
103+ logResults ( logger , session ) ;
98104 logger . log ( '' ) ;
99105 }
100106 reportBrowserLogs ( logger , sessionsForTestFile ) ;
0 commit comments