public void TestMobileOnly()
        {
            VisualGridRunner runner = new VisualGridRunner(30);
            Eyes             eyes   = new Eyes(runner);

            eyes.SetLogHandler(TestUtils.InitLogHandler());

            Configuration sconf = new Configuration();

            sconf.SetTestName("Mobile Render Test");
            sconf.SetAppName("Visual Grid Render Test");
            sconf.SetBatch(TestDataProvider.BatchInfo);

            sconf.AddDeviceEmulation(DeviceName.Galaxy_S5);

            eyes.SetConfiguration(sconf);
            ChromeDriver driver = SeleniumUtils.CreateChromeDriver();

            eyes.Open(driver);
            driver.Url = "https://applitools.github.io/demo/TestPages/DynamicResolution/mobile.html";
            eyes.Check("Test Mobile Only", Target.Window().Fully());
            driver.Quit();
            eyes.Close();
            TestResultsSummary allResults = runner.GetAllTestResults();
        }
        public void TestCreateDomSnapshotCollectsCookiesWhenDisabledUsingFluentApi()
        {
            IWebDriver driver = SeleniumUtils.CreateChromeDriver();

            driver.Url = "http://applitools.github.io/demo/TestPages/CookiesTestPage/";
            Eyes             eyes   = Setup(driver);
            VisualGridRunner runner = (VisualGridRunner)eyes.runner_;

            try
            {
                Configuration config = eyes.GetConfiguration();
                config
                .SetAppName("test app").SetTestName("test name")
                .SetBatch(TestDataProvider.BatchInfo);
                eyes.SetConfiguration(config);
                EyesWebDriver eyesDriver            = (EyesWebDriver)eyes.Open(driver);
                EyesWebDriverTargetLocator switchTo = (EyesWebDriverTargetLocator)eyesDriver.SwitchTo();
                UserAgent userAgent    = UserAgent.ParseUserAgentString(eyesDriver.GetUserAgent());
                FrameData scriptResult = VisualGridEyes.CaptureDomSnapshot_(
                    switchTo, userAgent, config, Target.Window().UseCookies(false), runner, eyesDriver, runner.Logger);

                Assert.IsNull(scriptResult.Cookies);
                Assert.IsNull(scriptResult.Frames[0].Cookies);
                Assert.IsNull(scriptResult.Frames[0].Frames[0].Cookies);
            }
            finally
            {
                driver.Quit();
                eyes.AbortIfNotClosed();
                runner.StopServiceRunner();
            }
        }
        private void Run()
        {
            // Create a new webdriver
            IWebDriver webDriver = new ChromeDriver();

            // Navigate to the url we want to test
            webDriver.Url = "https://demo.applitools.com";

            // ⭐️ Note to see visual bugs, run the test using the above URL for the 1st run.
            //but then change the above URL to https://demo.applitools.com/index_v2.html (for the 2nd run)

            // Create a runner with concurrency of 10
            VisualGridRunner runner = new VisualGridRunner(10);

            // Create Eyes object with the runner, meaning it'll be a Visual Grid eyes.
            Eyes eyes = new Eyes(runner);

            // Create configuration object
            Configuration conf = new Configuration();



            //conf.SetApiKey("APPLITOOLS_API_KEY");    // Set the Applitools API KEY here or as an environment variable "APPLITOOLS_API_KEY"
            conf.SetTestName("C# VisualGrid demo")   // Set test name
            .SetAppName("Demo app");                 // Set app name

            // Add browsers with different viewports
            conf.AddBrowser(800, 600, BrowserType.CHROME);
            conf.AddBrowser(700, 500, BrowserType.FIREFOX);
            conf.AddBrowser(1200, 800, BrowserType.IE_10);
            conf.AddBrowser(1600, 1200, BrowserType.IE_11);
            conf.AddBrowser(1024, 768, BrowserType.EDGE);

            // Add iPhone 4 device emulation in Portrait mode
            conf.AddDeviceEmulation(DeviceName.iPhone_4, ScreenOrientation.Portrait);


            // Set the configuration object to eyes
            eyes.SetConfiguration(conf);

            // Call Open on eyes to initialize a test session
            eyes.Open(webDriver);

            // check the login page
            eyes.Check(Target.Window().Fully().WithName("Login page"));
            webDriver.FindElement(By.Id("log-in")).Click();

            // Check the app page
            eyes.Check(Target.Window().Fully().WithName("App page"));

            // Close the browser
            webDriver.Quit();

            eyes.CloseAsync();

            //Wait and collect all test results
            TestResultSummary allTestResults = runner.GetAllTestResults();

            System.Console.WriteLine(allTestResults);
        }
