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"); }
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); }
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))); } }
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); }