public async Task <int> InvokeAsync(InvocationContext context) { var timeTaken = Stopwatch.StartNew(); logger.LogInformation("Test Command execute"); console.WriteLine("Starting test command".StyleBold()); //console.WriteLine("Using ") console.WriteRichLine($"Using configuration: {options.Configuration}"); var config = await LoadConfig(); if (config.IsNone) { return(ExitCodes.ConfigurationFailure); } await console.CreateProgressBar("Running tests"); var progress = new Progress <double>((p) => console.ReportProgress(p)); var results = await executor.RunAllSuitesAsync((Config)config, progress, options.Sequential? 1 : Environment.ProcessorCount); await console.DestroyProgressBar(); // summarize results await resultFormatter.WriteResultsHeader(); var resultStats = new ResultsStatistics(); foreach (var result in results) { resultStats.ProcessRecord(result); await resultFormatter.WriteResult(resultStats.TotalResults, result); } timeTaken.Stop(); await resultFormatter.WriteResultsFooter(new FinalResults( (Config)config, resultStats, timeTaken.Elapsed )); //logger.LogDebug("Received {count} results from executor", results); return(resultStats.TotalFailures is 0 ? ExitCodes.Success : ExitCodes.TestFailure); }