Ejemplo n.º 1
0
        /// <summary>
        /// Performs the playback of actions in this module.
        /// </summary>
        /// <remarks>You should not call this method directly, instead pass the module
        /// instance to the <see cref="TestModuleRunner.Run(ITestModule)"/> method
        /// that will in turn invoke this method.</remarks>
        void ITestModule.Run()
        {
            if (conf.Length > 0)
            {
                // Create endpoint management factory
                var fac = new RemoteEndpointFactory();
                var ep  = fac.CreateTransientWebDriverEndpoint(new WebDriverEndpointInfo("tempEp", epUrl));

                var    values = conf.Split(',');
                string epConf = String.Format(@"{{""browserName"": ""{0}"", ""Version"": ""{1}"", ""video"":true}}", values[0].Trim(), values[2].Trim());

                Report.Info(epConf);

                var cfg = WebDriverConfiguration.FromJson(epConf);
                cfg.Name        = String.Format("tmpConf_{0}_{1}_{2}", values[0].Trim(), values[1].Trim(), values[2].Trim());
                cfg.Description = "";

                ep.ActivateConfiguration(cfg);

                ep.ConnectAsync()
                .ContinueWith(_ => ep.MakeCurrentHostAsync())
                .Wait();
            }
            else
            {
                Report.Info("Not creating endpoint -- no config provided!");
            }
        }
Ejemplo n.º 2
0
        public void BuilderJsonConfigStringProducesCorrectSerialisation(
            Browser browser,
            WindowSize windowSize,
            bool headless,
            bool isLocal,
            string gridUri,
            PlatformType platformType)
        {
            // Arrange
            var webDriverConfigurationBuilder = WebDriverConfigurationBuilder.Start()
                                                .WithBrowser(browser)
                                                .WithHeadless(headless)
                                                .WithWindowSize(windowSize)
                                                .WithIsLocal(isLocal)
                                                .WithGridUri(new Uri(gridUri))
                                                .WithPlatformType(platformType);
            WebDriverConfiguration expectedConfig = webDriverConfigurationBuilder.Build();
            string requestedJson = expectedConfig.SerializeToJson();


            string jsonConfigString = webDriverConfigurationBuilder.GetJsonConfigString();

            // Act
            WebDriverConfiguration returnedConfig             = WebDriverConfiguration.DeserializeFromJson(requestedJson);
            WebDriverConfiguration configFromJsonConfigString = WebDriverConfiguration.DeserializeFromJson(jsonConfigString);

            // Assert
            configFromJsonConfigString.Should().BeEquivalentTo(returnedConfig);
        }
        private WebDriverListener GetLocalWebDriver(WebDriverConfiguration driverConfig, L logger)
        {
            switch (driverConfig.BrowserName)
            {
            case Browser.Chrome:
                new DriverManager().SetUpDriver(new ChromeConfig());
                var chromeDriver = new ChromeDriver(WebDriverSettings.ChromeOptions(driverConfig));
                return(new WebDriverListener(chromeDriver, logger));

            case Browser.Firefox:
                new DriverManager().SetUpDriver(new FirefoxConfig());
                var firefoxDriver = new FirefoxDriver(WebDriverSettings.FirefoxOptions(driverConfig));
                return(new WebDriverListener(firefoxDriver, logger));

            case Browser.InternetExplorer:
                new DriverManager().SetUpDriver(new InternetExplorerConfig());
                var ieDriver = new InternetExplorerDriver(WebDriverSettings.InternetExplorerOptions());
                return(new WebDriverListener(ieDriver, logger));

            case Browser.Edge:
                new DriverManager().SetUpDriver(new EdgeConfig());
                var edgeDriver = new EdgeDriver(WebDriverSettings.EdgeOptions());
                return(new WebDriverListener(edgeDriver, logger));

            default:
                throw new ArgumentOutOfRangeException(nameof(Configuration.WebDriver.BrowserName),
                                                      Configuration.WebDriver.BrowserName,
                                                      null);
            }
        }
        private WebDriverListener GetRemoteDriver(WebDriverConfiguration driverConfig, L logger)
        {
            switch (driverConfig.BrowserName)
            {
            case Browser.Chrome:
                return(new WebDriverListener(new RemoteWebDriver(new Uri(driverConfig.GridUrl),
                                                                 WebDriverSettings.ChromeOptionsForRemote(driverConfig)), logger));

            case Browser.Firefox:
                return(new WebDriverListener(new RemoteWebDriver(new Uri(driverConfig.GridUrl),
                                                                 WebDriverSettings.FirefoxOptions(driverConfig)), logger));

            case Browser.InternetExplorer:
                return(new WebDriverListener(new RemoteWebDriver(new Uri(driverConfig.GridUrl),
                                                                 WebDriverSettings.InternetExplorerOptions()), logger));

            case Browser.Edge:
                return(new WebDriverListener(new RemoteWebDriver(new Uri(driverConfig.GridUrl),
                                                                 WebDriverSettings.EdgeOptions()), logger));

            default:
                throw new ArgumentOutOfRangeException(nameof(Configuration.WebDriver.BrowserName),
                                                      Configuration.WebDriver.BrowserName,
                                                      null);
            }
        }
        public static FirefoxOptions FirefoxOptions(WebDriverConfiguration config)
        {
            var options = new FirefoxOptions {
                AcceptInsecureCertificates = true
            };

            options.SetPreference("intl.accept_languages", config.BrowserLanguage);

            return(options);
        }