Beispiel #4
0
        public void TestVanguard()
        {
            VisualGridRunner runner = new VisualGridRunner(10);
            IWebDriver       driver = SeleniumUtils.CreateChromeDriver();
            Eyes             eyes   = InitEyes(driver, runner, "https://investor.vanguard.com/home/", 1000, 700, false);

            Thread.Sleep(2000);
            try
            {
                eyes.Check("Vanguard",
                           Target
                           .Window()
                           .Fully()
                           .Strict()
                           .SendDom(false)
                           .Layout(By.ClassName("vgc-feedbackLink"))
                           );
                eyes.CloseAsync();
                runner.GetAllTestResults();
            }
            finally
            {
                eyes.Abort();
                driver.Quit();
            }
        }
        public void Test()
        {
            IWebDriver driver = SeleniumUtils.CreateChromeDriver();

            driver.Url = "https://applitools.com/helloworld";

            BatchInfo        batch      = new BatchInfo("Visual Grid - Test bad webhook");
            ILogHandler      logHandler = TestUtils.InitLogHandler(nameof(TestVGWithBadWebhook));
            VisualGridRunner runner     = new VisualGridRunner(10, logHandler);
            Eyes             eyes       = new Eyes(runner);

            Configuration config = new Configuration();

            config.SetBatch(batch);
            config.SetAppName("Visual Grid Tests");
            config.SetTestName("Bad Webhook");
            config.SetViewportSize(new Applitools.Utils.Geometry.RectangleSize(800, 600));

            eyes.SetConfiguration(config);
            eyes.Open(driver);
            try
            {
                eyes.Check(Target.Window().Fully().BeforeRenderScreenshotHook("gibberish uncompilable java script"));
                driver.Quit();
                Assert.That(() =>
                {
                    eyes.Close();
                    runner.GetAllTestResults();
                }, Throws.Exception.With.InstanceOf <EyesException>().With.InnerException.With.Property("Message").StartsWith("Render Failed for DesktopBrowserInfo {ViewportSize={Width=800, Height=600}, BrowserType=CHROME} "));
            }
            finally
            {
                runner.StopServiceRunner();
            }
        }
        public void TestConcurrencyAmount()
        {
            VisualGridRunner runner = new VisualGridRunner();

            Assert.AreEqual(VisualGridRunner.DEFAULT_CONCURRENCY, runner.testConcurrency_.ActualConcurrency);
            Assert.AreEqual(VisualGridRunner.DEFAULT_CONCURRENCY, runner.testConcurrency_.UserConcurrency);
            Assert.IsTrue(runner.testConcurrency_.IsDefault);
            Assert.IsFalse(runner.testConcurrency_.IsLegacy);

            runner = new VisualGridRunner(10);
            Assert.AreEqual(50, runner.testConcurrency_.ActualConcurrency);
            Assert.AreEqual(10, runner.testConcurrency_.UserConcurrency);
            Assert.IsFalse(runner.testConcurrency_.IsDefault);
            Assert.IsTrue(runner.testConcurrency_.IsLegacy);


            runner = new VisualGridRunner(new RunnerOptions().TestConcurrency(5));
            Assert.AreEqual(5, runner.testConcurrency_.ActualConcurrency);
            Assert.AreEqual(5, runner.testConcurrency_.UserConcurrency);
            Assert.IsFalse(runner.testConcurrency_.IsDefault);
            Assert.IsFalse(runner.testConcurrency_.IsLegacy);

            runner = new VisualGridRunner(new RunnerOptions().TestConcurrency(5).TestConcurrency(7));
            Assert.AreEqual(7, runner.testConcurrency_.ActualConcurrency);
            Assert.AreEqual(7, runner.testConcurrency_.UserConcurrency);
            Assert.IsFalse(runner.testConcurrency_.IsDefault);
            Assert.IsFalse(runner.testConcurrency_.IsLegacy);
        }
