Exemplo n.º 1
0
        public void TestNoReplaceMatchedStep()
        {
            WebDriverProvider webdriverProvider = new WebDriverProvider();
            Eyes eyes = new Eyes(new MockServerConnectorFactory(webdriverProvider));

            TestUtils.SetupLogging(eyes);
            eyes.Batch = TestDataProvider.BatchInfo;
            IWebDriver driver = SeleniumUtils.CreateChromeDriver();

            webdriverProvider.SetDriver(driver);
            MockServerConnector mockServerConnector = (MockServerConnector)eyes.seleniumEyes_.ServerConnector;

            mockServerConnector.AsExpected = false;
            try
            {
                driver.Url = "https://applitools.github.io/demo/TestPages/SpecialCases/neverchanging.html";
                eyes.Open(driver, "Applitools Eyes SDK", "Test No Replace Matched Step", new Size(700, 460));
                eyes.Check("Step 1", Target.Window().SendDom(false));
                eyes.Close();
            }
            finally
            {
                driver.Quit();
                eyes.AbortIfNotClosed();
            }
            Assert.AreEqual(1, mockServerConnector.MatchWindowCalls.Count, "Matches");
            Assert.AreEqual(0, mockServerConnector.ReplaceMatchedStepCalls.Count, "Replacements");
        }
Exemplo n.º 2
0
        public void TestBatchClose()
        {
            List <string> batchIds = new List <string>();

            batchIds.Add("first");
            batchIds.Add("second");
            batchIds.Add("third");

            Uri serverUrl1 = new Uri("http://customUrl1");
            Uri serverUrl2 = new Uri("http://customUrl2");

            Logger logger = new Logger();

            logger.SetLogHandler(TestUtils.InitLogHandler());
            BatchClose batchClose = new BatchClose(logger);

            batchClose.ApiKey = "someApiKey";
            EnabledBatchClose enabledBatchClose = batchClose.SetUrl(serverUrl1).SetBatchId(batchIds);

            Assert.AreEqual(serverUrl1, enabledBatchClose.ServerUrl);
            enabledBatchClose.SetUrl(serverUrl2);
            Assert.AreEqual(serverUrl2, enabledBatchClose.ServerUrl);

            MockServerConnector serverConnector = new MockServerConnector(logger, null);

            enabledBatchClose.serverConnector_ = serverConnector;

            enabledBatchClose.Close();

            Assert.AreEqual(3, serverConnector.CloseBatchRequestUris.Count);
            Assert.AreEqual("http://customurl2/api/sessions/batches/first/close/bypointerid?apiKey=someApiKey", serverConnector.CloseBatchRequestUris[0].AbsoluteUri);
            Assert.AreEqual("http://customurl2/api/sessions/batches/second/close/bypointerid?apiKey=someApiKey", serverConnector.CloseBatchRequestUris[1].AbsoluteUri);
            Assert.AreEqual("http://customurl2/api/sessions/batches/third/close/bypointerid?apiKey=someApiKey", serverConnector.CloseBatchRequestUris[2].AbsoluteUri);
        }
