public override TResult RunQuery <TResult>(IAutoBotQuery <TResult> query, string componentName) { string queryString = $"{ componentName }::{ query.GetType().Name }"; try { TResult result = default(TResult); Exception[] exceptions = RunIterativelyAndCollectExceptions(queryString, () => { result = base.RunQuery(query, componentName); }); if (exceptions.Length > 0) { throw new AutoBotQueryFailedException <TResult>(query, componentName, exceptions); } return(result); } catch { _logger.TakeScreenshot($"Error: { queryString } Test Failed."); throw; } }
public virtual TResult RunQuery <TResult>(IAutoBotQuery <TResult> query, string componentName) { _logger.LogVerbose($"Target component key is: { componentName }"); string queryClassName = query.GetType().Name; _logger.LogVerbose($"Current query is: { queryClassName }"); Source source = _navigator.GetCurrentSource(); string sourceClassName = source.GetType().Name; _logger.LogVerbose($"Current source is: { sourceClassName }"); object component = source.GetComponent(componentName); string componentClassName = component.GetType().Name; _logger.LogVerbose($"Current component is: { componentClassName }"); TResult result = query.Run(component); _logger.LogVerbose($"{ componentName }::{ queryClassName }::{ sourceClassName }::{ componentClassName } query returned { result.ToString() }."); return(result); }
public AutoBotQueryFailedException(IAutoBotQuery <TResult> query, string componentName, IEnumerable <Exception> innerExceptions) : base($"{query.GetType().Name} query failed on '{componentName}'", innerExceptions) { Query = query; ComponentName = componentName; }