Add project files.

This commit is contained in:
2022-01-26 20:15:57 +01:00
parent 7d4796fa9f
commit 74cb6f043a
15 changed files with 356 additions and 0 deletions

View File

@ -0,0 +1,28 @@
using OpenQA.Selenium;
using OpenQA.Selenium.Chrome;
using OpenQA.Selenium.Firefox;
using WebDriverManager;
using WebDriverManager.DriverConfigs.Impl;
namespace EATestFramework.Driver;
public class BrowserDriver : IBrowserDriver
{
public IWebDriver GetChromeDriver()
{
new DriverManager().SetUpDriver(new ChromeConfig());
return new ChromeDriver();
}
public IWebDriver GetFirefoxDriver()
{
new DriverManager().SetUpDriver(new FirefoxConfig());
return new FirefoxDriver();
}
}
public enum BrowserType
{
Chrome,
Firefox
}

View File

@ -0,0 +1,34 @@
using EATestFramework.Settings;
using OpenQA.Selenium;
namespace EATestFramework.Driver
{
public class DriverFixture : IDriverFixture
{
IWebDriver driver;
private readonly TestSettings _testSettings;
private readonly IBrowserDriver _browserDriver;
public DriverFixture(TestSettings testSettings, IBrowserDriver browserDriver)
{
_testSettings = testSettings;
_browserDriver = browserDriver;
driver = GetWebDriver();
}
public IWebDriver Driver => driver;
public IWebDriver GetWebDriver()
{
return _testSettings.BrowserType switch
{
BrowserType.Chrome => _browserDriver.GetChromeDriver(),
BrowserType.Firefox => _browserDriver.GetFirefoxDriver(),
_ => _browserDriver.GetChromeDriver()
};
}
}
}

View File

@ -0,0 +1,9 @@
using OpenQA.Selenium;
namespace EATestFramework.Driver;
public interface IBrowserDriver
{
IWebDriver GetChromeDriver();
IWebDriver GetFirefoxDriver();
}

View File

@ -0,0 +1,10 @@
using OpenQA.Selenium;
namespace EATestFramework.Driver
{
public interface IDriverFixture
{
IWebDriver Driver { get; }
}
}

View File

@ -0,0 +1,19 @@
using EATestFramework.Settings;
using Microsoft.Extensions.DependencyInjection;
namespace EATestFramework.Driver;
public static class WebDriverInitializerExtension
{
public static IServiceCollection UseWebDriverInitializer(
this IServiceCollection services,
BrowserType browserType)
{
services.AddSingleton(new TestSettings
{
BrowserType = browserType
});
return services;
}
}

View File

@ -0,0 +1,27 @@
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFramework>net6.0</TargetFramework>
<Nullable>enable</Nullable>
<IsPackable>false</IsPackable>
</PropertyGroup>
<ItemGroup>
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="17.0.0" />
<PackageReference Include="Selenium.Support" Version="4.1.0" />
<PackageReference Include="Selenium.WebDriver" Version="4.1.0" />
<PackageReference Include="WebDriverManager" Version="2.12.3" />
<PackageReference Include="xunit" Version="2.4.1" />
<PackageReference Include="Xunit.DependencyInjection" Version="8.3.0" />
<PackageReference Include="xunit.runner.visualstudio" Version="2.4.3">
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
<PrivateAssets>all</PrivateAssets>
</PackageReference>
<PackageReference Include="coverlet.collector" Version="3.1.0">
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
<PrivateAssets>all</PrivateAssets>
</PackageReference>
</ItemGroup>
</Project>

View File

@ -0,0 +1,9 @@
using EATestFramework.Driver;
namespace EATestFramework.Settings
{
public class TestSettings
{
public BrowserType BrowserType { get; set; }
}
}

View File

@ -0,0 +1,15 @@
using EATestFramework.Driver;
using Microsoft.Extensions.DependencyInjection;
namespace EATestFramework
{
public class Startup
{
public void ConfigureServices(IServiceCollection services)
{
services.UseWebDriverInitializer(BrowserType.Firefox);
services.AddScoped<IBrowserDriver, BrowserDriver>();
services.AddScoped<IDriverFixture, DriverFixture>();
}
}
}