From 43a334eb80d8f5f8328d240049654793a78fe205 Mon Sep 17 00:00:00 2001 From: Semyon Tagilcev Date: Fri, 13 May 2022 17:59:43 +0300 Subject: [PATCH 01/10] init --- .../AuthServiceTests.cs | 53 ++++++++++++++++++ .../HwProj.AuthService.SeleniumTests.csproj | 21 +++++++ .../AuthServicePageObjects/LoginPageObject.cs | 34 ++++++++++++ .../MainMenuPageObject.cs | 31 +++++++++++ .../RegisterPageObject.cs | 55 +++++++++++++++++++ .../HwProj.PageObjects.csproj | 11 ++++ HwProj.sln | 14 +++++ hwproj.front/src/components/AppBar.tsx | 2 + hwproj.front/src/components/Auth/Login.tsx | 3 + hwproj.front/src/components/Auth/Register.tsx | 7 +++ 10 files changed, 231 insertions(+) create mode 100644 HwProj.AuthService/HwProj.AuthService.SeleniumTests/AuthServiceTests.cs create mode 100644 HwProj.AuthService/HwProj.AuthService.SeleniumTests/HwProj.AuthService.SeleniumTests.csproj create mode 100644 HwProj.Common/HwProj.PageObjects/AuthServicePageObjects/LoginPageObject.cs create mode 100644 HwProj.Common/HwProj.PageObjects/AuthServicePageObjects/MainMenuPageObject.cs create mode 100644 HwProj.Common/HwProj.PageObjects/AuthServicePageObjects/RegisterPageObject.cs create mode 100644 HwProj.Common/HwProj.PageObjects/HwProj.PageObjects.csproj diff --git a/HwProj.AuthService/HwProj.AuthService.SeleniumTests/AuthServiceTests.cs b/HwProj.AuthService/HwProj.AuthService.SeleniumTests/AuthServiceTests.cs new file mode 100644 index 000000000..7788dcc22 --- /dev/null +++ b/HwProj.AuthService/HwProj.AuthService.SeleniumTests/AuthServiceTests.cs @@ -0,0 +1,53 @@ +using System.IO; +using System.Reflection; +using System.Threading; +using HwProj.PageObjects.AuthServicePageObjects; +using NUnit.Framework; +using OpenQA.Selenium; +using OpenQA.Selenium.Chrome; + +namespace HwProj.AuthService.SeleniumTests +{ + public class Tests + { + private IWebDriver _webDriver; + + [SetUp] + public void Setup() + { + _webDriver = new ChromeDriver(Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location)); + _webDriver.Navigate().GoToUrl("http://localhost:3000"); + } + + [Test] + public void SimpleLoginTest() + { + var mainMenu = new MainMenuPageObject(_webDriver); + + mainMenu + .MoveToLogin() + .Login("admin@gmail.com", "Admin@1234"); + + Thread.Sleep(1000); + } + + [Test] + public void SimpleRegisterTest() + { + var mainMenu = new MainMenuPageObject(_webDriver); + + mainMenu + .MoveToRegister() + .Register("Volodya", "Petrov", "bigvova228@sobaka.com", + "2281337", "2281337"); + + Thread.Sleep(1000); + } + + [TearDown] + public void TearDown() + { + _webDriver.Quit(); + } + } +} diff --git a/HwProj.AuthService/HwProj.AuthService.SeleniumTests/HwProj.AuthService.SeleniumTests.csproj b/HwProj.AuthService/HwProj.AuthService.SeleniumTests/HwProj.AuthService.SeleniumTests.csproj new file mode 100644 index 000000000..a59f4d4df --- /dev/null +++ b/HwProj.AuthService/HwProj.AuthService.SeleniumTests/HwProj.AuthService.SeleniumTests.csproj @@ -0,0 +1,21 @@ + + + + netcoreapp2.2 + + false + + + + + + + + + + + + + + + diff --git a/HwProj.Common/HwProj.PageObjects/AuthServicePageObjects/LoginPageObject.cs b/HwProj.Common/HwProj.PageObjects/AuthServicePageObjects/LoginPageObject.cs new file mode 100644 index 000000000..e534f33bd --- /dev/null +++ b/HwProj.Common/HwProj.PageObjects/AuthServicePageObjects/LoginPageObject.cs @@ -0,0 +1,34 @@ +using OpenQA.Selenium; + +namespace HwProj.PageObjects.AuthServicePageObjects +{ + public class LoginPageObject + { + private readonly IWebDriver _webDriver; + private readonly By _emailField = By.XPath("//input[@id='login-email-input']"); + private readonly By _passwordField = By.XPath("//input[@id='login-password-input']"); + private readonly By _loginButton = By.XPath("//button[@id='login-button']"); + + public LoginPageObject(IWebDriver webDriver) + { + _webDriver = webDriver; + } + + public MainMenuPageObject Login(string email, string password) + { + _webDriver + .FindElement(_emailField) + .SendKeys(email); + + _webDriver + .FindElement(_passwordField) + .SendKeys(password); + + _webDriver + .FindElement(_loginButton) + .Click(); + + return new MainMenuPageObject(_webDriver); + } + } +} diff --git a/HwProj.Common/HwProj.PageObjects/AuthServicePageObjects/MainMenuPageObject.cs b/HwProj.Common/HwProj.PageObjects/AuthServicePageObjects/MainMenuPageObject.cs new file mode 100644 index 000000000..8c6a1c6ad --- /dev/null +++ b/HwProj.Common/HwProj.PageObjects/AuthServicePageObjects/MainMenuPageObject.cs @@ -0,0 +1,31 @@ +using OpenQA.Selenium; + +namespace HwProj.PageObjects.AuthServicePageObjects +{ + public class MainMenuPageObject + { + private readonly IWebDriver _webDriver; + private readonly By _signInButton = By.XPath("//button[@id='sign-in-button']"); + private readonly By _signUpButton = By.XPath("//button[@id='sign-up-button']"); + + + public MainMenuPageObject(IWebDriver webDriver) + { + _webDriver = webDriver; + } + + public LoginPageObject MoveToLogin() + { + _webDriver.FindElement(_signInButton).Click(); + + return new LoginPageObject(_webDriver); + } + + public RegisterPageObject MoveToRegister() + { + _webDriver.FindElement(_signUpButton).Click(); + + return new RegisterPageObject(_webDriver); + } + } +} diff --git a/HwProj.Common/HwProj.PageObjects/AuthServicePageObjects/RegisterPageObject.cs b/HwProj.Common/HwProj.PageObjects/AuthServicePageObjects/RegisterPageObject.cs new file mode 100644 index 000000000..c0caed786 --- /dev/null +++ b/HwProj.Common/HwProj.PageObjects/AuthServicePageObjects/RegisterPageObject.cs @@ -0,0 +1,55 @@ +using OpenQA.Selenium; + +namespace HwProj.PageObjects.AuthServicePageObjects +{ + public class RegisterPageObject + { + private readonly IWebDriver _webDriver; + private readonly By _nameField = By.XPath("//input[@id='register-name-input']"); + private readonly By _surnameField = By.XPath("//input[@id='register-surname-input']"); + private readonly By _middleNameField = By.XPath("//input[@id='register-middle-name-input']"); + private readonly By _emailField = By.XPath("//input[@id='register-email-input']"); + private readonly By _passwordField = By.XPath("//input[@id='register-password-input']"); + private readonly By _confirmPasswordField = By.XPath("//input[@id='register-confirm-password-input']"); + private readonly By _registerButton = By.XPath("//button[@id='register-button']"); + + public RegisterPageObject(IWebDriver webDriver) + { + _webDriver = webDriver; + } + + public MainMenuPageObject Register(string name, string surname, string email, string password, + string confirmPassword, string middleName = "") + { + _webDriver + .FindElement(_nameField) + .SendKeys(name); + + _webDriver + .FindElement(_surnameField) + .SendKeys(surname); + + _webDriver + .FindElement(_middleNameField) + .SendKeys(middleName); + + _webDriver + .FindElement(_emailField) + .SendKeys(email); + + _webDriver + .FindElement(_passwordField) + .SendKeys(password); + + _webDriver + .FindElement(_confirmPasswordField) + .SendKeys(confirmPassword); + + _webDriver + .FindElement(_registerButton) + .Click(); + + return new MainMenuPageObject(_webDriver); + } + } +} diff --git a/HwProj.Common/HwProj.PageObjects/HwProj.PageObjects.csproj b/HwProj.Common/HwProj.PageObjects/HwProj.PageObjects.csproj new file mode 100644 index 000000000..24aad5a4a --- /dev/null +++ b/HwProj.Common/HwProj.PageObjects/HwProj.PageObjects.csproj @@ -0,0 +1,11 @@ + + + + netstandard2.0 + + + + + + + diff --git a/HwProj.sln b/HwProj.sln index 3961fc3c1..95d2faf4d 100644 --- a/HwProj.sln +++ b/HwProj.sln @@ -69,6 +69,10 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "HwProj.SolutionsService.Cli EndProject Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "HwProj.Exceptions", "HwProj.Common\HwProj.Exceptions\HwProj.Exceptions.csproj", "{51463655-7668-4C7D-9FDE-D4D7CDAA82B8}" EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "HwProj.AuthService.SeleniumTests", "HwProj.AuthService\HwProj.AuthService.SeleniumTests\HwProj.AuthService.SeleniumTests.csproj", "{65B56526-A460-4BB3-AC2D-CF72A71292C0}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "HwProj.PageObjects", "HwProj.Common\HwProj.PageObjects\HwProj.PageObjects.csproj", "{BF150B19-4E2A-4D8F-B1D7-930CDECC14AD}" +EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug|Any CPU = Debug|Any CPU @@ -159,6 +163,14 @@ Global {51463655-7668-4C7D-9FDE-D4D7CDAA82B8}.Debug|Any CPU.Build.0 = Debug|Any CPU {51463655-7668-4C7D-9FDE-D4D7CDAA82B8}.Release|Any CPU.ActiveCfg = Release|Any CPU {51463655-7668-4C7D-9FDE-D4D7CDAA82B8}.Release|Any CPU.Build.0 = Release|Any CPU + {65B56526-A460-4BB3-AC2D-CF72A71292C0}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {65B56526-A460-4BB3-AC2D-CF72A71292C0}.Debug|Any CPU.Build.0 = Debug|Any CPU + {65B56526-A460-4BB3-AC2D-CF72A71292C0}.Release|Any CPU.ActiveCfg = Release|Any CPU + {65B56526-A460-4BB3-AC2D-CF72A71292C0}.Release|Any CPU.Build.0 = Release|Any CPU + {BF150B19-4E2A-4D8F-B1D7-930CDECC14AD}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {BF150B19-4E2A-4D8F-B1D7-930CDECC14AD}.Debug|Any CPU.Build.0 = Debug|Any CPU + {BF150B19-4E2A-4D8F-B1D7-930CDECC14AD}.Release|Any CPU.ActiveCfg = Release|Any CPU + {BF150B19-4E2A-4D8F-B1D7-930CDECC14AD}.Release|Any CPU.Build.0 = Release|Any CPU EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE @@ -185,6 +197,8 @@ Global {0CBD72C5-1CCF-4C13-8046-732398816160} = {1EAEB779-E7C8-4EF9-B9A9-22CB8E3C246D} {C1ACAB32-4100-4C19-AE08-57FA9BA75DF2} = {A85A3030-2878-4923-B450-9683832CDAC1} {51463655-7668-4C7D-9FDE-D4D7CDAA82B8} = {77D857A8-45C6-4432-B4BF-A2F2C9ECA7FE} + {65B56526-A460-4BB3-AC2D-CF72A71292C0} = {D7F8BC73-A6CB-4E07-984D-2D65B740BC69} + {BF150B19-4E2A-4D8F-B1D7-930CDECC14AD} = {77D857A8-45C6-4432-B4BF-A2F2C9ECA7FE} EndGlobalSection GlobalSection(ExtensibilityGlobals) = postSolution SolutionGuid = {C03BF138-4A5B-4261-9495-6D3AC6CE9779} diff --git a/hwproj.front/src/components/AppBar.tsx b/hwproj.front/src/components/AppBar.tsx index 4b4852b54..0d6f66e3b 100644 --- a/hwproj.front/src/components/AppBar.tsx +++ b/hwproj.front/src/components/AppBar.tsx @@ -141,6 +141,7 @@ export const Header: React.FC = (props: AppBarProps) => { {!props.loggedIn && (
window.location.assign("/login")} component="button" color="inherit" @@ -150,6 +151,7 @@ export const Header: React.FC = (props: AppBarProps) => { Вход window.location.assign("/register")} component="button" color="inherit" diff --git a/hwproj.front/src/components/Auth/Login.tsx b/hwproj.front/src/components/Auth/Login.tsx index f53d8c72b..eee9d4465 100644 --- a/hwproj.front/src/components/Auth/Login.tsx +++ b/hwproj.front/src/components/Auth/Login.tsx @@ -145,6 +145,7 @@ const Login: FC = (props) => { = (props) => { = (props) => {