public ProtoExecutionResult ExecuteHooks(string hookType, HooksStrategy strategy, IList <string> applicableTags) { var stopwatch = Stopwatch.StartNew(); var builder = new ProtoExecutionResult() { Failed = false }; var executionResult = _sandbox.ExecuteHooks(hookType, strategy, applicableTags); builder.ExecutionTime = stopwatch.ElapsedMilliseconds; if (!executionResult.Success) { var elapsedMilliseconds = stopwatch.ElapsedMilliseconds; builder.Failed = true; var isScreenShotEnabled = Utils.TryReadEnvValue("SCREENSHOT_ENABLED"); if (isScreenShotEnabled == null || isScreenShotEnabled.ToLower() != "false") { builder.ScreenShot = TakeScreenshot(); } builder.ErrorMessage = executionResult.ExceptionMessage; builder.StackTrace = executionResult.StackTrace; builder.RecoverableError = executionResult.Recoverable; builder.ExecutionTime = elapsedMilliseconds; } return(builder); }
public ProtoExecutionResult ExecuteHooks(string hookType, HooksStrategy strategy, IList <string> applicableTags, ExecutionContext executionContext) { var stopwatch = Stopwatch.StartNew(); var builder = new ProtoExecutionResult { Failed = false }; var executionResult = _sandbox.ExecuteHooks(hookType, strategy, applicableTags, executionContext); builder.ExecutionTime = stopwatch.ElapsedMilliseconds; if (!executionResult.Success) { var elapsedMilliseconds = stopwatch.ElapsedMilliseconds; builder.Failed = true; var isScreenShotEnabled = Utils.TryReadEnvValue("SCREENSHOT_ON_FAILURE"); if (isScreenShotEnabled == null || isScreenShotEnabled.ToLower() != "false") { var screenshot = TakeScreenshot(); builder.ScreenShot = screenshot; builder.FailureScreenshot = screenshot; } builder.ErrorMessage = executionResult.ExceptionMessage; builder.StackTrace = executionResult.StackTrace; builder.RecoverableError = executionResult.Recoverable; builder.ExecutionTime = elapsedMilliseconds; } var allPendingMessages = GetAllPendingMessages().Where(m => m != null); builder.Message.AddRange(allPendingMessages); var allPendingScreenshots = GetAllPendingScreenshots().Select(ByteString.CopyFrom); builder.Screenshots.AddRange(allPendingScreenshots); return(builder); }