public void TestParallelStepsLimitOfTest() { bool isOnlyOneRender = true; int runningRendersCount = 0; VisualGridRunner runner = new VisualGridRunner(); Configuration config = new Configuration(); config.AddBrowser(new IosDeviceInfo(IosDeviceName.iPhone_7)); ConfigurationProvider configurationProvider = new ConfigurationProvider(config); VisualGridEyes eyes = new VisualGridEyes(configurationProvider, runner); eyes.SetLogHandler(TestUtils.InitLogHandler()); eyes.EyesConnectorFactory = new MockEyesConnectorFactory(); IWebDriver driver = SeleniumUtils.CreateChromeDriver(); try { driver.Url = "http://applitools.github.io/demo"; eyes.Open(driver, "Eyes SDK", "UFG Server Concurrency", new RectangleSize(800, 800)); MockEyesConnector mockEyesConnector = (MockEyesConnector)eyes.eyesConnector_; mockEyesConnector.BeforeRender += (renderRequests) => { int runningRendersCountBeforeInc = runningRendersCount; Interlocked.Increment(ref runningRendersCount); if (runningRendersCountBeforeInc >= RunningTest.PARALLEL_STEPS_LIMIT) { isOnlyOneRender = false; } Thread.Sleep(1000); if (renderRequests.Length != 1) { isOnlyOneRender = false; } }; mockEyesConnector.AfterRender += (results, renderRequests) => { Interlocked.Decrement(ref runningRendersCount); }; for (int i = 0; i < 10; i++) { eyes.Check(Target.Window().Fully()); } eyes.CloseAsync(false); } finally { eyes.AbortAsync(); driver.Quit(); runner.GetAllTestResults(false); } Assert.IsTrue(isOnlyOneRender); }
private static MockEyesConnector OpenEyesAndGetConnector_(Eyes eyes, Configuration config, IWebDriver webDriver, out IWebDriver eyesDriver) { eyesDriver = eyes.Open(webDriver, "Mock app", "Mock Test"); MockEyesConnector mockEyesConnector = (MockEyesConnector)eyes.visualGridEyes_.eyesConnector_; //MockServerConnector mockServerConnector = new MockServerConnector(eyes.Logger, new Uri(eyes.ServerUrl)); //EyesConnector eyesConnector = new EyesConnector(config.GetBrowsersInfo()[0], config) // runningSession_ = new RunningSession(), // ServerConnector = mockServerConnector //}; //mockEyesConnector.WrappedConnector = eyesConnector; return(mockEyesConnector); }
public void TestOpenBeforeRender() { VisualGridRunner runner = new VisualGridRunner(10); Eyes eyes = new Eyes(runner); eyes.SetLogHandler(TestUtils.InitLogHandler()); eyes.visualGridEyes_.EyesConnectorFactory = new MockEyesConnectorFactory(); Configuration config = eyes.GetConfiguration(); config.AddBrowser(new IosDeviceInfo(IosDeviceName.iPhone_7)); eyes.SetConfiguration(config); object errorMessageLocker = new object(); string errorMessage = null; IWebDriver driver = SeleniumUtils.CreateChromeDriver(); driver.Url = "http://applitools.github.io/demo"; try { eyes.Open(driver, "Mock app", "Mock Test"); MockEyesConnector mockEyesConnector = (MockEyesConnector)eyes.visualGridEyes_.eyesConnector_; mockEyesConnector.BeforeRender += (renderRequests) => { IVisualGridEyes eyes = runner.allEyes_.First(); if (!eyes.GetAllRunningTests().First().IsTestOpen) { lock (errorMessageLocker) { errorMessage = "Render called before open"; } } }; eyes.CheckWindow(); eyes.CloseAsync(); } finally { eyes.AbortAsync(); driver.Quit(); runner.GetAllTestResults(false); } Assert.IsNull(errorMessage); }
//[Test] public void TestVisualGridSkipList() { VisualGridRunner runner = new VisualGridRunner(10); Eyes eyes = new Eyes(runner); TestUtils.SetupLogging(eyes); //eyes.visualGridEyes_.EyesConnectorFactory = new MockEyesConnectorFactory(); Configuration config = eyes.GetConfiguration(); config.AddBrowser(1050, 600, BrowserType.CHROME); config.SetBatch(TestDataProvider.BatchInfo); eyes.SetConfiguration(config); AutoResetEvent waitHandle = new AutoResetEvent(false); runner.debugLock_ = waitHandle; IWebDriver driver = SeleniumUtils.CreateChromeDriver(); //driver.Url = "https://applitools.github.io/demo/DomSnapshot/test-iframe.html"; driver.Url = "https://applitools.github.io/demo/TestPages/VisualGridTestPage/"; try { MockEyesConnector mockEyesConnector = OpenEyesAndGetConnector_(eyes, config, driver, out IWebDriver eyesDriver); eyes.Check(Target.Window()); string[] expectedUrls = new string[] { "https://applitools.github.io/demo/TestPages/VisualGridTestPage/AbrilFatface-Regular.woff2", "https://applitools.github.io/demo/TestPages/VisualGridTestPage/applitools_logo_combined.svg", "https://applitools.github.io/demo/TestPages/VisualGridTestPage/company_name.png", "https://applitools.github.io/demo/TestPages/VisualGridTestPage/frame.html", "https://applitools.github.io/demo/TestPages/VisualGridTestPage/innerstyle0.css", "https://applitools.github.io/demo/TestPages/VisualGridTestPage/innerstyle1.css", "https://applitools.github.io/demo/TestPages/VisualGridTestPage/innerstyle2.css", "https://applitools.github.io/demo/TestPages/VisualGridTestPage/logo.svg", "https://applitools.github.io/demo/TestPages/VisualGridTestPage/minions-800x500_green_sideways.png", "https://applitools.github.io/demo/TestPages/VisualGridTestPage/minions-800x500.jpg", "https://applitools.github.io/demo/TestPages/VisualGridTestPage/slogan.svg", "https://applitools.github.io/demo/TestPages/VisualGridTestPage/style0.css", "https://applitools.github.io/demo/TestPages/VisualGridTestPage/style1.css", "https://fonts.googleapis.com/css?family=Raleway", "https://fonts.googleapis.com/css?family=Unlock", "https://fonts.gstatic.com/s/raleway/v18/1Ptxg8zYS_SKggPN4iEgvnHyvveLxVvaorCFPrEHJA.woff2", "https://fonts.gstatic.com/s/raleway/v18/1Ptxg8zYS_SKggPN4iEgvnHyvveLxVvaorCGPrEHJA.woff2", "https://fonts.gstatic.com/s/raleway/v18/1Ptxg8zYS_SKggPN4iEgvnHyvveLxVvaorCHPrEHJA.woff2", "https://fonts.gstatic.com/s/raleway/v18/1Ptxg8zYS_SKggPN4iEgvnHyvveLxVvaorCIPrE.woff2", "https://fonts.gstatic.com/s/raleway/v18/1Ptxg8zYS_SKggPN4iEgvnHyvveLxVvaorCMPrEHJA.woff2", "https://fonts.gstatic.com/s/unlock/v10/7Au-p_8ykD-cDl72LwLT.woff2", "https://use.fontawesome.com/releases/v5.8.2/css/all.css", "https://use.fontawesome.com/releases/v5.8.2/webfonts/fa-brands-400.eot", "https://use.fontawesome.com/releases/v5.8.2/webfonts/fa-brands-400.svg", "https://use.fontawesome.com/releases/v5.8.2/webfonts/fa-brands-400.ttf", "https://use.fontawesome.com/releases/v5.8.2/webfonts/fa-brands-400.woff", "https://use.fontawesome.com/releases/v5.8.2/webfonts/fa-brands-400.woff2", "https://use.fontawesome.com/releases/v5.8.2/webfonts/fa-regular-400.eot", "https://use.fontawesome.com/releases/v5.8.2/webfonts/fa-regular-400.svg", "https://use.fontawesome.com/releases/v5.8.2/webfonts/fa-regular-400.ttf", "https://use.fontawesome.com/releases/v5.8.2/webfonts/fa-regular-400.woff", "https://use.fontawesome.com/releases/v5.8.2/webfonts/fa-regular-400.woff2", "https://use.fontawesome.com/releases/v5.8.2/webfonts/fa-solid-900.eot", "https://use.fontawesome.com/releases/v5.8.2/webfonts/fa-solid-900.svg", "https://use.fontawesome.com/releases/v5.8.2/webfonts/fa-solid-900.ttf", "https://use.fontawesome.com/releases/v5.8.2/webfonts/fa-solid-900.woff", "https://use.fontawesome.com/releases/v5.8.2/webfonts/fa-solid-900.woff2" }; waitHandle.WaitOne(TimeSpan.FromSeconds(5)); CollectionAssert.AreEquivalent(expectedUrls, ((IVisualGridRunner)runner).CachedBlobsURLs.Keys); UserAgent userAgent = eyes.visualGridEyes_.userAgent_; EyesWebDriverTargetLocator switchTo = (EyesWebDriverTargetLocator)eyesDriver.SwitchTo(); FrameData domData = VisualGridEyes.CaptureDomSnapshot_( switchTo, userAgent, config, runner, (EyesWebDriver)eyesDriver, eyes.Logger); //DomAnalyzer domAnalyzer = new DomAnalyzer(runner, // domData, // eyes.visualGridEyes_.eyesConnector_, // userAgent, // eyes.visualGridEyes_.debugResourceWriter_); //IDictionary<string, RGridResource> resourceMap = domAnalyzer.Analyze(); //CollectionAssert.AreEquivalent(expectedUrls, resourceMap.Keys); //eyes.Check(Target.Window()); eyes.Close(); runner.GetAllTestResults(); } finally { eyes.AbortIfNotClosed(); driver.Close(); } }
public void TestVisualGridOptions() { // We want VG mode EyesRunner runner = new VisualGridRunner(10); ILogHandler logHandler = TestUtils.InitLogHandler(); runner.SetLogHandler(logHandler); Eyes eyes = new Eyes(runner); //eyes.visualGridEyes_.EyesConnectorFactory = new MockEyesConnectorFactory(); Configuration config = eyes.GetConfiguration(); config.AddBrowser(800, 600, BrowserType.CHROME); config.SetVisualGridOptions(new VisualGridOption("option1", "value1"), new VisualGridOption("option2", false)); config.SetBatch(TestDataProvider.BatchInfo); eyes.SetConfiguration(config); IWebDriver driver = SeleniumUtils.CreateChromeDriver(); driver.Url = "https://applitools.github.io/demo/TestPages/DynamicResolution/desktop.html"; try { IWebDriver eyesDriver; // First check - global + fluent config eyes.Logger.Verbose("starting first check"); MockEyesConnector mockEyesConnector = OpenEyesAndGetConnector_(eyes, config, driver, out eyesDriver); eyes.Logger.Verbose("calling eyes.Check"); eyes.Check(Target.Window().VisualGridOptions(new VisualGridOption("option3", "value3"), new VisualGridOption("option4", 5))); eyes.Logger.Verbose("calling eyes.Close"); eyes.Close(); var expected1 = new Dictionary <string, object>() { { "option1", "value1" }, { "option2", false }, { "option3", "value3" }, { "option4", 5 } }; eyes.Logger.Verbose("getting results..."); var actual1 = mockEyesConnector.LastRenderRequests[0].Options; eyes.Logger.Verbose("comparing results..."); CollectionAssert.AreEquivalent(expected1, actual1); eyes.Logger.Verbose("done first check"); // Second check - only global mockEyesConnector = OpenEyesAndGetConnector_(eyes, config, driver, out eyesDriver); eyes.CheckWindow(); eyes.Close(); var expected2 = new Dictionary <string, object>() { { "option1", "value1" }, { "option2", false } }; var actual2 = mockEyesConnector.LastRenderRequests[0].Options; CollectionAssert.AreEquivalent(expected2, actual2); // Third check - resetting mockEyesConnector = OpenEyesAndGetConnector_(eyes, config, driver, out eyesDriver); config = eyes.GetConfiguration(); config.SetVisualGridOptions(null); eyes.SetConfiguration(config); eyes.CheckWindow(); eyes.Close(); var actual3 = mockEyesConnector.LastRenderRequests[0].Options; Assert.IsNull(actual3); runner.GetAllTestResults(); } finally { eyes.AbortIfNotClosed(); driver.Close(); } }