Beispiel #7
0
        public void Test_VG_RCA_Fluent()
        {
            EyesRunner runner = new VisualGridRunner(10);
            Eyes       eyes   = new Eyes(runner);

            eyes.Batch = batch_;
            IWebDriver driver = SeleniumUtils.CreateChromeDriver();

            try
            {
                driver.Url = "https://applitools.github.io/demo/TestPages/VisualGridTestPage";

                driver.SwitchTo().Frame("iframe");
                WebDriverWait wait = new WebDriverWait(driver, TimeSpan.FromSeconds(30));
                wait.Until(ExpectedConditions.ElementIsVisible(By.CssSelector("#p2")));
                driver.SwitchTo().DefaultContent();

                eyes.Open(driver, "Test Visual Grid", "Test RCA Fluent");
                eyes.SendDom = false;
                eyes.Check(Target.Window().SendDom(true));
                eyes.Close();
                runner.GetAllTestResults();
            }
            finally
            {
                driver.Quit();
            }
        }
        public void TestConfig_MatchLevel_VG()
        {
            EyesRunner runner = new VisualGridRunner(10);
            Eyes       eyes   = new Eyes(runner);

            DoTestConfig_MatchLevel_(eyes);
        }
        public void TestConfig_ForceFullPageScreenshot_VG()
        {
            EyesRunner runner = new VisualGridRunner(10);
            Eyes       eyes   = new Eyes(runner);

            DoTestConfig_ForceFullPageScreenshot_(eyes);
        }
Beispiel #10
0
        public void IOSSimulatorUfgTest()
        {
            ILogHandler      logHandler = TestUtils.InitLogHandler();
            VisualGridRunner runner     = new VisualGridRunner(10, logHandler);
            Eyes             eyes       = new Eyes(runner);
            IWebDriver       driver     = SeleniumUtils.CreateChromeDriver();

            try
            {
                IConfiguration config = eyes.GetConfiguration();
                config.SaveDiffs = false;
                config.Batch     = TestDataProvider.BatchInfo;
                config.AddBrowser(new IosDeviceInfo(IosDeviceName.iPhone_XR, ScreenOrientation.Landscape));
                eyes.SetConfiguration(config);

                driver.Url = "http://applitools.github.io/demo";
                eyes.Open(driver, "Eyes SDK", "UFG Mobile Happy Flow", new Size(800, 600));
                eyes.CheckWindow();
                eyes.Close();
            }
            finally
            {
                eyes.AbortIfNotClosed();
                driver.Quit();
                runner.GetAllTestResults();
            }
        }
Beispiel #11
0
        public void TestPandalytics()
        {
            VisualGridRunner runner = new VisualGridRunner(10);
            IWebDriver       driver = SeleniumUtils.CreateChromeDriver();
            Eyes             eyes   = InitEyesWithLogger(runner, verbose: true, writeResources: true);

            //ConfigureSingleBrowser(eyes);
            ConfigureMultipleBrowsers(eyes);
            try
            {
                EyesWebDriver eyesWebDriver = (EyesWebDriver)OpenEyes(driver, "https://pandalytics-sandbox.instructure.com", eyes, 1000, 700);
                driver.FindElement(By.Id("pseudonym_session_unique_id")).SendKeys("*****@*****.**");
                driver.FindElement(By.Id("pseudonym_session_password")).SendKeys("password");
                driver.FindElement(By.ClassName("Button--login")).Click();

                eyes.Check("Dashboard page", Target.Window().Fully());

                driver.Url = "https://pandalytics-sandbox.instructure.com/courses/17/external_tools/63";

                Thread.Sleep(1000);
                eyes.Check("LTI tool", Target.Frame("tool_content").Fully());
                eyes.CloseAsync();
                runner.GetAllTestResults();
            }
            finally
            {
                eyes.Abort();
                driver.Quit();
            }
        }
        internal static void InitEyes(bool useVisualGrid, out IWebDriver driver, out EyesRunner runner, out Eyes eyes, [CallerMemberName] string testName = null)
        {
            driver = CreateChromeDriver();
            string      logPath;
            ILogHandler logHandler;

            if (useVisualGrid)
            {
                testName  += "_VG";
                logPath    = TestUtils.InitLogPath(testName);
                logHandler = TestUtils.InitLogHandler(testName, logPath);
                VisualGridRunner visualGridRunner = new VisualGridRunner(10, logHandler);
                if (!TestUtils.RUNS_ON_CI)
                {
                    visualGridRunner.DebugResourceWriter = new FileDebugResourceWriter(logPath);
                }
                runner = visualGridRunner;
            }
            else
            {
                logPath    = TestUtils.InitLogPath(testName);
                logHandler = TestUtils.InitLogHandler(testName, logPath);
                runner     = new ClassicRunner(logHandler);
            }
            eyes       = new Eyes(runner);
            eyes.Batch = TestDataProvider.BatchInfo;
        }
