public void CreateFactoryFromConfig_can_pass_non_option_parameters_through(IConfigurationReader configReader, IReadsEnvironmentVariables env, [NoAutoProperties] WebDriverFactoryConfigurationSection config, IDictionary <string, object> caps, IGetsBrowserFlags flagsProvider, string scenarioName) { // Arrange var envVars = new Dictionary <string, string>(); Mock.Get(configReader) .Setup(x => x.ReadSection <WebDriverFactoryConfigurationSection>()) .Returns(config); Mock.Get(env) .Setup(x => x.GetEnvironmentVariables()) .Returns(envVars); config.WebDriverFactoryAssemblyQualifiedType = typeof(DummyBrowserFactory).AssemblyQualifiedName; var sut = new WebDriverFactorySource(configurationReader: configReader, environmentReader: env); // Act var factory = sut.CreateFactoryFromConfig(); var result = GetProxiedFactory(factory); factory.CreateWebDriver(caps, flagsProvider, scenarioName); // Assert Assert.That(result.CapturedName, Is.EqualTo(scenarioName)); Assert.That(result.CapturedCapabilities, Is.SameAs(caps)); Assert.That(result.CapturedFlagsProvider, Is.SameAs(flagsProvider)); }
/// <summary> /// Creates a new remote web driver proxy wrapping the given driver, then returns that proxy. /// </summary> /// <remarks> /// <para> /// The wrapping of a web driver with a proxy allows us to extend its functionality. /// </para> /// </remarks> /// <returns>The proxied web driver.</returns> /// <param name="driver">A remote web driver.</param> /// <param name="flagsProvider">A service which provides browser flags.</param> /// <param name="desiredCapabilities">A collection of the desired capabilities for the web driver.</param> protected virtual IWebDriver WrapWithProxy(RemoteWebDriver driver, IGetsBrowserFlags flagsProvider, ICapabilities desiredCapabilities = null) { var proxyFactory = GetProxyFactory(); return(proxyFactory.WrapWithProxy(driver, flagsProvider, desiredCapabilities)); }
/// <summary> /// Gets the browser flags from a service. /// </summary> /// <returns>The flags.</returns> /// <param name="driver">The web driver.</param> /// <param name="flagsProvider">A flags provider service.</param> /// <param name="desiredCapabilities">The desired capabilities.</param> protected virtual IReadOnlyCollection <string> GetFlags(IHasCapabilities driver, IGetsBrowserFlags flagsProvider, ICapabilities desiredCapabilities) { var identification = identificationFactory.GetIdentification(driver, desiredCapabilities); return(flagsProvider?.GetFlags(identification)); }
/// <summary> /// Creates and returns a web driver instance. /// </summary> /// <returns>The web driver.</returns> /// <param name="requestedCapabilities">A collection of requested web driver capabilities.</param> /// <param name="options">A factory options instance.</param> /// <param name="flagsProvider">A service which derives a collection of browser flags for the created web driver.</param> /// <param name="scenarioName">The name for the current test scenario.</param> public override IWebDriver CreateWebDriver(IDictionary <string, object> requestedCapabilities, LocalChromeOptions options, IGetsBrowserFlags flagsProvider, string scenarioName) { var webDriver = GetWebDriver(requestedCapabilities, options); return(WrapWithProxy(webDriver, flagsProvider)); }
/// <summary> /// Creates and returns a web driver instance. /// </summary> /// <returns>The web driver.</returns> /// <param name="requestedCapabilities">A collection of requested web driver capabilities.</param> /// <param name="options">A factory options instance.</param> /// <param name="flagsProvider">A service which derives a collection of browser flags for the created web driver.</param> /// <param name="scenarioName">The name for the current test scenario.</param> public override IWebDriver CreateWebDriver(IDictionary <string, object> requestedCapabilities, RemoteDriverOptions options, IGetsBrowserFlags flagsProvider, string scenarioName) { var desiredCapabilities = GetDesiredCapabilities(requestedCapabilities, options); var webDriver = GetWebDriver(desiredCapabilities, options); return(WrapWithProxy(webDriver, flagsProvider, desiredCapabilities)); }
public void CreateProvider_passes_flags_provider_to_proxied_factory([Frozen] ICreatesWebDriverFromOptions proxied, OptionsCachingDriverFactoryProxy sut, IGetsBrowserFlags flagsProvider) { // Act sut.CreateWebDriver(flagsProvider: flagsProvider); // Assert Mock.Get(proxied) .Verify(x => x.CreateWebDriver(It.IsAny <object>(), It.IsAny <IDictionary <string, object> >(), flagsProvider, It.IsAny <string>()), Times.Once); }
public override IWebDriver CreateWebDriver(IDictionary <string, object> requestedCapabilities, DummyBrowserOptions options, IGetsBrowserFlags flagsProvider, string scenarioName) { CapturedCapabilities = requestedCapabilities; CapturedOptions = options; CapturedFlagsProvider = flagsProvider; CapturedName = scenarioName; return(Mock.Of <IWebDriver>()); }
/// <summary> /// Wraps the given web driver in a proxy and returns that proxy. /// </summary> /// <returns>The web driver proxy.</returns> /// <param name="driver">The web driver to wrap.</param> /// <param name="flagsProvider">A service which provides web browser flags.</param> /// <param name="desiredCapabilities">A collection of the originally-requested browser capabilities.</param> public IWebDriver WrapWithProxy(RemoteWebDriver driver, IGetsBrowserFlags flagsProvider, ICapabilities desiredCapabilities) { if (driver == null) { throw new ArgumentNullException(nameof(driver)); } var flags = GetFlags(driver, flagsProvider, desiredCapabilities); return(GetProxy(driver, flags, desiredCapabilities?.Version)); }
/// <summary> /// Creates and returns a web driver instance. /// </summary> /// <returns>The web driver.</returns> /// <param name="requestedCapabilities">A collection of requested web driver capabilities.</param> /// <param name="options">A factory options instance.</param> /// <param name="flagsProvider">A service which derives a collection of browser flags for the created web driver.</param> /// <param name="scenarioName">The name for the current test scenario.</param> public override IWebDriver CreateWebDriver(IDictionary <string, object> requestedCapabilities, RemoteDriverOptions options, IGetsBrowserFlags flagsProvider, string scenarioName) { var requestedCaps = requestedCapabilities ?? new Dictionary <string, object>(); if (scenarioName != null) { requestedCaps[ScenarioNameCapabilityName] = scenarioName; } return(base.CreateWebDriver(requestedCaps, options, flagsProvider, scenarioName)); }
public void CreateFactoryFromConfig_can_derive_and_cache_options_correctly(IConfigurationReader configReader, IReadsEnvironmentVariables env, [NoAutoProperties] WebDriverFactoryConfigurationSection config, IDictionary <string, object> caps, IGetsBrowserFlags flagsProvider, string scenarioName) { // Arrange var envVars = new Dictionary <string, string>(); Mock.Get(configReader) .Setup(x => x.ReadSection <WebDriverFactoryConfigurationSection>()) .Returns(config); Mock.Get(env) .Setup(x => x.GetEnvironmentVariables()) .Returns(envVars); envVars.Add("Env_AnotherDummyNumber", "20"); envVars.Add("Env_DummyString", "Ohai"); envVars.Add("Invalid_DummyNumber", "8"); config.WebDriverFactoryAssemblyQualifiedType = typeof(DummyBrowserFactory).AssemblyQualifiedName; config.EnvironmentVariableSupportEnabled = true; config.EnvironmentVariablePrefix = "Env_"; config.FactoryOptions.Add(new FactoryOption { Name = "DummyString", Value = "Should be overridden" }); config.FactoryOptions.Add(new FactoryOption { Name = "DummyNumber", Value = "5" }); var sut = new WebDriverFactorySource(configurationReader: configReader, environmentReader: env); // Act var factory = sut.CreateFactoryFromConfig(); var result = GetProxiedFactory(factory); factory.CreateWebDriver(caps, flagsProvider, scenarioName); // Assert Assert.That(result.CapturedOptions.DummyString, Is.EqualTo("Ohai")); Assert.That(result.CapturedOptions.DummyNumber, Is.EqualTo(5)); Assert.That(result.CapturedOptions.AnotherDummyNumber, Is.EqualTo(20)); }
/// <summary> /// Creates and returns a web driver instance. /// </summary> /// <returns>The web driver.</returns> /// <param name="requestedCapabilities">A collection of requested web driver capabilities.</param> /// <param name="options">A factory options instance.</param> /// <param name="flagsProvider">A service which derives a collection of browser flags for the created web driver.</param> /// <param name="scenarioName">The name for the current test scenario.</param> public abstract IWebDriver CreateWebDriver(IDictionary <string, object> requestedCapabilities, TOptions options, IGetsBrowserFlags flagsProvider, string scenarioName);
IWebDriver ICreatesWebDriverFromOptions.CreateWebDriver(object options, IDictionary <string, object> requestedCapabilities, IGetsBrowserFlags flagsProvider, string scenarioName) => CreateWebDriver(requestedCapabilities, (TOptions)options, flagsProvider, scenarioName);
IWebDriver ICreatesWebDriver.CreateWebDriver(IDictionary <string, object> requestedCapabilities, IGetsBrowserFlags flagsProvider, string scenarioName) => CreateWebDriver(requestedCapabilities, null, flagsProvider, scenarioName);
public IWebDriver CreateWebDriver(IDictionary <string, object> requestedCapabilities = null, IGetsBrowserFlags flagsProvider = null, string scenarioName = null) { throw new NotImplementedException(); }
/// <summary> /// Creates and returns a web driver instance. /// </summary> /// <returns>The web driver.</returns> /// <param name="requestedCapabilities">An optional collection of requested web driver capabilities.</param> /// <param name="flagsProvider">An optional service which derives a collection of browser flags for the created web driver.</param> /// <param name="scenarioName">An optional name for the current test scenario.</param> public IWebDriver CreateWebDriver(IDictionary <string, object> requestedCapabilities = null, IGetsBrowserFlags flagsProvider = null, string scenarioName = null) => proxiedFactory.CreateWebDriver(options, requestedCapabilities, flagsProvider, scenarioName);