Exemplo n.º 3
0
        public void ViewportsTest()
        {
            WebDriverProvider       webdriverProvider      = new WebDriverProvider();
            IServerConnectorFactory serverConnectorFactory = new MockServerConnectorFactory(webdriverProvider);
            ILogHandler             logHandler             = TestUtils.InitLogHandler();
            VisualGridRunner        runner = new VisualGridRunner(30, nameof(ViewportsTest), serverConnectorFactory, logHandler);
            Eyes eyes = new Eyes(runner);

            Configuration sconf = new Configuration();

            sconf.SetBatch(TestDataProvider.BatchInfo);
            sconf.SetTestName("Viewport Size Test");
            sconf.SetAppName("Visual Grid Viewports Test");
            sconf.SetHideScrollbars(true);
            sconf.SetStitchMode(StitchModes.CSS);
            sconf.SetForceFullPageScreenshot(true);
            sconf.SetMatchLevel(MatchLevel.Strict);
            int numOfBrowsers = 0;

            foreach (BrowserType b in Enum.GetValues(typeof(BrowserType)))
            {
#pragma warning disable CS0618 // Type or member is obsolete
                if (b == BrowserType.EDGE)
                {
                    continue;
                }
#pragma warning restore CS0618 // Type or member is obsolete
                sconf.AddBrowser(700, 500, b);
                sconf.AddBrowser(800, 600, b);
                numOfBrowsers++;
            }
            eyes.SetConfiguration(sconf);

            ChromeDriver driver = SeleniumUtils.CreateChromeDriver();
            webdriverProvider.SetDriver(driver);
            try
            {
                eyes.Open(driver);
                driver.Url = "data:text/html,<html><body><h1>Hello, world!</h1></body></html>";
                eyes.Check("Test Viewport", Target.Window().Fully());
            }
            finally
            {
                driver.Quit();
            }
            TestResultsSummary      allResults      = runner.GetAllTestResults(false);
            MockServerConnector     serverConnector = (MockServerConnector)runner.ServerConnector;
            HashSet <RenderRequest> requests        = new HashSet <RenderRequest>();
            foreach (string requestJson in serverConnector.RenderRequests)
            {
                RenderRequest[] reqs = Newtonsoft.Json.JsonConvert.DeserializeObject <RenderRequest[]>(requestJson);
                foreach (RenderRequest req in reqs)
                {
                    requests.Add(req);
                }
            }
            int browserCount = sconf.GetBrowsersInfo().Count;
            Assert.AreEqual(browserCount, numOfBrowsers * 2);
            Assert.AreEqual(browserCount, requests.Count);
        }
        public void BrowserSizeTest()
        {
            IWebDriver webDriver = SeleniumUtils.CreateChromeDriver();
            //webDriver.Url = "https://applitools.github.io/demo/TestPages/DynamicResolution/mobile.html";
            Eyes eyes = new Eyes(new MockServerConnectorFactory());

            eyes.SendDom = false;
            TestUtils.SetupLogging(eyes);
            eyes.Batch = TestDataProvider.BatchInfo;
            try
            {
                eyes.Open(webDriver, "Browser Size Test", "Browser Size Test", new Size(640, 480));
                //eyes.Check("Test 1", Target.Window());
                TestResults results1 = eyes.Close(false);

                eyes.Open(webDriver, "Browser Size Test", "Browser Size Test", new Size(800, 600));
                //eyes.Check("Test 2", Target.Window());
                TestResults results2 = eyes.Close(false);

                eyes.Open(webDriver, "Browser Size Test", "Browser Size Test", new Size(1024, 768));
                //eyes.Check("Test 3", Target.Window());
                TestResults results3 = eyes.Close(false);
            }
            finally
            {
                webDriver.Quit();
            }

            try
            {
                ChromeOptions options = new ChromeOptions();
                options.EnableMobileEmulation("iPhone 5/SE");
                webDriver = SeleniumUtils.CreateChromeDriver(options);
                //webDriver.Url = "https://applitools.github.io/demo/TestPages/DynamicResolution/mobile.html";

                eyes.Open(webDriver, "Browser Size Test", "Browser Size Test");
                //eyes.Check("Test 4", Target.Window());
                TestResults results4 = eyes.Close(false);
            }
            finally
            {
                webDriver.Quit();
            }

            try
            {
                MockServerConnector server = (MockServerConnector)eyes.seleniumEyes_.ServerConnector;
                Assert.AreEqual(4, server.SessionIds.Count);
                Assert.AreEqual(new Size(640, 480), server.SessionsStartInfo[server.SessionIds[0]].Environment.DisplaySize.ToSize());
                Assert.AreEqual(new Size(800, 600), server.SessionsStartInfo[server.SessionIds[1]].Environment.DisplaySize.ToSize());
                Assert.AreEqual(new Size(1024, 768), server.SessionsStartInfo[server.SessionIds[2]].Environment.DisplaySize.ToSize());
                Assert.AreEqual(new Size(320, 568), server.SessionsStartInfo[server.SessionIds[3]].Environment.DisplaySize.ToSize());
            }
            finally
            {
                eyes.AbortIfNotClosed();
            }
        }
        public void TestFullWindowInCorrectLocationAfterRetry()
        {
            WebDriverProvider       webdriverProvider      = new WebDriverProvider();
            IServerConnectorFactory serverConnectorFactory = new MockServerConnectorFactory(webdriverProvider);
            Eyes eyes = new Eyes(serverConnectorFactory);

            eyes.Batch = TestDataProvider.BatchInfo;
            TestUtils.SetupLogging(eyes);
            MockServerConnector mockServerConnector = (MockServerConnector)eyes.seleniumEyes_.ServerConnector;

            mockServerConnector.AsExpected = false;
            IWebDriver driver = SeleniumUtils.CreateChromeDriver();

            webdriverProvider.SetDriver(driver);
            driver.Url = "https://applitools.github.io/demo/TestPages/FramesTestPage/";
            try
            {
                eyes.Open(driver, "DotNet Tests", nameof(TestFullWindowInCorrectLocationAfterRetry), new Size(700, 460));
                driver.FindElement(By.TagName("input")).SendKeys("Different Input");
                eyes.Check(Target.Window().Fully());
                eyes.Close();
            }
            finally
            {
                eyes.AbortIfNotClosed();
                driver.Quit();
            }
            Assert.AreEqual(1, mockServerConnector.MatchWindowCalls.Count, "Matches");
            Assert.AreEqual(0, mockServerConnector.ReplaceMatchedStepCalls.Count, "Replacements");
            byte[] screenshotBytes = mockServerConnector.ImagesAsByteArrays[0];
            string finalImageHash  = screenshotBytes.GetSha256Hash();

            if (finalImageHash != "0EEBFD0FCDE40BA1FB5D4B8C4DA535F3C846B2E1685C84488E43FC6DC6ECD88A" && // Windows
                finalImageHash != "5E771AB31BA0D3232E370FDA5E630A649E0E03FA704243BBD288303B4D9064B3" && // Windows with different Antialiasing
                finalImageHash != "35D38A5CE5571F4D2AB4C543FB7CDB2EDC85A82C2472A8F062700637DE8BCF30" && // Windows, Chrome >= 87
                finalImageHash != "CAE9ADB9A45932BF9DEA51972A6B69908D012324E0CB4B2A93368CDD3C8E56D2" && // Linux, Chrome >=85
                finalImageHash != "993DB6CB4EC9D93AB5A7F0F598F179DADBB562A5E6A31BFAA6211C809BA5C9BB" && // Linux, Chrome >=87
                finalImageHash != "53CD94D4450FF82825C8B36A04E0BC68B32BACFB4F09019294D907AF0080F6E5")   // Linux, Chrome >=89
            {
                Assert.Fail("Different image than expected. Hash: {0}\nBase64:\n{1}\n", finalImageHash,
                            string.Join("\n", Convert.ToBase64String(screenshotBytes).Split(160)));
            }
        }
        public void TestFullWindowInCorrectLocationAfterRetry()
        {
            IServerConnectorFactory serverConnectorFactory = new MockServerConnectorFactory();
            Eyes eyes = new Eyes(serverConnectorFactory);

            eyes.Batch = TestDataProvider.BatchInfo;
            TestUtils.SetupLogging(eyes);
            MockServerConnector mockServerConnector = (MockServerConnector)eyes.seleniumEyes_.ServerConnector;

            mockServerConnector.AsExcepted = false;
            IWebDriver driver = SeleniumUtils.CreateChromeDriver();

            driver.Url = "https://applitools.github.io/demo/TestPages/FramesTestPage/";
            try
            {
                eyes.Open(driver, "DotNet Tests", nameof(TestFullWindowInCorrectLocationAfterRetry), new Size(700, 460));
                driver.FindElement(By.TagName("input")).SendKeys("Different Input");
                eyes.Check(Target.Window().Fully());
                eyes.Close();
            }
            finally
            {
                eyes.AbortIfNotClosed();
                driver.Quit();
            }
            Assert.AreEqual(1, mockServerConnector.MatchWindowCalls.Count, "Matches");
            Assert.AreEqual(0, mockServerConnector.ReplaceMatchedStepCalls.Count, "Replacements");
            byte[] screenshotBytes = mockServerConnector.MatchWindowCalls[0].AppOutput.ScreenshotBytes;
            string finalImageHash  = screenshotBytes.GetSha256Hash();

            if (finalImageHash != "1C2E890355934CF44F070D1F8199E0AF390275E9D82ED82A898C8172406555E9" && // Windows
                finalImageHash != "0DC273FEF58C6E4B2563DF2078347B32EFC702E96E11D782E3664F0690881E6B" && // Windows with different Antialiasing
                finalImageHash != "1FCC19630668582400BD59119FDF4692707B67A524DEB2F8047D96C9E56CC074" && // Linux, Chrome <85
                finalImageHash != "FCBE40C10CFD01E9F86084F655708226E53B98508F1696CBAEEF158CA20CDD78")   // Linux, Chrome >=85
            {
                Assert.Fail("Different image than expected. Hash: {0}\nBase64:\n{1}\n", finalImageHash,
                            string.Join('\n', Convert.ToBase64String(screenshotBytes).Split(160)));
            }
        }