Beispiel #13
0
        public void TestAgilent()
        {
            IWebDriver driver = SeleniumUtils.CreateChromeDriver();

            try
            {
                List <string> URLs = GetUrls();
                int           ctr  = 0;
                foreach (string url in URLs)
                {
                    ctr++;
                    EyesRunner runner = new VisualGridRunner(10);
                    Eyes       eyes   = new Eyes(runner);

                    RunVisualTest(driver, eyes, url, appName, "Test url: " + url);
                    runner.GetAllTestResults(false);

                    runner = null;
                    eyes   = null;
                    GC.Collect();
                }
            }
            finally
            {
                driver.Quit();
            }
        }
Beispiel #14
0
        public void Task3()
        {
            VisualGridRunner runner = new VisualGridRunner(10);
            Eyes             eyes   = new Eyes(runner);

            try
            {
                SetUp(eyes);
                eyes.Open(_driver, "AppliFashion", "Task3", new Size(800, 600));
                _driver.Click(page.HomePage.ProductGridFilterIcon);
                _driver.SetValue(page.HomePage.SidebarGridFilterOption("Black"), "true");
                _driver.Click(page.HomePage.SidebarGridFilterFilterButton);
                _driver.Click(page.HomePage.ProductGridProductCard("Appli Air x Night"));
                Assert.IsTrue(page.ProductPage.IsAt());
                Assert.IsTrue(_driver.Displayed(page.ProductPage.ProductImage));
                eyes.Check(Target.Window().Fully().WithName("Product Details test"));
            }
            catch
            {
                eyes.AbortAsync();
            }
            finally
            {
                TearDown(_driver, runner);
            }
        }
Beispiel #15
0
        public void TestTimeout2()
        {
            EyesSeleniumUtils.CAPTURE_TIMEOUT = TimeSpan.FromTicks(1);
            IWebDriver       driver     = SeleniumUtils.CreateChromeDriver();
            ILogHandler      logHandler = TestUtils.InitLogHandler();
            VisualGridRunner runner     = new VisualGridRunner(10, logHandler);

            try
            {
                Eyes eyes = new Eyes(runner);
                driver.Url = "https://applitools.com/helloworld";
                eyes.Batch = TestDataProvider.BatchInfo;

                Configuration configuration = eyes.GetConfiguration();
                configuration.SetAppName("Test Timeouts").SetTestName("Test Timeouts").SetBatch(TestDataProvider.BatchInfo);
                configuration.AddBrowser(800, 600, BrowserType.CHROME);
                configuration.AddDeviceEmulation(DeviceName.Laptop_with_HiDPI_screen);
                eyes.SetConfiguration(configuration);
                eyes.Open(driver);
                Assert.That(() =>
                {
                    eyes.Check(Target.Window().WithName("Test"));
                    eyes.Close();
                    runner.GetAllTestResults();
                }, Throws.Exception.With.InstanceOf <EyesException>().With.InnerException.With.InstanceOf <EyesException>().With.Property("Message").EqualTo("DOM capture timeout."));
            }
            finally
            {
                driver.Quit();
                runner.StopServiceRunner();
            }
        }
Beispiel #16
0
        public void TestFullAgentId_VG_Match_Selenium()
        {
            string           vgAgentId;
            string           seleniumAgentId;
            VisualGridRunner vgRunner = new VisualGridRunner(10, TestUtils.InitLogHandler());

            try
            {
                Eyes eyes = new Eyes(vgRunner);
                vgAgentId = eyes.FullAgentId;
            }
            finally
            {
                vgRunner.StopServiceRunner();
            }

            ClassicRunner cRunner = new ClassicRunner();
            {
                Eyes eyes = new Eyes(cRunner);
                seleniumAgentId = eyes.FullAgentId;
            }
            string vgVersion  = vgAgentId.Split('/')[1];
            string selVersion = seleniumAgentId.Split('/')[1];

            Assert.AreEqual(vgVersion, selVersion);
        }
