Converting Tests back to C# but still with Playwright

This commit is contained in:
2026-06-03 14:45:18 -04:00
parent 85834466f1
commit 46150d3a69
209 changed files with 1503 additions and 683 deletions
+115
View File
@@ -0,0 +1,115 @@
using Microsoft.Playwright.NUnit;
using NUnit.Framework;
namespace Tests.Specs;
[Parallelizable(ParallelScope.Self)]
[FixtureLifeCycle(LifeCycle.SingleInstance)]
public class BuildCalculatorTests : PageTest
{
private Helpers.Website _website = null!;
[SetUp]
public void CreateWebsite() => _website = new Helpers.Website(Page);
[Test]
public async Task AddEntitiesViaKeyboardQWE()
{
var calc = _website.BuildCalculatorPage;
await calc.GotoAsync();
await calc.Filter.SelectFactionAsync("Q'Rath");
await calc.Filter.SelectImmortalAsync("Orzum");
await calc.Hotkeys.ClickKeyAsync("TAB");
var keyMap = new Dictionary<string, string> { ["Q"] = "q", ["W"] = "w", ["E"] = "e", ["TAB"] = "Tab" };
foreach (var key in new[] { "Q", "W", "E", "TAB" })
{
var entityNames = await calc.Hotkeys.GetEntityNamesOnKeyAsync(key);
if (entityNames.Count == 0) continue;
await Page.Keyboard.PressAsync(keyMap[key]);
var viewName = await calc.EntityView.GetEntityNameAsync();
Assert.That(viewName, Is.Not.Null.And.Not.Empty);
Assert.That(entityNames, Does.Contain(viewName));
}
}
[Test]
public async Task AddEntitiesViaHotkeysClickTABQWE()
{
var calc = _website.BuildCalculatorPage;
await calc.GotoAsync();
await calc.Filter.SelectFactionAsync("Q'Rath");
await calc.Filter.SelectImmortalAsync("Orzum");
foreach (var key in new[] { "TAB", "Q", "W", "E" })
{
var entityNames = await calc.Hotkeys.GetEntityNamesOnKeyAsync(key);
if (entityNames.Count == 0) continue;
await calc.Hotkeys.ClickKeyAsync(key);
var viewName = await calc.EntityView.GetEntityNameAsync();
Assert.That(viewName, Is.Not.Null.And.Not.Empty);
Assert.That(entityNames, Does.Contain(viewName));
}
}
[Test]
public async Task AddAcropolisViaQVerifyEntityViewAndTimelineThenClear()
{
var calc = _website.BuildCalculatorPage;
await calc.GotoAsync();
await calc.Filter.SelectFactionAsync("Q'Rath");
await calc.Filter.SelectImmortalAsync("Orzum");
Assert.That(await calc.Timeline.ContainsEntityAsync("Acropolis"), Is.False);
await calc.Hotkeys.ClickKeyAsync("Q");
Assert.That(await calc.EntityView.GetEntityNameAsync(), Is.EqualTo("Acropolis"));
Assert.That(await calc.Timeline.ContainsEntityAsync("Acropolis"), Is.True);
await calc.ClickClearBuildOrderAsync();
await Task.Delay(1000);
Assert.That(await calc.Timeline.ContainsEntityAsync("Acropolis"), Is.False);
Assert.That(await calc.EntityView.GetEntityNameAsync(), Is.Null);
}
[Test]
public async Task MissingRequirementsToastWhenBuildingSoulFoundryWithoutLegionHall()
{
var calc = _website.BuildCalculatorPage;
await calc.GotoAsync();
await calc.Filter.SelectFactionAsync("Q'Rath");
await calc.Filter.SelectImmortalAsync("Orzum");
await calc.Hotkeys.ClickKeyAsync("E");
var hasToast = await calc.Toast.HasToastContainingAsync("Missing Requirements");
Assert.That(hasToast, Is.True);
}
[Test]
public async Task NotEnoughEtherToastWhenBuildingSoulFoundryAfterLegionHall()
{
var calc = _website.BuildCalculatorPage;
await calc.GotoAsync();
await calc.Filter.SelectFactionAsync("Q'Rath");
await calc.Filter.SelectImmortalAsync("Orzum");
await calc.Hotkeys.ClickKeyAsync("W");
await calc.Hotkeys.ClickKeyAsync("E");
var hasToast = await calc.Toast.HasToastContainingAsync("Not Enough Ether");
Assert.That(hasToast, Is.True);
}
}