public static IServiceProvider GetServiceProvider(bool headless) { // Force local Browser running for local file IWebDriverConfiguration driverConfig = WebDriverConfigurationBuilder.Start() .WithHeadless(headless) .WithBrowser(Browser.Firefox) .WithWindowSize(WindowSize.Hd) .Build(); IWebDriverManager driverManager = ServiceCollectionFactory.GetDefaultServiceCollection(true, driverConfig) .BuildServiceProvider() .GetRequiredService <IWebDriverManager>(); IServiceCollection serviceCollection = new ServiceCollection(); serviceCollection.AddSingleton <IWebDriverManager>(driverManager); serviceCollection.AddSingleton <IWebDriver>(driverManager.Get()); serviceCollection.Scan(scan => scan .FromAssemblyOf <PageTests>() .AddClasses() .UsingRegistrationStrategy(RegistrationStrategy.Skip) .AsSelf() .WithSingletonLifetime()); return(serviceCollection.BuildServiceProvider()); }
public void LocalWebDriverFactoryWorks(Browser browser, BrowserVisibility browserVisibility) { IWebDriverConfiguration configuration = WebDriverConfigurationBuilder.Start() .WithBrowser(browser) .WithHeadless(browserVisibility == BrowserVisibility.Headless) .Build(); TestContext.WriteLine($"Configuration = {JsonConvert.SerializeObject(configuration, sizeJsonConverter)}"); Driver = WebDriverFactory.GetWebDriver(configuration); Assertions.AssertThatPageCanBeLoaded(Driver); }
public void RequestingUnsupportedWebDriverThrowsInformativeException(Browser browser) { IWebDriverConfiguration configuration = WebDriverConfigurationBuilder.Start() .WithBrowser(browser) .Build(); TestContext.WriteLine($"Configuration = {JsonConvert.SerializeObject(configuration, sizeJsonConverter)}"); void Act() => WebDriverFactory.GetWebDriver(configuration); Assertions.AssertThatRequestingAnUnsupportedBrowserThrowsCorrectException(Act, browser, thisPlatform); }
public void RequestingUnsupportedHeadlessBrowserThrowsInformativeException(Browser browser) { IWebDriverConfiguration configuration = WebDriverConfigurationBuilder.Start() .WithBrowser(browser) .RunHeadless() .Build(); void Act() => WebDriverFactory.GetWebDriver(configuration); Assertions.AssertThatRequestingAnUnsupportedHeadlessBrowserThrowsCorrectException(Act, browser); }
public void BrowserIsOfRequestedSize(WindowSize windowSize, int expectedWidth, int expectedHeight) { IWebDriverConfiguration configuration = WebDriverConfigurationBuilder.Start() .WithBrowser(Browser.Firefox) .RunHeadless() .WithWindowSize(windowSize) .Build(); TestContext.WriteLine($"Configuration = {JsonConvert.SerializeObject(configuration, sizeJsonConverter)}"); Driver = WebDriverFactory.GetWebDriver(configuration); Assertions.AssertThatBrowserWindowSizeIsCorrect(Driver, expectedWidth, expectedHeight); }
/// <summary> /// Return a WebDriver instance of the given configuration. /// </summary> /// <param name="configuration"></param> /// <returns></returns> public IWebDriver GetWebDriver(IWebDriverConfiguration configuration) { Logger.Info($"WebDriver requested using {configuration}"); IWebDriver driver = configuration.IsLocal ? LocalWebDriverFactory.GetWebDriver(configuration) : RemoteWebDriverFactory.GetWebDriver(configuration); if (IsDebugEnabled) { IJavaScriptExecutor js = (IJavaScriptExecutor)driver; Logger.Debug($"{driver} successfully launched. Agent String: {js.ExecuteScript("return navigator.userAgent;")}"); } return(driver); }
/// <summary> /// Return a RemoteWebDriver instance of the given configuration. /// </summary> /// <param name="configuration"></param> /// <returns></returns> public IWebDriver GetWebDriver(IWebDriverConfiguration configuration) { if (configuration.IsLocal) { Exception ex = new ArgumentException("A Local WebDriver Instance cannot be generated by this method."); Logger.Fatal("Invalid WebDriver Configuration requested.", ex); throw ex; } return(GetWebDriver( configuration.Browser, configuration.PlatformType, configuration.WindowSize, configuration.Headless, configuration.WindowDefinedSize )); }
/// <summary> /// Return a local WebDriver instance of the given configuration. /// </summary> /// <param name="configuration"></param> /// <returns></returns> public IWebDriver GetWebDriver(IWebDriverConfiguration configuration) { Logger.Info($"Local WebDriver requested using configuration: {configuration}"); if (!configuration.IsLocal) { Exception ex = new ArgumentException("A RemoteWebDriver Instance cannot be generated by this method."); Logger.Fatal("Invalid WebDriver Configuration requested.", ex); throw ex; } return(GetWebDriver( configuration.Browser, configuration.WindowSize, configuration.Headless, configuration.WindowDefinedSize )); }
public void RemoteWebDriverFactoryWorks( PlatformType platformType, Browser browser, BrowserVisibility browserVisibility = BrowserVisibility.OnScreen) { IWebDriverConfiguration configuration = WebDriverConfigurationBuilder.Start() .WithBrowser(browser) .WithHeadless(browserVisibility == BrowserVisibility.Headless) .RunRemotelyOn(gridUrl) .WithPlatformType(platformType) .Build(); TestContext.WriteLine($"Configuration = {JsonConvert.SerializeObject(configuration, sizeJsonConverter)}"); Driver = WebDriverFactory.GetWebDriver(configuration); Assertions.AssertThatPageCanBeLoaded(Driver); Driver.IsRunningHeadless().Should() .Be(browserVisibility == BrowserVisibility.Headless, $"{browserVisibility.ToString()} was requested"); }
public static IServiceCollection GetDefaultServiceCollection( IWebDriverConfiguration driverConfig, DriverPath driverPath) { IServiceCollection services = new ServiceCollection(); services.AddSingleton <IDriverOptionsFactory, DefaultDriverOptionsFactory>(); services.AddSingleton <IWebDriverReSizer, WebDriverReSizer>(); if (driverPath != null) { services.AddSingleton <DriverPath>(driverPath); } services.AddSingleton(driverConfig ?? WebDriverConfigurationBuilder.Start().Build()); services.AddSingleton <ILocalWebDriverFactory, DefaultLocalWebDriverFactory>(); services.AddSingleton <IRemoteWebDriverFactory, DefaultRemoteWebDriverFactory>(); services.AddSingleton <IWebDriverFactory, DefaultWebDriverFactory>(); services.AddSingleton <IWebDriverManager, WebDriverManager>(); return(services); }
public static IServiceCollection GetDefaultServiceCollection( IWebDriverConfiguration driverConfig) { return(GetDefaultServiceCollection(driverConfig, null)); }
/// <summary> /// Configuration based constructor for a WebDriverManager /// </summary> /// <param name="factory"></param> /// <param name="configuration"></param> public WebDriverManager(IWebDriverFactory factory, IWebDriverConfiguration configuration) { this.factory = factory; this.driverConfig = configuration; }
public IWebDriver GetWebDriver(IWebDriverConfiguration configuration) { Logger.Info($"Fake WebDriver requested."); return(new FakeWebDriver()); }
/// <summary> /// Return a DriverFactory instance for use in .NET Core projects. /// Try using driverPath = new DriverPath(Assembly.GetCallingAssembly()) when testing locally from .NET core projects. /// </summary> /// <param name="configuration"></param> /// <param name="driverOptionsFactory"></param> /// <param name="webDriverReSizer"></param> public DefaultRemoteWebDriverFactory(IDriverOptionsFactory driverOptionsFactory, IWebDriverConfiguration configuration, IWebDriverReSizer webDriverReSizer) : this(driverOptionsFactory, configuration.GridUri, webDriverReSizer) { }