mirror of
https://github.com/LD-Reborn/Berufsschule_HAM.git
synced 2025-12-20 06:51:55 +00:00
Added Assets E2E tests
This commit is contained in:
75
tests/Berufsschule_HAM.E2ETests/AssetsPageTests.cs
Normal file
75
tests/Berufsschule_HAM.E2ETests/AssetsPageTests.cs
Normal file
@@ -0,0 +1,75 @@
|
|||||||
|
using Berufsschule_HAM.E2ETests.Helper;
|
||||||
|
using OpenQA.Selenium;
|
||||||
|
using OpenQA.Selenium.Chrome;
|
||||||
|
using OpenQA.Selenium.Support.Extensions;
|
||||||
|
using System.Diagnostics;
|
||||||
|
|
||||||
|
namespace Berufsschule_HAM.E2ETests;
|
||||||
|
|
||||||
|
public class AssetsPageTests : IDisposable
|
||||||
|
{
|
||||||
|
private readonly ChromeDriver _driver;
|
||||||
|
public Uri serverUri;
|
||||||
|
public string serverUrl;
|
||||||
|
public Process serverProcess;
|
||||||
|
|
||||||
|
public AssetsPageTests()
|
||||||
|
{
|
||||||
|
serverUrl = AppHelper.ServerUrl;
|
||||||
|
serverUri = AppHelper.ServerUri;
|
||||||
|
Task<Process> app = AppHelper.StartApp(serverUrl);
|
||||||
|
_driver = AppHelper.GetChromeDriver();
|
||||||
|
serverProcess = app.Result;
|
||||||
|
}
|
||||||
|
|
||||||
|
[Fact]
|
||||||
|
public void AssetsPage_ShouldShowButton()
|
||||||
|
{
|
||||||
|
AppHelper.Login(_driver);
|
||||||
|
AssetsHelper.NavigateToAssetsPage(_driver);
|
||||||
|
_driver.FindElement(By.CssSelector("button[data-bs-target=\"#createAssetModal\"]"));
|
||||||
|
}
|
||||||
|
|
||||||
|
[Fact]
|
||||||
|
public void AssetsPage_ShouldShowCreateViewModal()
|
||||||
|
{
|
||||||
|
AppHelper.Login(_driver);
|
||||||
|
AssetsHelper.NavigateToAssetsPage(_driver);
|
||||||
|
_driver.FindElement(By.CssSelector("button[data-bs-target=\"#createAssetModal\"]")).Click();
|
||||||
|
List<string> ids = ["createName", "createLocationSelect", "createUsersSelect", "createSerialNumber", "createPresetSelect", "createPresetApply", "createType", "createMake", "createModel", "attributesContainer", "addAttributeBtn", "createPurchaseDate", "createPurchaseValue", "createPurchaseAt", "createPurchaseBy"];
|
||||||
|
List<string> css = ["#createAssetModal .btn-primary", "#createAssetModal .btn-secondary"];
|
||||||
|
ids.ForEach(id => _driver.FindElement(By.Id(id)));
|
||||||
|
css.ForEach(selector => _driver.FindElement(By.CssSelector(selector)));
|
||||||
|
}
|
||||||
|
|
||||||
|
[Fact]
|
||||||
|
public void AssetsPage_ShouldCreateAndShowDetailAndUpdateAndDeleteGroup()
|
||||||
|
{
|
||||||
|
AppHelper.Login(_driver);
|
||||||
|
AssetsHelper.NavigateToAssetsPage(_driver);
|
||||||
|
AssetsHelper.CreateAsset(_driver);
|
||||||
|
IWebElement row = _driver.FindElement(By.CssSelector("tr.asset-row:last-of-type"));
|
||||||
|
int id = Convert.ToInt32(row.GetAttribute("data-asset-id"));
|
||||||
|
_driver.ExecuteJavaScript($"$('tr[data-asset-id=\"{id}\"]').click()");
|
||||||
|
AppHelper.AwaitVisible(_driver, By.Id("viewAssetModal"));
|
||||||
|
_driver.FindElement(By.Name("Barcode"));
|
||||||
|
bool noEmptyInputsFound = false;
|
||||||
|
try
|
||||||
|
{
|
||||||
|
_driver.FindElement(By.CssSelector("#viewAssetModal input[value=\"\"]"));
|
||||||
|
} catch (Exception)
|
||||||
|
{
|
||||||
|
noEmptyInputsFound = true;
|
||||||
|
}
|
||||||
|
Assert.True(noEmptyInputsFound);
|
||||||
|
|
||||||
|
AssetsHelper.UpdateAsset(_driver, row);
|
||||||
|
AssetsHelper.DeleteAsset(_driver, row);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void Dispose()
|
||||||
|
{
|
||||||
|
_driver.Quit();
|
||||||
|
serverProcess.Kill();
|
||||||
|
}
|
||||||
|
}
|
||||||
94
tests/Berufsschule_HAM.E2ETests/Helper/AssetsHelper.cs
Normal file
94
tests/Berufsschule_HAM.E2ETests/Helper/AssetsHelper.cs
Normal file
@@ -0,0 +1,94 @@
|
|||||||
|
using System.Diagnostics;
|
||||||
|
using System.Net;
|
||||||
|
using OpenQA.Selenium;
|
||||||
|
using OpenQA.Selenium.Chrome;
|
||||||
|
using OpenQA.Selenium.Support.Extensions;
|
||||||
|
using OpenQA.Selenium.Support.UI;
|
||||||
|
using SeleniumExtras.WaitHelpers;
|
||||||
|
|
||||||
|
namespace Berufsschule_HAM.E2ETests.Helper;
|
||||||
|
|
||||||
|
public static class AssetsHelper
|
||||||
|
{
|
||||||
|
public static void CreateAsset(ChromeDriver driver)
|
||||||
|
{
|
||||||
|
IWebElement createAssetButton = driver.FindElement(By.CssSelector("button[data-bs-target=\"#createAssetModal\"]"));
|
||||||
|
createAssetButton.Click();
|
||||||
|
AppHelper.AwaitVisible(driver, By.Id("createName"));
|
||||||
|
driver.FindElement(By.Id("createName")).SendKeys(AppHelper.GetRandomName());
|
||||||
|
driver.FindElement(By.Id("createLocationSelect-ts-control")).Click();
|
||||||
|
AppHelper.AwaitVisible(driver, By.Id("createLocationSelect-opt-1"));
|
||||||
|
driver.ExecuteJavaScript("document.getElementById(\"createLocationSelect-opt-1\").click()");
|
||||||
|
driver.FindElement(By.Id("createUsersSelect-ts-control")).Click();
|
||||||
|
AppHelper.AwaitVisible(driver, By.Id("createUsersSelect-opt-1"));
|
||||||
|
driver.ExecuteJavaScript("document.getElementById(\"createUsersSelect-opt-1\").click()");
|
||||||
|
driver.FindElement(By.Id("createSerialNumber")).SendKeys(AppHelper.GetRandomName());
|
||||||
|
driver.FindElement(By.Id("createType")).SendKeys(AppHelper.GetRandomName());
|
||||||
|
driver.FindElement(By.Id("createMake")).SendKeys(AppHelper.GetRandomName());
|
||||||
|
driver.FindElement(By.Id("createModel")).SendKeys(AppHelper.GetRandomName());
|
||||||
|
driver.FindElement(By.Id("addAttributeBtn")).Click();
|
||||||
|
driver.FindElement(By.CssSelector("#attributesContainer input[data-attr-name]")).SendKeys(AppHelper.GetRandomName());
|
||||||
|
driver.FindElement(By.CssSelector("#attributesContainer input[data-attr-value]")).SendKeys(AppHelper.GetRandomName());
|
||||||
|
driver.FindElement(By.Id("createPurchaseDate")).Click();
|
||||||
|
driver.FindElement(By.Id("createPurchaseDate")).SendKeys("01011990");
|
||||||
|
driver.FindElement(By.Id("createPurchaseValue")).SendKeys("12345.67");
|
||||||
|
driver.FindElement(By.Id("createPurchaseAt")).SendKeys(AppHelper.GetRandomName());
|
||||||
|
driver.FindElement(By.Id("createPurchaseBy")).SendKeys("admin");
|
||||||
|
IWebElement createButton = driver.FindElement(By.CssSelector("#createAssetModal .modal-footer .btn-primary"));
|
||||||
|
createButton.Click();
|
||||||
|
Assert.True(AppHelper.TryRetryFindSuccessToast(driver));
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void UpdateAsset(ChromeDriver driver, IWebElement row)
|
||||||
|
{
|
||||||
|
int id = Convert.ToInt32(row.GetAttribute("data-asset-id"));
|
||||||
|
IWebElement updateAssetButton = row.FindElement(By.CssSelector($"button[data-bs-target=\"#updateAssetModal\"]"));
|
||||||
|
driver.ExecuteJavaScript($"$('button[data-asset-id=\"{id}\"][data-bs-target=\"#updateAssetModal\"]').click()");
|
||||||
|
|
||||||
|
AppHelper.AwaitVisible(driver, By.Id("updateName"));
|
||||||
|
driver.FindElement(By.Id("updateName")).SendKeys(AppHelper.GetRandomName());
|
||||||
|
driver.ExecuteJavaScript("$(\"#updateLocationSelect-ts-control\").click()");
|
||||||
|
AppHelper.AwaitVisible(driver, By.Id("updateLocationSelect-opt-1"));
|
||||||
|
driver.ExecuteJavaScript("document.getElementById(\"updateLocationSelect-opt-1\").click()");
|
||||||
|
driver.ExecuteJavaScript("$(\"#updateUsersSelect-ts-control\").click()");
|
||||||
|
AppHelper.AwaitVisible(driver, By.Id("updateUsersSelect-opt-1"));
|
||||||
|
driver.ExecuteJavaScript("document.getElementById(\"updateUsersSelect-opt-1\").click()");
|
||||||
|
driver.FindElement(By.Id("updateSerialNumber")).SendKeys(AppHelper.GetRandomName());
|
||||||
|
|
||||||
|
driver.FindElement(By.Id("updateType")).SendKeys(AppHelper.GetRandomName());
|
||||||
|
driver.FindElement(By.Id("updateMake")).SendKeys(AppHelper.GetRandomName());
|
||||||
|
driver.FindElement(By.Id("updateModel")).SendKeys(AppHelper.GetRandomName());
|
||||||
|
driver.ExecuteJavaScript("document.getElementById(\"addAttributeBtn\").click()");
|
||||||
|
|
||||||
|
driver.FindElement(By.CssSelector("#updateAttributesContainer input[data-attr-name]")).SendKeys(AppHelper.GetRandomName());
|
||||||
|
driver.FindElement(By.CssSelector("#updateAttributesContainer input[data-attr-value]")).SendKeys(AppHelper.GetRandomName());
|
||||||
|
|
||||||
|
driver.FindElement(By.Id("updatePurchaseDate")).Click();
|
||||||
|
driver.FindElement(By.Id("updatePurchaseDate")).SendKeys("01011990");
|
||||||
|
|
||||||
|
driver.FindElement(By.Id("updatePurchaseValue")).SendKeys("12345.67");
|
||||||
|
driver.FindElement(By.Id("updatePurchaseAt")).SendKeys(AppHelper.GetRandomName());
|
||||||
|
driver.FindElement(By.Id("updatePurchaseBy")).SendKeys("admin");
|
||||||
|
|
||||||
|
|
||||||
|
IWebElement updateButton = driver.FindElement(By.CssSelector("#updateAssetModal .btn-warning"));
|
||||||
|
updateButton.Click();
|
||||||
|
Assert.True(AppHelper.TryRetryFindSuccessToast(driver));
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
public static void DeleteAsset(ChromeDriver driver, IWebElement row)
|
||||||
|
{
|
||||||
|
int id = Convert.ToInt32(row.GetAttribute("data-asset-id"));
|
||||||
|
driver.ExecuteJavaScript($"$('button[data-asset-id=\"{id}\"][data-bs-target=\"#deleteModal\"]').click()");
|
||||||
|
AppHelper.AwaitVisible(driver, By.Id("deleteModal"));
|
||||||
|
driver.FindElement(By.Id("deleteModal"));
|
||||||
|
driver.ExecuteJavaScript($"$('#deleteModal .btn-danger').click()");
|
||||||
|
Assert.True(AppHelper.TryRetryFindSuccessToast(driver));
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void NavigateToAssetsPage(ChromeDriver driver)
|
||||||
|
{
|
||||||
|
driver.Navigate().GoToUrl(new Uri(AppHelper.ServerUri, "/Home/Assets"));
|
||||||
|
}
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user