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); }
private static Eyes Setup(IWebDriver driver) { ILogHandler logHandler = TestUtils.InitLogHandler(); WebDriverProvider webdriverProvider = new WebDriverProvider(); IServerConnectorFactory serverConnectorFactory = new MockServerConnectorFactory(webdriverProvider); VisualGridRunner runner = new VisualGridRunner(10, "test", serverConnectorFactory, logHandler); Eyes eyes = new Eyes(runner); webdriverProvider.SetDriver(driver); return(eyes); }
private static EyesRunner CreateEyesRunnerWithMockServerConnector_(bool useVG, IWebDriver driver, ILogHandler logHandler) { WebDriverProvider webDriverProvider = new WebDriverProvider(); webDriverProvider.SetDriver(driver); IServerConnectorFactory serverConnectorFactory = new MockServerConnectorFactory(webDriverProvider); EyesRunner runner = useVG ? (EyesRunner) new VisualGridRunner(10, null, serverConnectorFactory, logHandler) : new ClassicRunner(logHandler, serverConnectorFactory); return(runner); }
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))); } }
public void TestEyesExceptions(bool useVG) { IWebDriver driver = SeleniumUtils.CreateChromeDriver(); WebDriverProvider driverProvider = new WebDriverProvider(); driverProvider.SetDriver(driver); MockServerConnectorFactory serverConnectorFactory = new MockServerConnectorFactory(driverProvider); ILogHandler logHandler = TestUtils.InitLogHandler(); EyesRunner runner = useVG ? (EyesRunner) new VisualGridRunner(10, null, serverConnectorFactory, logHandler) : new ClassicRunner(logHandler, serverConnectorFactory); Eyes eyes = new Eyes(runner); try { eyes.ApiKey = ""; Assert.That(() => { eyes.Open(driver); }, Throws.Exception.With.InstanceOf <EyesException>().With.Property("Message").EqualTo("API key not set! Log in to https://applitools.com to obtain your API key and use the 'Eyes.ApiKey' property to set it.")); eyes.ApiKey = "someAPIkey"; Assert.That(() => { eyes.Open(driver); }, Throws.ArgumentNullException.With.Property("ParamName").EqualTo("appName")); Configuration conf = new Configuration(); conf.SetAppName(""); eyes.SetConfiguration(conf); Assert.That(() => { eyes.Open(driver); }, Throws.ArgumentException.With.Property("ParamName").EqualTo("appName")); conf.SetAppName("app"); eyes.SetConfiguration(conf); Assert.That(() => { eyes.Open(driver); }, Throws.ArgumentNullException.With.Property("ParamName").EqualTo("testName")); conf.SetTestName(""); eyes.SetConfiguration(conf); Assert.That(() => { eyes.Open(driver); }, Throws.ArgumentException.With.Property("ParamName").EqualTo("testName")); conf.SetTestName("test"); eyes.SetConfiguration(conf); eyes.Open(driver); } finally { driver.Quit(); } }
public void TestMapRunningTestsToRequiredBrowserWidth() { WebDriverProvider webdriverProvider = new WebDriverProvider(); IServerConnectorFactory serverConnectorFactory = new MockServerConnectorFactory(webdriverProvider); ILogHandler logHandler = TestUtils.InitLogHandler(); VisualGridRunner runner = new VisualGridRunner(30, nameof(TestMapRunningTestsToRequiredBrowserWidth), serverConnectorFactory, logHandler); Eyes wrappingEyes = new Eyes(runner); Configuration configuration = wrappingEyes.GetConfiguration(); configuration.AddBrowser(new DesktopBrowserInfo(1000, 500, BrowserType.CHROME)); configuration.AddBrowser(new DesktopBrowserInfo(1000, 700, BrowserType.CHROME)); configuration.AddBrowser(new DesktopBrowserInfo(700, 500, BrowserType.CHROME)); wrappingEyes.SetConfiguration(configuration); VisualGridEyes eyes = wrappingEyes.visualGridEyes_; //doNothing().when(eyes).setViewportSize(ArgumentMatchers.< EyesSeleniumDriver > any()); //eyes.ServerConnector(new MockServerConnector()); //RemoteWebDriver driver = mock(RemoteWebDriver.class); //when(driver.getSessionId()).thenReturn(mock(SessionId.class)); ChromeDriver driver = SeleniumUtils.CreateChromeDriver(); webdriverProvider.SetDriver(driver); try { driver.Url = "data:text/html,<html><body><h1>Hello, world!</h1></body></html>"; eyes.Open(driver, "app", "test", new Size(800, 800)); Fluent.SeleniumCheckSettings seleniumCheckSettings = Target.Window(); Dictionary <int, List <RunningTest> > map = eyes.MapRunningTestsToRequiredBrowserWidth_(seleniumCheckSettings); CollectionAssert.IsEmpty(map); seleniumCheckSettings = Target.Window().LayoutBreakpointsEnabled(false); map = eyes.MapRunningTestsToRequiredBrowserWidth_(seleniumCheckSettings); CollectionAssert.IsEmpty(map); seleniumCheckSettings = Target.Window().LayoutBreakpointsEnabled(true); map = eyes.MapRunningTestsToRequiredBrowserWidth_(seleniumCheckSettings); CollectionAssert.AreEquivalent(new int[] { 700, 1000 }, map.Keys); Assert.AreEqual(1, map[700].Count); Assert.AreEqual(2, map[1000].Count); seleniumCheckSettings = Target.Window().LayoutBreakpoints(750, 1200); map = eyes.MapRunningTestsToRequiredBrowserWidth_(seleniumCheckSettings); CollectionAssert.AreEquivalent(new int[] { 749, 750 }, map.Keys); Assert.AreEqual(1, map[749].Count); Assert.AreEqual(2, map[750].Count); seleniumCheckSettings = Target.Window().LayoutBreakpoints(700); map = eyes.MapRunningTestsToRequiredBrowserWidth_(seleniumCheckSettings); CollectionAssert.AreEquivalent(new int[] { 700 }, map.Keys); Assert.AreEqual(3, map[700].Count); wrappingEyes.SetConfiguration(configuration.SetLayoutBreakpointsEnabled(false)); seleniumCheckSettings = Target.Window(); map = eyes.MapRunningTestsToRequiredBrowserWidth_(seleniumCheckSettings); CollectionAssert.IsEmpty(map); wrappingEyes.SetConfiguration(configuration.SetLayoutBreakpointsEnabled(true)); seleniumCheckSettings = Target.Window(); map = eyes.MapRunningTestsToRequiredBrowserWidth_(seleniumCheckSettings); CollectionAssert.AreEquivalent(new int[] { 700, 1000 }, map.Keys); Assert.AreEqual(1, map[700].Count); Assert.AreEqual(2, map[1000].Count); wrappingEyes.SetConfiguration(configuration.SetLayoutBreakpoints(750, 1200)); seleniumCheckSettings = Target.Window(); map = eyes.MapRunningTestsToRequiredBrowserWidth_(seleniumCheckSettings); CollectionAssert.AreEquivalent(new int[] { 749, 750 }, map.Keys); Assert.AreEqual(1, map[749].Count); Assert.AreEqual(2, map[750].Count); wrappingEyes.SetConfiguration(configuration.SetLayoutBreakpoints(750, 1200)); seleniumCheckSettings = Target.Window().LayoutBreakpointsEnabled(true); map = eyes.MapRunningTestsToRequiredBrowserWidth_(seleniumCheckSettings); CollectionAssert.AreEquivalent(new int[] { 700, 1000 }, map.Keys); Assert.AreEqual(1, map[700].Count); Assert.AreEqual(2, map[1000].Count); wrappingEyes.SetConfiguration(configuration.SetLayoutBreakpoints(750, 1200)); seleniumCheckSettings = Target.Window().LayoutBreakpoints(700); map = eyes.MapRunningTestsToRequiredBrowserWidth_(seleniumCheckSettings); CollectionAssert.AreEquivalent(new int[] { 700 }, map.Keys); Assert.AreEqual(3, map[700].Count); } finally { driver.Quit(); runner.StopServiceRunner(); } }