mirror of
https://github.com/LD-Reborn/Berufsschule_HAM.git
synced 2025-12-20 06:51:55 +00:00
Replaced unreliable sleeps with WebDriverWait
This commit is contained in:
@@ -2,6 +2,8 @@ using System.Diagnostics;
|
||||
using System.Net;
|
||||
using OpenQA.Selenium;
|
||||
using OpenQA.Selenium.Chrome;
|
||||
using OpenQA.Selenium.Support.UI;
|
||||
using SeleniumExtras.WaitHelpers;
|
||||
|
||||
namespace Berufsschule_HAM.E2ETests.Helper;
|
||||
|
||||
@@ -9,6 +11,7 @@ public static class AppHelper
|
||||
{
|
||||
public const string ServerUrl = "http://localhost:5275";
|
||||
public static Uri ServerUri = new(ServerUrl);
|
||||
public static int DefaultTimeout = 5;
|
||||
public static async Task<Process> StartApp(string appUrl)
|
||||
{
|
||||
var startInfo = new ProcessStartInfo
|
||||
@@ -123,4 +126,19 @@ public static class AppHelper
|
||||
throw;
|
||||
}
|
||||
}
|
||||
|
||||
public static void AwaitVisible(ChromeDriver driver, By by)
|
||||
{
|
||||
Timeout(driver).Until(ExpectedConditions.ElementIsVisible(by));
|
||||
}
|
||||
|
||||
public static WebDriverWait Timeout(ChromeDriver driver, int timeout)
|
||||
{
|
||||
return new(driver, TimeSpan.FromSeconds(timeout));
|
||||
}
|
||||
|
||||
public static WebDriverWait Timeout(ChromeDriver driver)
|
||||
{
|
||||
return new(driver, TimeSpan.FromSeconds(DefaultTimeout));
|
||||
}
|
||||
}
|
||||
@@ -3,6 +3,7 @@ using System.Net;
|
||||
using OpenQA.Selenium;
|
||||
using OpenQA.Selenium.Chrome;
|
||||
using OpenQA.Selenium.Support.UI;
|
||||
using SeleniumExtras.WaitHelpers;
|
||||
|
||||
namespace Berufsschule_HAM.E2ETests.Helper;
|
||||
|
||||
@@ -13,7 +14,7 @@ public static class GroupsHelper
|
||||
NavigateToGroupsPage(driver);
|
||||
IWebElement createGroupButton = driver.FindElement(By.CssSelector("button[data-bs-target=\"#createGroupModal\"]"));
|
||||
createGroupButton.Click();
|
||||
Thread.Sleep(500);
|
||||
AppHelper.AwaitVisible(driver, By.Id("cn"));
|
||||
driver.FindElement(By.Id("cn")).SendKeys(cn);
|
||||
driver.FindElement(By.Id("displayname")).SendKeys(displayName);
|
||||
if (canInventorize) driver.FindElement(By.Id("canInventorize")).Click();
|
||||
@@ -32,7 +33,7 @@ public static class GroupsHelper
|
||||
NavigateToGroupsPage(driver);
|
||||
IWebElement updateGroupButton = driver.FindElement(By.CssSelector($"button[data-group-id=\"{cn}\"].btn-update"));
|
||||
AppHelper.ScrollIntoViewAndClick(driver, updateGroupButton);
|
||||
Thread.Sleep(500);
|
||||
AppHelper.AwaitVisible(driver, By.CssSelector("input#groupId"));
|
||||
var cnInput = driver.FindElement(By.CssSelector("input#groupId"));
|
||||
cnInput.Click();
|
||||
cnInput.Clear();
|
||||
@@ -69,7 +70,7 @@ public static class GroupsHelper
|
||||
NavigateToGroupsPage(driver);
|
||||
IWebElement deleteButton = driver.FindElement(By.CssSelector($"button[data-group-id=\"{cn}\"].btn-delete"));
|
||||
AppHelper.ScrollIntoViewAndClick(driver, deleteButton);
|
||||
Thread.Sleep(1000);
|
||||
AppHelper.AwaitVisible(driver, By.Id("deleteModal"));
|
||||
driver.FindElement(By.Id("deleteModal"));
|
||||
IWebElement deleteConfirmButton = driver.FindElement(By.CssSelector("#deleteModal .btn-danger"));
|
||||
deleteConfirmButton.Click();
|
||||
|
||||
@@ -13,7 +13,7 @@ public static class LocationsHelper
|
||||
NavigateToLocationsPage(driver);
|
||||
IWebElement createLocationButton = driver.FindElement(By.CssSelector("button[data-bs-target=\"#createModal\"]"));
|
||||
createLocationButton.Click();
|
||||
Thread.Sleep(500);
|
||||
AppHelper.AwaitVisible(driver, By.Id("createLocationName"));
|
||||
driver.FindElement(By.Id("createLocationName")).SendKeys(name);
|
||||
driver.FindElement(By.Id("createRoomNumber")).SendKeys(room);
|
||||
driver.FindElement(By.Id("createSeat")).SendKeys(seat);
|
||||
@@ -28,7 +28,7 @@ public static class LocationsHelper
|
||||
string selector = $"button.btn-warning[data-location-name=\"{name}\"][data-room-number=\"{room}\"][data-seat=\"{seat}\"]";
|
||||
IWebElement updateLocationButton = driver.FindElement(By.CssSelector(selector));
|
||||
AppHelper.ScrollIntoViewAndClick(driver, updateLocationButton);
|
||||
Thread.Sleep(500);
|
||||
AppHelper.AwaitVisible(driver, By.Id("editLocationName"));
|
||||
List<string[]> ids = [["editLocationName", newName], ["editRoomNumber", newRoom], ["editSeat", newSeat]];
|
||||
ids.ForEach(id =>
|
||||
{
|
||||
@@ -48,7 +48,7 @@ public static class LocationsHelper
|
||||
NavigateToLocationsPage(driver);
|
||||
IWebElement deleteButton = driver.FindElement(By.CssSelector($"button.btn-danger[data-location-id=\"{cn}\"]"));
|
||||
AppHelper.ScrollIntoViewAndClick(driver, deleteButton);
|
||||
Thread.Sleep(1000);
|
||||
AppHelper.AwaitVisible(driver, By.Id("deleteModal"));
|
||||
driver.FindElement(By.Id("deleteModal"));
|
||||
IWebElement deleteConfirmButton = driver.FindElement(By.Id("deleteForm"));
|
||||
deleteConfirmButton.Click();
|
||||
|
||||
Reference in New Issue
Block a user