@@ -216,38 +216,36 @@ let initFn = async function(configFile: string, additionalConfig: Config) {
216
216
}
217
217
218
218
const createNextTaskRunner = async ( ) => {
219
- return new Promise ( async ( resolve ) => {
220
- const task = scheduler . nextTask ( ) ;
221
- if ( task ) {
222
- const taskRunner = new TaskRunner ( configFile , additionalConfig , task , forkProcess ) ;
223
- try {
224
- const result = await taskRunner . run ( ) ;
225
- if ( result . exitCode && ! result . failedCount ) {
226
- logger . error ( 'Runner process exited unexpectedly with error code: ' + result . exitCode ) ;
227
- }
228
- taskResults_ . add ( result ) ;
229
- task . done ( ) ;
230
- await createNextTaskRunner ( ) ;
231
- // If all tasks are finished
232
- if ( scheduler . numTasksOutstanding ( ) === 0 ) {
233
- resolve ( ) ;
234
- }
235
- logger . info ( scheduler . countActiveTasks ( ) + ' instance(s) of WebDriver still running' ) ;
236
- } catch ( err ) {
237
- const errorCode = ErrorHandler . parseError ( err ) ;
238
- logger . error ( 'Error:' , ( err as any ) . stack || err . message || err ) ;
239
- await cleanUpAndExit ( errorCode ? errorCode : RUNNERS_FAILED_EXIT_CODE ) ;
219
+ const task = scheduler . nextTask ( ) ;
220
+ if ( task ) {
221
+ const taskRunner = new TaskRunner ( configFile , additionalConfig , task , forkProcess ) ;
222
+ try {
223
+ const result = await taskRunner . run ( ) ;
224
+ if ( result . exitCode && ! result . failedCount ) {
225
+ logger . error ( 'Runner process exited unexpectedly with error code: ' + result . exitCode ) ;
240
226
}
241
- } else {
242
- resolve ( ) ;
227
+ taskResults_ . add ( result ) ;
228
+ task . done ( ) ;
229
+ await createNextTaskRunner ( ) ;
230
+ // If all tasks are finished
231
+ if ( scheduler . numTasksOutstanding ( ) === 0 ) {
232
+ return ;
233
+ }
234
+ logger . info ( scheduler . countActiveTasks ( ) + ' instance(s) of WebDriver still running' ) ;
235
+ } catch ( err ) {
236
+ const errorCode = ErrorHandler . parseError ( err ) ;
237
+ logger . error ( 'Error:' , ( err as any ) . stack || err . message || err ) ;
238
+ await cleanUpAndExit ( errorCode ? errorCode : RUNNERS_FAILED_EXIT_CODE ) ;
243
239
}
244
- } ) ;
240
+ }
245
241
} ;
246
242
247
243
const maxConcurrentTasks = scheduler . maxConcurrentTasks ( ) ;
244
+ const tasks = [ ] ;
248
245
for ( let i = 0 ; i < maxConcurrentTasks ; ++ i ) {
249
- await createNextTaskRunner ( ) ;
246
+ tasks . push ( createNextTaskRunner ( ) ) ;
250
247
}
248
+ await Promise . all ( tasks ) ;
251
249
logger . info ( 'Running ' + scheduler . countActiveTasks ( ) + ' instances of WebDriver' ) ;
252
250
253
251
// By now all runners have completed.
0 commit comments