Beispiel #17
0
        public void TestRenderSpecialCharacters()
        {
            VisualGridRunner runner = new VisualGridRunner(30);
            Eyes             eyes   = new Eyes(runner);

            eyes.SetLogHandler(TestUtils.InitLogHandler());

            Configuration sconf = new Configuration();

            sconf.SetTestName("Special Characters");
            sconf.SetAppName("Special Characters Test");

            sconf.AddBrowser(800, 600, BrowserType.CHROME);
            sconf.SetBatch(TestDataProvider.BatchInfo);

            eyes.SetConfiguration(sconf);
            ChromeDriver driver = SeleniumUtils.CreateChromeDriver();

            eyes.Open(driver);
            driver.Url = "https://applitools.github.io/demo/TestPages/SpecialCharacters/index.html";
            eyes.Check("Test Special Characters", Target.Window().Fully());
            driver.Quit();
            eyes.Close();
            TestResultsSummary allResults = runner.GetAllTestResults();
        }
Beispiel #18
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 TestConcurrencyLogMessage()
        {
            VisualGridRunner runner = new VisualGridRunner();

            CollectionAssert.AreEquivalent(
                new Dictionary <string, object>
            {
                { "type", "runnerStarted" },
                { "defaultConcurrency", VisualGridRunner.DEFAULT_CONCURRENCY }
            },
                (IDictionary)runner.GetConcurrencyLog());

            runner = new VisualGridRunner(10);
            CollectionAssert.AreEquivalent(
                new Dictionary <string, object>
            {
                { "type", "runnerStarted" },
                { "concurrency", 10 }
            },
                (IDictionary)runner.GetConcurrencyLog());

            runner = new VisualGridRunner(new RunnerOptions().TestConcurrency(10));
            CollectionAssert.AreEquivalent(
                new Dictionary <string, object>
            {
                { "type", "runnerStarted" },
                { "testConcurrency", 10 }
            },
                (IDictionary)runner.GetConcurrencyLog());

            Assert.IsNull(runner.GetConcurrencyLog());
        }
        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);
        }