Ejemplo n.º 6
0
        public ParserService(IDatabase database,
                             ApplicationConfiguration applicationConfiguration, WebDriverConfiguration parserConfiguration)
        {
            _database = database;

            _applicationConfiguration = applicationConfiguration;
            _parserConfiguration      = parserConfiguration;

            _triggerTimer          = new Timer(applicationConfiguration.RepeatEvery.TotalMilliseconds);
            _triggerTimer.Elapsed += (_, __) => Trigger();
        }
Ejemplo n.º 7
0
        public void ConfigurationCorrectlySerialisesAndDeserialises(int width, int height)
        {
            // Arrange
            WebDriverConfiguration testConfig = WebDriverConfigurationBuilder.Start().WithCustomSize(new Size(width, height)).Build();

            // Act
            string serialisedConfig = testConfig.SerializeToJson();
            WebDriverConfiguration deserialisedConfig = WebDriverConfiguration.DeserializeFromJson(serialisedConfig);

            // Assert
            deserialisedConfig.Should().BeEquivalentTo(testConfig);
        }
Ejemplo n.º 8
0
        public void CustomSizeBrowserIsOfRequestedSize(WindowSize windowSize, int expectedWidth, int expectedHeight)
        {
            WebDriverConfiguration configuration = WebDriverConfigurationBuilder.Start()
                                                   .WithBrowser(Browser.Firefox)
                                                   .RunHeadless()
                                                   .WithCustomSize(new Size(expectedWidth, expectedHeight))
                                                   .Build();

            TestContext.WriteLine($"Configuration = {JsonConvert.SerializeObject(configuration, sizeJsonConverter)}");
            Driver = WebDriverFactory.GetWebDriver(configuration);
            Assertions.AssertThatBrowserWindowSizeIsCorrect(Driver, expectedWidth, expectedHeight);
        }
        public static ChromeOptions ChromeOptionsForRemote(WebDriverConfiguration config)
        {
            var options = new ChromeOptions();

            options.AddAdditionalCapability("enableVNC", true, true);
            if (config.Video)
            {
                options.AddAdditionalCapability("enableVideo", true, true);
            }

            return(options);
        }
Ejemplo n.º 10
0
        protected virtual void Dispose(bool disposing)
        {
            if (!_disposedStatus)
            {
                if (disposing)
                {
                    WebDriverConfiguration?.Dispose();
                }
            }

            _disposedStatus = true;
        }