Exemplo n.º 7
0
        private static void ValidateServerUrlAndApiKey_(IWebDriver driver, EyesRunner runner, Eyes eyes)
        {
            try
            {
                eyes.Open(driver, "app", "test");
                eyes.CheckWindow();
                eyes.Close();
            }
            finally
            {
                driver.Quit();
            }
            MockServerConnector          serverConnector = (MockServerConnector)runner.ServerConnector;
            MockMessageProcessingHandler handler         = ((MockHttpRestClientFactory)serverConnector.HttpRestClientFactory).Provider.Handler;
            int i = 0;

            foreach (HttpRequestMessage req in handler.Requests)
            {
                if (req.Method == HttpMethod.Put)
                {
                    continue;
                }
                ++i;
                StringAssert.Contains("apiKey=someApiKey", req.RequestUri.AbsoluteUri);
                StringAssert.StartsWith("https://some.server.url.com", req.RequestUri.AbsoluteUri);
            }
            Assert.Greater(i, 0);

            Assert.AreEqual("someApiKey", serverConnector.ApiKey);
            Assert.AreEqual("https://some.server.url.com/", serverConnector.ServerUrl.AbsoluteUri);

            Assert.AreEqual("someApiKey", eyes.ApiKey);
            Assert.AreEqual("https://some.server.url.com/", eyes.ServerUrl);

            Assert.AreEqual("someApiKey", runner.ApiKey);
            Assert.AreEqual("https://some.server.url.com/", runner.ServerUrl);
        }