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
@@ -0,0 +1,54 @@
namespace Tests.Pages.BuildCalculator;
public class HotkeyViewerComponent
{
private readonly Website _website;
public HotkeyViewerComponent(Website website) => _website = website;
public ILocator KeyContainer => _website.Locator(".keyContainer");
public async Task<ILocator?> FindKeyButtonAsync(string keyLabel)
{
var upper = keyLabel.ToUpperInvariant();
var buttons = KeyContainer.Locator("> div > div");
var count = await buttons.CountAsync();
for (int i = 0; i < count; i++)
{
var btn = buttons.Nth(i);
var text = (await btn.TextContentAsync())?.Trim().ToUpperInvariant() ?? "";
if (text.StartsWith(upper)) return btn;
}
return null;
}
public async Task ClickKeyAsync(string keyText)
{
var btn = await FindKeyButtonAsync(keyText);
if (btn is null) throw new InvalidOperationException($"Key \"{keyText}\" not found");
await btn.ClickAsync(new() { Force = true });
}
public async Task<string?> GetFirstEntityNameAsync(string keyText)
{
var btn = await FindKeyButtonAsync(keyText);
if (btn is null) return null;
var entities = btn.Locator("> div");
if (await entities.CountAsync() == 0) return null;
return (await entities.First.TextContentAsync())?.Trim();
}
public async Task<IReadOnlyList<string>> GetEntityNamesOnKeyAsync(string keyText)
{
var btn = await FindKeyButtonAsync(keyText);
if (btn is null) return Array.Empty<string>();
var entities = btn.Locator("> div");
var count = await entities.CountAsync();
var names = new List<string>();
for (int i = 0; i < count; i++)
{
var text = (await entities.Nth(i).TextContentAsync())?.Trim();
if (!string.IsNullOrEmpty(text)) names.Add(text);
}
return names;
}
}