private MatchResult PerformMatch_(IList <Trigger> userInputs, AppOutputWithScreenshot appOutput, string tag, bool replaceLast, ImageMatchSettings imageMatchSettings, string agentSetupStr, string source, string renderId) { // Prepare match data. MatchWindowData data = new MatchWindowData(appOutput.AppOutput, tag, agentSetupStr); data.IgnoreMismatch = false; data.Options = new ImageMatchOptions(imageMatchSettings); data.Options.Name = tag; data.Options.UserInputs = userInputs; data.Options.IgnoreMismatch = false; data.Options.IgnoreMatch = false; data.Options.ForceMismatch = false; data.Options.ForceMatch = false; data.Options.Source = source; data.Options.RenderId = renderId; data.Options.ReplaceLast = replaceLast; data.RenderId = renderId; return(serverConnector_.MatchWindow(runningSession_, data)); }
public void TestCtor() { MatchWindowData mwd = new MatchWindowData(appOut_, "mytag"); ImageMatchSettings ims = new ImageMatchSettings(); mwd.Options = new ImageMatchOptions(ims); mwd.Options.UserInputs = new Trigger[] { trigger_ }; Assert.AreEqual(appOut_, mwd.AppOutput); Assert.AreEqual(new Trigger[] { trigger_ }, mwd.Options.UserInputs); Assert.AreEqual("mytag", mwd.Tag); new MatchWindowData(appOut_, "tag"); Assert.Throws <ArgumentNullException>(() => new MatchWindowData(null, "tag")); var ok = new MatchWindowData(appOut_, null); }
public MatchResult Check(string testId, MatchWindowData matchWindowData) { SyncTaskListener listener = new SyncTaskListener(logger: Logger, testIds: testId); checkService_.TryUploadImage(testId, matchWindowData, listener); bool?result = listener.Get(); if (result == null || result.Value == false) { throw new EyesException("Failed performing match with the server", listener.Exception); } SyncTaskListener <MatchResult> matchListener = new SyncTaskListener <MatchResult>(logger: Logger, testIds: testId); checkService_.MatchWindow(testId, matchWindowData, matchListener); return(matchListener.Get()); }
private EyesScreenshot TryTakingScreenshot_(Rectangle?region, IList <Trigger> userInputs, string tag, bool replaceLast, ICheckSettingsInternal checkSettingsInternal, ImageMatchSettings imageMatchSettings, string source) { AppOutput appOutput = GetAppOutput_(region, checkSettingsInternal, imageMatchSettings); string currentScreenshotHash = appOutput.ScreenshotUrl ?? CommonUtils.GetSha256Hash(appOutput.ScreenshotBytes); logger_.Log(TraceLevel.Info, Stage.Check, StageType.CaptureScreenshot, new { currentScreenshotHash, lastScreenshotHash_ }); if (lastScreenshotHash_ != currentScreenshotHash) { MatchWindowData data = eyes_.PrepareForMatch(checkSettingsInternal, userInputs, appOutput, tag, replaceLast || (lastScreenshotHash_ != null), imageMatchSettings, null, source); matchResult_ = eyes_.PerformMatch(data); lastScreenshotHash_ = currentScreenshotHash; } return((EyesScreenshot)appOutput.Screenshot); }
protected virtual void MatchWindowImpl_(TaskListener <MatchResult> listener, MatchWindowData data, string[] testIds) { string url = string.Format("api/sessions/running/{0}", data.RunningSession.Id); Logger.Log(TraceLevel.Notice, testIds, Stage.Check, StageType.MatchStart); httpClient_.PostJson(new TaskListener <HttpResponseMessage>( response => { Logger.Log(TraceLevel.Notice, testIds, Stage.Check, StageType.MatchComplete, new { response?.StatusCode }); if (response == null) { throw new NullReferenceException("response is null"); } MatchResult matchResult = response.DeserializeBody <MatchResult>(true); Logger.Log(TraceLevel.Info, testIds, Stage.Check, StageType.MatchComplete, new { matchResult }); listener.OnComplete(matchResult); }, e => listener.OnFail(e) ), url, data); }
public void MatchWindow(TaskListener <MatchResult> listener, MatchWindowData data, params string[] testIds) { ArgumentGuard.NotNull(data, nameof(data)); if (data.AppOutput.ScreenshotBytes != null) { UploadImage(new TaskListener <string>( returnedUrl => { Logger.Log(TraceLevel.Notice, testIds, Stage.General, StageType.UploadComplete, new { returnedUrl }); if (returnedUrl == null) { listener.OnFail(new EyesException($"{nameof(MatchWindow)} failed: could not upload image to storage service.")); return; } try { data.AppOutput.ScreenshotUrl = returnedUrl; MatchWindowImpl_(listener, data, testIds); } catch (Exception ex) { throw new EyesException($"{nameof(MatchWindow)} failed: {ex.Message}", ex); } }, ex => listener.OnFail(ex) ), data.AppOutput.ScreenshotBytes, testIds); } else if (data.AppOutput.ScreenshotUrl != null) { MatchWindowImpl_(listener, data, testIds); } else { throw new EyesException("Failed to upload image."); } }