Exemplo n.º 1
0
        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);
        }
Exemplo n.º 3
0
        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());
        }
Exemplo n.º 4
0
        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);
        }
Exemplo n.º 5
0
        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);
        }
Exemplo n.º 6
0
        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.");
            }
        }