Add project files.
This commit is contained in:
28
EATestFramework/Driver/BrowserDriver.cs
Normal file
28
EATestFramework/Driver/BrowserDriver.cs
Normal 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
|
||||||
|
}
|
||||||
34
EATestFramework/Driver/DriverFixture.cs
Normal file
34
EATestFramework/Driver/DriverFixture.cs
Normal 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()
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
9
EATestFramework/Driver/IBrowserDriver.cs
Normal file
9
EATestFramework/Driver/IBrowserDriver.cs
Normal file
@ -0,0 +1,9 @@
|
|||||||
|
using OpenQA.Selenium;
|
||||||
|
|
||||||
|
namespace EATestFramework.Driver;
|
||||||
|
|
||||||
|
public interface IBrowserDriver
|
||||||
|
{
|
||||||
|
IWebDriver GetChromeDriver();
|
||||||
|
IWebDriver GetFirefoxDriver();
|
||||||
|
}
|
||||||
10
EATestFramework/Driver/IDriverFixture.cs
Normal file
10
EATestFramework/Driver/IDriverFixture.cs
Normal file
@ -0,0 +1,10 @@
|
|||||||
|
using OpenQA.Selenium;
|
||||||
|
|
||||||
|
namespace EATestFramework.Driver
|
||||||
|
{
|
||||||
|
public interface IDriverFixture
|
||||||
|
{
|
||||||
|
IWebDriver Driver { get; }
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
19
EATestFramework/Driver/WebDriverInitializerExtension.cs
Normal file
19
EATestFramework/Driver/WebDriverInitializerExtension.cs
Normal 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;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
27
EATestFramework/EATestFramework.csproj
Normal file
27
EATestFramework/EATestFramework.csproj
Normal 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>
|
||||||
9
EATestFramework/Settings/TestSettings.cs
Normal file
9
EATestFramework/Settings/TestSettings.cs
Normal file
@ -0,0 +1,9 @@
|
|||||||
|
using EATestFramework.Driver;
|
||||||
|
|
||||||
|
namespace EATestFramework.Settings
|
||||||
|
{
|
||||||
|
public class TestSettings
|
||||||
|
{
|
||||||
|
public BrowserType BrowserType { get; set; }
|
||||||
|
}
|
||||||
|
}
|
||||||
15
EATestFramework/Startup.cs
Normal file
15
EATestFramework/Startup.cs
Normal 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>();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
31
EATestProject/EATestProject.csproj
Normal file
31
EATestProject/EATestProject.csproj
Normal file
@ -0,0 +1,31 @@
|
|||||||
|
<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>
|
||||||
|
|
||||||
|
<ItemGroup>
|
||||||
|
<ProjectReference Include="..\EATestFramework\EATestFramework.csproj" />
|
||||||
|
</ItemGroup>
|
||||||
|
|
||||||
|
</Project>
|
||||||
19
EATestProject/Model/Product.cs
Normal file
19
EATestProject/Model/Product.cs
Normal file
@ -0,0 +1,19 @@
|
|||||||
|
namespace EATestProject.Model
|
||||||
|
{
|
||||||
|
public class Product
|
||||||
|
{
|
||||||
|
public int Id { get; set; }
|
||||||
|
public string Name { get; set; }
|
||||||
|
public string Description { get; set; }
|
||||||
|
public int Price { get; set; }
|
||||||
|
public ProductType ProductType { get; set; }
|
||||||
|
}
|
||||||
|
|
||||||
|
public enum ProductType
|
||||||
|
{
|
||||||
|
CPU,
|
||||||
|
MONITOR,
|
||||||
|
PERIPHARALS,
|
||||||
|
EXTERNAL
|
||||||
|
}
|
||||||
|
}
|
||||||
35
EATestProject/Pages/CreateProductPage.cs
Normal file
35
EATestProject/Pages/CreateProductPage.cs
Normal file
@ -0,0 +1,35 @@
|
|||||||
|
using EATestFramework.Driver;
|
||||||
|
using EATestProject.Model;
|
||||||
|
using OpenQA.Selenium;
|
||||||
|
using OpenQA.Selenium.Support.UI;
|
||||||
|
|
||||||
|
namespace EATestProject.Pages
|
||||||
|
{
|
||||||
|
public interface ICreateProductPage
|
||||||
|
{
|
||||||
|
void EnterProductDetails(Product product);
|
||||||
|
}
|
||||||
|
|
||||||
|
public class CreateProductPage : ICreateProductPage
|
||||||
|
{
|
||||||
|
private readonly IWebDriver _driver;
|
||||||
|
public CreateProductPage(IDriverFixture driver) => _driver = driver.Driver;
|
||||||
|
|
||||||
|
IWebElement txtName => _driver.FindElement(By.Id("Name"));
|
||||||
|
IWebElement txtDescription => _driver.FindElement(By.Id("Description"));
|
||||||
|
IWebElement txtPrice => _driver.FindElement(By.Id("Price"));
|
||||||
|
IWebElement ddlProductType => _driver.FindElement(By.Id("ProductType"));
|
||||||
|
IWebElement btnCreate => _driver.FindElement(By.Id("Create"));
|
||||||
|
|
||||||
|
public void EnterProductDetails(Product product)
|
||||||
|
{
|
||||||
|
txtName.SendKeys(product.Name);
|
||||||
|
txtDescription.SendKeys(product.Description);
|
||||||
|
txtPrice.SendKeys(product.Price.ToString());
|
||||||
|
var select = new SelectElement(ddlProductType);
|
||||||
|
select.SelectByText(product.ProductType.ToString());
|
||||||
|
btnCreate.Click();
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
28
EATestProject/Pages/HomePage.cs
Normal file
28
EATestProject/Pages/HomePage.cs
Normal file
@ -0,0 +1,28 @@
|
|||||||
|
using EATestFramework.Driver;
|
||||||
|
using OpenQA.Selenium;
|
||||||
|
|
||||||
|
namespace EATestProject.Pages
|
||||||
|
{
|
||||||
|
public interface IHomePage
|
||||||
|
{
|
||||||
|
void CreateProduct();
|
||||||
|
}
|
||||||
|
|
||||||
|
public class HomePage : IHomePage
|
||||||
|
{
|
||||||
|
private readonly IWebDriver _driver;
|
||||||
|
public HomePage(IDriverFixture driver)
|
||||||
|
{
|
||||||
|
_driver = driver.Driver;
|
||||||
|
}
|
||||||
|
|
||||||
|
IWebElement lnkProduct => _driver.FindElement(By.LinkText("Product"));
|
||||||
|
IWebElement lnkCreate => _driver.FindElement(By.LinkText("Create"));
|
||||||
|
|
||||||
|
public void CreateProduct()
|
||||||
|
{
|
||||||
|
lnkProduct.Click();
|
||||||
|
lnkCreate.Click();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
18
EATestProject/Startup.cs
Normal file
18
EATestProject/Startup.cs
Normal file
@ -0,0 +1,18 @@
|
|||||||
|
using EATestFramework.Driver;
|
||||||
|
using EATestProject.Pages;
|
||||||
|
using Microsoft.Extensions.DependencyInjection;
|
||||||
|
|
||||||
|
namespace EATestProject
|
||||||
|
{
|
||||||
|
public class Startup
|
||||||
|
{
|
||||||
|
public void ConfigureServices(IServiceCollection services)
|
||||||
|
{
|
||||||
|
services.UseWebDriverInitializer(BrowserType.Firefox);
|
||||||
|
services.AddScoped<IHomePage, HomePage>();
|
||||||
|
services.AddScoped<ICreateProductPage, CreateProductPage>();
|
||||||
|
services.AddScoped<IBrowserDriver, BrowserDriver>();
|
||||||
|
services.AddScoped<IDriverFixture, DriverFixture>();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
43
EATestProject/UnitTest1.cs
Normal file
43
EATestProject/UnitTest1.cs
Normal file
@ -0,0 +1,43 @@
|
|||||||
|
using EATestFramework.Driver;
|
||||||
|
using EATestProject.Model;
|
||||||
|
using EATestProject.Pages;
|
||||||
|
using OpenQA.Selenium;
|
||||||
|
using System;
|
||||||
|
using Xunit;
|
||||||
|
|
||||||
|
namespace EATestProject
|
||||||
|
{
|
||||||
|
public class UnitTest1: IDisposable
|
||||||
|
{
|
||||||
|
private readonly IWebDriver _driver;
|
||||||
|
private readonly IHomePage _homePage;
|
||||||
|
private readonly ICreateProductPage _createProductPage;
|
||||||
|
|
||||||
|
public UnitTest1(IDriverFixture driver, IHomePage homePage, ICreateProductPage createProductPage)
|
||||||
|
{
|
||||||
|
_homePage = homePage;
|
||||||
|
_createProductPage = createProductPage;
|
||||||
|
_driver = driver.Driver;
|
||||||
|
_driver.Navigate().GoToUrl(new Uri("http://localhost:33084"));
|
||||||
|
}
|
||||||
|
|
||||||
|
public void Dispose()
|
||||||
|
{
|
||||||
|
_driver.Quit();
|
||||||
|
}
|
||||||
|
|
||||||
|
[Fact]
|
||||||
|
public void Test1()
|
||||||
|
{
|
||||||
|
|
||||||
|
_homePage.CreateProduct();
|
||||||
|
_createProductPage.EnterProductDetails(new Product
|
||||||
|
{
|
||||||
|
Name = "AutoProduct",
|
||||||
|
Description = "AutoDescription",
|
||||||
|
Price = 7675,
|
||||||
|
ProductType = ProductType.PERIPHARALS
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
31
SeleniumXunitBasic.sln
Normal file
31
SeleniumXunitBasic.sln
Normal file
@ -0,0 +1,31 @@
|
|||||||
|
|
||||||
|
Microsoft Visual Studio Solution File, Format Version 12.00
|
||||||
|
# Visual Studio Version 17
|
||||||
|
VisualStudioVersion = 17.0.32014.148
|
||||||
|
MinimumVisualStudioVersion = 10.0.40219.1
|
||||||
|
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "EATestFramework", "EATestFramework\EATestFramework.csproj", "{AE40E966-4FE5-4937-B90D-AEE4277936FE}"
|
||||||
|
EndProject
|
||||||
|
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "EATestProject", "EATestProject\EATestProject.csproj", "{A3565A74-D82B-4B9B-BE5A-9CABE628D163}"
|
||||||
|
EndProject
|
||||||
|
Global
|
||||||
|
GlobalSection(SolutionConfigurationPlatforms) = preSolution
|
||||||
|
Debug|Any CPU = Debug|Any CPU
|
||||||
|
Release|Any CPU = Release|Any CPU
|
||||||
|
EndGlobalSection
|
||||||
|
GlobalSection(ProjectConfigurationPlatforms) = postSolution
|
||||||
|
{AE40E966-4FE5-4937-B90D-AEE4277936FE}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||||
|
{AE40E966-4FE5-4937-B90D-AEE4277936FE}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||||
|
{AE40E966-4FE5-4937-B90D-AEE4277936FE}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||||
|
{AE40E966-4FE5-4937-B90D-AEE4277936FE}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||||
|
{A3565A74-D82B-4B9B-BE5A-9CABE628D163}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||||
|
{A3565A74-D82B-4B9B-BE5A-9CABE628D163}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||||
|
{A3565A74-D82B-4B9B-BE5A-9CABE628D163}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||||
|
{A3565A74-D82B-4B9B-BE5A-9CABE628D163}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||||
|
EndGlobalSection
|
||||||
|
GlobalSection(SolutionProperties) = preSolution
|
||||||
|
HideSolutionNode = FALSE
|
||||||
|
EndGlobalSection
|
||||||
|
GlobalSection(ExtensibilityGlobals) = postSolution
|
||||||
|
SolutionGuid = {CB3A58BA-7DD8-4FC9-ADE7-09629DC6E361}
|
||||||
|
EndGlobalSection
|
||||||
|
EndGlobal
|
||||||
Reference in New Issue
Block a user