1
1
import type {
2
- BrowserLauncher ,
3
2
Logger ,
4
3
Reporter ,
5
4
ReporterArgs ,
5
+ TestSession ,
6
6
TestSuiteResult ,
7
7
} from '@web/test-runner-core' ;
8
8
@@ -17,8 +17,8 @@ interface Options {
17
17
18
18
const color =
19
19
( [ 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 } ` ;
22
22
const reset = `\x1b[0m\x1b[0m` ;
23
23
const green = color ( [ 32 , 89 ] ) ;
24
24
const red = color ( [ 31 , 89 ] ) ;
@@ -30,54 +30,60 @@ export function summaryReporter(opts: Options): Reporter {
30
30
let args : ReporterArgs ;
31
31
let favoriteBrowser : string ;
32
32
33
- function log (
33
+ function logTest (
34
34
logger : Logger ,
35
35
name : string ,
36
36
passed : boolean ,
37
37
skipped : boolean ,
38
- prefix = ' ' ,
38
+ prefix : string ,
39
39
postfix = '' ,
40
40
) {
41
41
const sign = skipped ? dim ( '-' ) : passed ? green ( '✓' ) : red ( '𐄂' ) ;
42
42
if ( flatten ) logger . log ( `${ sign } ${ name } ${ postfix } ` ) ;
43
- else logger . log ( `${ prefix } ${ sign } ${ name } ` ) ;
43
+ else logger . log ( `${ prefix } ${ sign } ${ name } ` ) ;
44
44
}
45
45
46
- function logResults (
46
+ function logSuite (
47
47
logger : Logger ,
48
- results ? : TestSuiteResult ,
49
- prefix ? : string ,
50
- browser ?: BrowserLauncher ,
48
+ suite : TestSuiteResult ,
49
+ parent : string ,
50
+ browserName : string ,
51
51
) {
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 (
55
58
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 ,
59
62
prefix ,
60
63
browserName ,
61
64
) ;
62
65
}
63
66
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 ) ;
66
70
}
67
71
}
68
72
69
- function logSuite (
73
+ function logResults (
70
74
logger : Logger ,
71
- suite : TestSuiteResult ,
72
- parent ?: string ,
73
- browser ?: BrowserLauncher ,
75
+ session : TestSession ,
74
76
) {
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 ;
79
80
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
+ }
81
87
}
82
88
83
89
let cachedLogger : Logger ;
@@ -94,7 +100,7 @@ export function summaryReporter(opts: Options): Reporter {
94
100
reportTestFileResults ( { logger, sessionsForTestFile } ) {
95
101
cachedLogger = logger ;
96
102
for ( const session of sessionsForTestFile ) {
97
- logResults ( logger , session . testResults , '' , session . browser ) ;
103
+ logResults ( logger , session ) ;
98
104
logger . log ( '' ) ;
99
105
}
100
106
reportBrowserLogs ( logger , sessionsForTestFile ) ;
0 commit comments