Beispiel #21
0
        public void TestWebsiteThatRequireScrolling(string website, string name)
        {
            VisualGridRunner runner = new VisualGridRunner(10);
            IWebDriver       driver = SeleniumUtils.CreateChromeDriver();
            Eyes             eyes   = InitEyesWithLogger(runner, writeResources: true, verbose: true, testMethod: name);

            ConfigureMultipleBrowsers(eyes);

            try
            {
                EyesWebDriver        eyesWebDriver = (EyesWebDriver)OpenEyes(driver, website, eyes, 1000, 700, name);;
                EyesRemoteWebElement html          = (EyesRemoteWebElement)eyesWebDriver.FindElement(By.TagName("html"));
                eyesWebDriver.ExecuteAsyncScript(@"var currScrollPosition = 0;
                    let cb = arguments[arguments.length - 1]
                    var interval = setInterval(function() {
                    let scrollPosition = document.documentElement.scrollTop;
                    currScrollPosition += 300;
                    window.scrollTo(0, currScrollPosition);
                    if (scrollPosition === document.documentElement.scrollTop)
                    {
                        clearInterval(interval);
                        window.scrollTo(0, 0);
                        cb()
                    }
                    }, 100); ");
                eyes.Check(name, Target.Window().Fully());
                eyes.CloseAsync();
                runner.GetAllTestResults();
            }
            finally
            {
                eyes.Abort();
                driver.Quit();
            }
        }
        public void TestResetContent()
        {
            Configuration config = new Configuration();

            config.AddBrowser(new IosDeviceInfo(IosDeviceName.iPhone_7));
            ConfigurationProvider configurationProvider = new ConfigurationProvider(config);
            VisualGridRunner      runner = new VisualGridRunner(new RunnerOptions().TestConcurrency(3));
            VisualGridEyes        eyes   = new VisualGridEyes(configurationProvider, runner);

            eyes.SetLogHandler(TestUtils.InitLogHandler());

            IWebDriver driver = SeleniumUtils.CreateChromeDriver();

            driver.Url = "http://applitools.github.io/demo";
            try
            {
                eyes.Open(driver, "Eyes SDK", "UFG Runner Concurrency", new Size(800, 800));
                eyes.Check(Target.Window().Fully());
                eyes.CloseAsync(true);
            }
            finally
            {
                eyes.AbortAsync();
                driver.Quit();
                runner.GetAllTestResults(false);
            }

            foreach (ResourceFuture resourceFuture in ((IVisualGridRunner)runner).CachedResources.Values)
            {
                RGridResource resource = resourceFuture.GetResource();
                Assert.IsNotNull(resource);
                Assert.IsNull(resource.Content);
            }
        }
        public void TestRetryWhenServerConcurrencyLimitReached()
        {
            Configuration config = new Configuration();

            config.AddBrowser(new IosDeviceInfo(IosDeviceName.iPhone_7));

            ConfigurationProvider configurationProvider = new ConfigurationProvider(config);
            VisualGridRunner      runner = new VisualGridRunner(new RunnerOptions().TestConcurrency(3));
            VisualGridEyes        eyes   = new VisualGridEyes(configurationProvider, runner);

            eyes.SetLogHandler(TestUtils.InitLogHandler());

            int  counter            = 0;
            bool wasConcurrencyFull = false;

            eyes.EyesConnectorFactory = new MockEyesConnectorFactory()
            {
                Events = new Events()
                {
                    BeforeStartSession = () =>
                    {
                        if (Interlocked.Increment(ref counter) < 4)
                        {
                            RunningSession newSession = new RunningSession();
                            newSession.ConcurrencyFull = true;
                            return(newSession);
                        }
                        return(null);
                    }
                }
            };

            eyes.AfterServerConcurrencyLimitReachedQueried += (concurrecnyReached) =>
            {
                if (concurrecnyReached)
                {
                    wasConcurrencyFull = true;
                }
            };

            IWebDriver driver = SeleniumUtils.CreateChromeDriver();

            driver.Url = "http://applitools.github.io/demo";
            try
            {
                eyes.Open(driver, "Eyes SDK", "UFG Runner Concurrency", new Size(800, 800));
                eyes.Check(Target.Window().Fully());
                eyes.CloseAsync(true);
            }
            finally
            {
                eyes.AbortAsync();
                driver.Quit();
                runner.GetAllTestResults(false);
            }

            Assert.IsTrue(wasConcurrencyFull);
            Assert.IsFalse(((IVisualGridEyes)eyes).IsServerConcurrencyLimitReached());
            Assert.AreEqual(4, counter);
        }
Beispiel #24
0
        public void Initialize()
        {
            //Initialize the Runner for your test.
            runner = new VisualGridRunner(10);

            // Initialize the eyes SDK (IMPORTANT: make sure your API key is set in the APPLITOOLS_API_KEY env variable).
            _eyes = new Eyes(runner);


            // Initialize eyes Configuration
            config = new Configuration();
            config.SetApiKey("TlTMI102RD5Kl0PGlP1SLRTb6x5Idiomwl5YuF79ibDBs110");
            config.SetBatch(new BatchInfo("UFG Hackathon"));
            // Add browsers with different viewports
            config.AddBrowser(1200, 700, BrowserType.CHROME);
            config.AddBrowser(1200, 700, BrowserType.FIREFOX);
            config.AddBrowser(1200, 700, BrowserType.EDGE_CHROMIUM);
            config.AddBrowser(768, 700, BrowserType.CHROME);
            config.AddBrowser(768, 700, BrowserType.FIREFOX);
            config.AddBrowser(768, 700, BrowserType.EDGE_CHROMIUM);

            // Add mobile emulation devices in Portrait mode
            config.AddDeviceEmulation(DeviceName.iPhone_X, ScreenOrientation.Portrait);
            config.AddDeviceEmulation(DeviceName.Pixel_2, ScreenOrientation.Portrait);

            // Set the configuration object to eyes
            _eyes.SetConfiguration(config);
        }
Beispiel #25
0
        public void Test_VG_RCA_Config()
        {
            ILogHandler      logHandler = TestUtils.InitLogHandler();
            VisualGridRunner runner     = new VisualGridRunner(10, logHandler);
            Eyes             eyes       = new Eyes(runner);

            eyes.Batch = batch_;
            IWebDriver driver = SeleniumUtils.CreateChromeDriver();

            try
            {
                driver.Url = "https://applitools.github.io/demo/TestPages/VisualGridTestPage";
                driver.SwitchTo().Frame("iframe");
                WebDriverWait wait = new WebDriverWait(driver, TimeSpan.FromSeconds(30));
                wait.Until(ExpectedConditions.ElementIsVisible(By.CssSelector("svg")));
                driver.SwitchTo().ParentFrame();
                eyes.Open(driver, "Test Visual Grid", "Test RCA Config");
                eyes.SendDom = true;
                eyes.Check(Target.Window());
                eyes.Close();
                runner.GetAllTestResults();
            }
            finally
            {
                driver.Quit();
                eyes.AbortIfNotClosed();
                runner.StopServiceRunner();
            }
        }
 public TestIEyesVG(string fixtureName) : base(fixtureName)
 {
     runner_ = new VisualGridRunner(40, LogHandler);
     logger_ = runner_.Logger;
     logger_.Log("enter");
     runner_.ServerUrl = SERVER_URL;
     runner_.ApiKey    = API_KEY;
 }
Beispiel #27
0
        private static void TearDown(IWebDriver webDriver, VisualGridRunner runner)
        {
            // Close the browser
            webDriver.Quit();

            TestResultsSummary allTestResults = runner.GetAllTestResults();

            System.Console.WriteLine(allTestResults);
        }
Beispiel #28
0
 public void OneTimeSetup()
 {
     //IDictionary envVars = Environment.GetEnvironmentVariables();
     //foreach (object envKey in envVars.Keys)
     //    TestContext.Progress.WriteLine($"{envKey} = {envVars[envKey]}");
     TestContext.Progress.WriteLine($"{DateTimeOffset.Now:yyyy'-'MM'-'dd HH':'mm':'ss} - URL: {url} ; browsers: {browsers} ; concurrency: {concurrency} ; steps: {steps}");
     runner = new VisualGridRunner(concurrency, logHandler);
     timer.Start();
 }
Beispiel #29
0
        private Eyes InitEyes_(string testName, ILogHandler logHandler, bool?forceFullPageScreenshot = null)
        {
            EyesRunner        runner             = null;
            string            testNameAsFilename = TestUtils.SanitizeForFilename(TestContext.CurrentContext.Test.FullName);
            string            expectedVGOutput   = null;
            WebDriverProvider webDriverProvider  = new WebDriverProvider();

            if (useVisualGrid_)
            {
                if (RUNS_ON_CI || USE_MOCK_VG)
                {
                    //eyes.Logger.Log("using VG mock eyes connector");
                    Assembly thisAssembly             = Assembly.GetCallingAssembly();
                    Stream   expectedOutputJsonStream = thisAssembly.GetManifestResourceStream("Test.Eyes.Selenium.DotNet.Resources.VGTests." + testNameAsFilename + ".json");
                    if (expectedOutputJsonStream != null)
                    {
                        using (StreamReader reader = new StreamReader(expectedOutputJsonStream))
                        {
                            expectedVGOutput = reader.ReadToEnd();
                        }
                        runner = new VisualGridRunner(10, null, new MockServerConnectorFactory(webDriverProvider), logHandler);
                    }
                }
            }

            runner = runner ?? (useVisualGrid_ ? (EyesRunner) new VisualGridRunner(10, logHandler) : new ClassicRunner(logHandler));

            Eyes eyes = new Eyes(runner);

            TestUtils.SetupDebugScreenshotProvider(eyes, testName);
            SpecificTestContextRequirements testContextReqs = new SpecificTestContextRequirements(eyes, testName);

            testDataByTestId_.Add(TestContext.CurrentContext.Test.ID, testContextReqs);
            testContextReqs.TestNameAsFilename = testNameAsFilename;
            testContextReqs.ExpectedVGOutput   = expectedVGOutput;
            testContextReqs.WebDriverProvider  = webDriverProvider;

            string serverUrl = Environment.GetEnvironmentVariable("APPLITOOLS_SERVER_URL");

            if (!string.IsNullOrEmpty(serverUrl))
            {
                eyes.ServerUrl = serverUrl;
            }

            if (forceFullPageScreenshot != null)
            {
                eyes.ForceFullPageScreenshot = forceFullPageScreenshot.Value;
            }

            eyes.HideScrollbars = true;
            eyes.StitchMode     = stitchMode_;
            eyes.SaveNewTests   = false;
            eyes.Batch          = TestDataProvider.BatchInfo;

            return(eyes);
        }
        private VisualGridRunner CreateRenderingManager(string server1, string key1, bool isDisabled1)
        {
            VisualGridRunner renderingManager = new VisualGridRunner(3);

            renderingManager.SetLogHandler(new StdoutLogHandler(true));
            renderingManager.Logger.Log("enter");
            renderingManager.ServerUrl  = server1;
            renderingManager.ApiKey     = key1;
            renderingManager.IsDisabled = isDisabled1;
            return(renderingManager);
        }