@@ -7,6 +7,7 @@ const nockBack = require('nock').back;
77const Joi = require ( 'joi-strict' ) ;
88const EnvManager = require ( './env-manager' ) ;
99const timeKeeper = require ( './time-keeper' ) ;
10+ const ConsoleRecorder = require ( './console-recorder' ) ;
1011
1112const getParents = ( test ) => {
1213 const names = [ ] ;
@@ -38,19 +39,22 @@ module.exports = (suiteName, optsOrTests, testsOrNull = null) => {
3839 useTmpDir : Joi . boolean ( ) . optional ( ) ,
3940 useNock : Joi . boolean ( ) . optional ( ) ,
4041 envVars : Joi . object ( ) . optional ( ) . unknown ( true ) . pattern ( Joi . string ( ) , Joi . string ( ) ) ,
41- timestamp : Joi . number ( ) . optional ( ) . min ( 0 )
42+ timestamp : Joi . number ( ) . optional ( ) . min ( 0 ) ,
43+ recordConsole : Joi . boolean ( ) . optional ( )
4244 } ) , 'Bad Options Provided' ) ;
4345 const useTmpDir = get ( opts , 'useTmpDir' , false ) ;
4446 const useNock = get ( opts , 'useNock' , false ) ;
4547 const envVars = get ( opts , 'envVars' , null ) ;
4648 const timestamp = get ( opts , 'timestamp' , null ) ;
49+ const recordConsole = get ( opts , 'recordConsole' , false ) ;
4750
4851 let dir = null ;
4952 let nockDone = null ;
5053 let envManagerFile = null ;
5154 let envManagerDesc = null ;
55+ let consoleRecorder = null ;
5256
53- const getArgs = ( ) => ( { dir } ) ;
57+ const getArgs = ( ) => ( { dir, ... ( consoleRecorder === null ? { } : { getLogs : consoleRecorder . get } ) } ) ;
5458 let beforeCb = ( ) => { } ;
5559 let afterCb = ( ) => { } ;
5660 let beforeEachCb = ( ) => { } ;
@@ -102,18 +106,26 @@ module.exports = (suiteName, optsOrTests, testsOrNull = null) => {
102106 nockBack . fixtures = `${ testFile } __cassettes/` ;
103107 nockDone = await new Promise ( ( resolve ) => nockBack ( genCassetteName ( this . currentTest ) , { } , resolve ) ) ;
104108 }
109+ if ( recordConsole === true ) {
110+ consoleRecorder = ConsoleRecorder ( true ) ;
111+ consoleRecorder . inject ( ) ;
112+ }
105113 await beforeEachCb ( getArgs ( ) ) ;
106114 } ) ( ) ;
107115 } ) ;
108116
109117 afterEach ( async ( ) => {
110- if ( dir !== null ) {
111- dir = null ;
118+ if ( consoleRecorder !== null ) {
119+ consoleRecorder . release ( ) ;
120+ consoleRecorder = null ;
112121 }
113122 if ( nockDone !== null ) {
114123 nockDone ( ) ;
115124 nockDone = null ;
116125 }
126+ if ( dir !== null ) {
127+ dir = null ;
128+ }
117129 await afterEachCb ( getArgs ( ) ) ;
118130 } ) ;
119131
0 commit comments