Ejemplo n.º 11
0
        public void CustomSizeConfigurationDeSerialisesWithCorrectWidthAndHeight(int width, int height)
        {
            // Arrange
            var webDriverConfigurationBuilder     = WebDriverConfigurationBuilder.Start().WithCustomSize(new Size(width, height));
            WebDriverConfiguration expectedConfig = webDriverConfigurationBuilder.Build();
            string requestedJson = expectedConfig.SerializeToJson();

            // Act
            WebDriverConfiguration returnedConfig = WebDriverConfiguration.DeserializeFromJson(requestedJson);

            // Assert
            returnedConfig.Should().BeEquivalentTo(expectedConfig);
        }
Ejemplo n.º 12
0
        /// <summary>
        /// Generate the WebDriverConfiguration from the current state of the builder.
        /// </summary>
        /// <returns></returns>
        public WebDriverConfiguration Build()
        {
            WebDriverConfiguration webDriverConfiguration = new WebDriverConfiguration(
                this.browser,
                this.gridUri,
                this.headless,
                this.isLocal,
                this.platformType,
                this.windowSize,
                this.windowDefinedSize);

            Logger.Debug($"Configuration built: {webDriverConfiguration}");
            return(webDriverConfiguration);
        }
        public static ChromeOptions ChromeOptions(WebDriverConfiguration config)
        {
            var options = new ChromeOptions();

            options.AddAdditionalCapability("useAutomationExtension", false);
            options.AddExcludedArgument("enable-automation");
            options.AddArgument("--disable-save-password-bubble");
            options.AddArgument("ignore-certificate-errors");
            options.AddArgument("start-maximized");
            options.AddArgument($"--lang={config.BrowserLanguage}");
            options.AddUserProfilePreference("intl.accept_languages", config.BrowserLanguage);

            return(options);
        }
Ejemplo n.º 14
0
        public static FirefoxOptions FirefoxOptions(WebDriverConfiguration config)
        {
            var options = new FirefoxOptions {
                AcceptInsecureCertificates = true
            };

            options.SetPreference("intl.accept_languages", config.BrowserLanguage);

            if (config.Headless)
            {
                options.AddArgument("-headless");
            }

            return(options);
        }
Ejemplo n.º 15
0
        private void CompareJsonEquivalence(WebDriverConfigurationBuilder webDriverConfigurationBuilder)
        {
            // Arrange
            string formattedString = webDriverConfigurationBuilder.GetJsonConfigString();
            WebDriverConfiguration expectedConfig = webDriverConfigurationBuilder.Build();
            string requestedJson = expectedConfig.SerializeToJson();

            // Act
            WebDriverConfiguration returnedConfig            = WebDriverConfiguration.DeserializeFromJson(requestedJson);
            WebDriverConfiguration configFromFormattedString =
                WebDriverConfiguration.DeserializeFromJson(formattedString);

            // Assert
            returnedConfig.Should().BeEquivalentTo(configFromFormattedString);
        }
Ejemplo n.º 16
0
        public void CustomSizeConfigurationSerialisesWithCorrectWidthAndHeight(int width, int height)
        {
            // Arrange
            WebDriverConfiguration testedConfig = WebDriverConfigurationBuilder.Start().WithCustomSize(new Size(width, height)).Build();

            // Act
            string actualJson = testedConfig.SerializeToJson();

            //Assert
            using (new AssertionScope())
            {
                actualJson.Should().Contain("\"PlatformType\":\"Windows\"");
                actualJson.Should().Contain("\"WindowSize\":\"Defined\"");
                actualJson.Should().Contain($"\"WindowDefinedSize\":{{\"width\":{width},\"height\":{height}}}");
                actualJson.Should().Contain("\"GridUri\":\"http://localhost:4444\"");
            }
        }
 public WebDriverListener GetWebDriver(WebDriverConfiguration driverConfig, L logger)
 {
     return(driverConfig.BrowserType == BrowserType.Local
         ? GetLocalWebDriver(driverConfig, logger)
         : GetRemoteDriver(driverConfig, logger));
 }