1
1
import type {
2
2
BrowserLauncher ,
3
+ Logger ,
3
4
Reporter ,
4
5
ReporterArgs ,
5
6
TestSuiteResult ,
@@ -8,7 +9,7 @@ import type {
8
9
import { reportTestsErrors } from './reportTestsErrors.js' ;
9
10
import { reportTestFileErrors } from './reportTestFileErrors.js' ;
10
11
11
- import { TestRunnerLogger } from '../logger/TestRunnerLogger .js' ;
12
+ import { reportBrowserLogs } from './reportBrowserLogs .js' ;
12
13
13
14
interface Options {
14
15
flatten ?: boolean ;
@@ -29,34 +30,33 @@ export function summaryReporter(opts: Options): Reporter {
29
30
let args : ReporterArgs ;
30
31
let favoriteBrowser : string ;
31
32
32
- const logger = new TestRunnerLogger ( ) ;
33
-
34
- function log ( name : string , passed : boolean , prefix = ' ' , postfix = '' ) {
33
+ function log ( logger : Logger , name : string , passed : boolean , prefix = ' ' , postfix = '' ) {
35
34
const sign = passed ? green ( '✓' ) : red ( '𐄂' ) ;
36
35
if ( flatten ) logger . log ( `${ sign } ${ prefix } ${ name } ${ postfix } ` ) ;
37
36
else logger . log ( `${ prefix } ${ sign } ${ name } ` ) ;
38
37
}
39
38
40
- function logResults ( results ?: TestSuiteResult , prefix ?: string , browser ?: BrowserLauncher ) {
39
+ function logResults ( logger : Logger , results ?: TestSuiteResult , prefix ?: string , browser ?: BrowserLauncher ) {
41
40
const browserName = browser ?. name ? ` ${ dim ( `[${ browser . name } ]` ) } ` : '' ;
42
41
for ( const result of results ?. tests ?? [ ] ) {
43
- log ( result . name , result . passed , prefix , browserName ) ;
42
+ log ( logger , result . name , result . passed , prefix , browserName ) ;
44
43
}
45
44
46
45
for ( const suite of results ?. suites ?? [ ] ) {
47
- logSuite ( suite , prefix , browser ) ;
46
+ logSuite ( logger , suite , prefix , browser ) ;
48
47
}
49
48
}
50
49
51
- function logSuite ( suite : TestSuiteResult , parent ?: string , browser ?: BrowserLauncher ) {
50
+ function logSuite ( logger : Logger , suite : TestSuiteResult , parent ?: string , browser ?: BrowserLauncher ) {
52
51
const browserName = browser ?. name ? ` ${ dim ( `[${ browser . name } ]` ) } ` : '' ;
53
52
let pref = parent ? `${ parent } ` : '' ;
54
53
if ( flatten ) pref += `${ suite . name } ` ;
55
54
else logger . log ( `${ pref } ${ suite . name } ${ browserName } ` ) ;
56
55
57
- logResults ( suite , pref , browser ) ;
56
+ logResults ( logger , suite , pref , browser ) ;
58
57
}
59
58
59
+ let cachedLogger : Logger ;
60
60
return {
61
61
start ( _args ) {
62
62
args = _args ;
@@ -67,19 +67,21 @@ export function summaryReporter(opts: Options): Reporter {
67
67
} ) ?? args . browserNames [ 0 ] ;
68
68
} ,
69
69
70
- reportTestFileResults ( { sessionsForTestFile : sessions } ) {
71
- for ( const session of sessions ) {
72
- logResults ( session . testResults , '' , session . browser ) ;
70
+ reportTestFileResults ( { logger, sessionsForTestFile } ) {
71
+ cachedLogger = logger ;
72
+ for ( const session of sessionsForTestFile ) {
73
+ logResults ( logger , session . testResults , '' , session . browser ) ;
73
74
logger . log ( '' ) ;
74
75
}
76
+ reportBrowserLogs ( logger , sessionsForTestFile ) ;
75
77
} ,
76
78
77
79
onTestRunFinished ( { sessions } ) {
78
80
const failedSessions = sessions . filter ( s => ! s . passed ) ;
79
81
if ( failedSessions . length > 0 ) {
80
- logger . log ( '\n\nErrors Reported in Tests:\n\n' ) ;
81
- reportTestsErrors ( logger , args . browserNames , favoriteBrowser , failedSessions ) ;
82
- reportTestFileErrors ( logger , args . browserNames , favoriteBrowser , failedSessions , true ) ;
82
+ cachedLogger . log ( '\n\nErrors Reported in Tests:\n\n' ) ;
83
+ reportTestsErrors ( cachedLogger , args . browserNames , favoriteBrowser , failedSessions ) ;
84
+ reportTestFileErrors ( cachedLogger , args . browserNames , favoriteBrowser , failedSessions , true ) ;
83
85
}
84
86
} ,
85
87
} ;
0 commit comments