AccessPointListPom.cs 3.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798
  1. using Microsoft.Playwright;
  2. namespace Tests.E2e.PageObjectModels;
  3. public class AccessPointsListPom(IPage page) {
  4. public AddResourceComponent AddAccessPoint => new(page, "accesspoint");
  5. public ILocator PageRoot => page.GetByTestId("accesspoints-page-root");
  6. public ILocator PageTitle => page.GetByTestId("accesspoints-page-title");
  7. public ILocator Loading => page.GetByTestId("accesspoints-loading");
  8. public ILocator EmptyState => page.GetByTestId("accesspoints-empty");
  9. public ILocator AccessPointsList => page.GetByTestId("accesspoints-list");
  10. public ILocator AddSection => page.GetByTestId("accesspoints-add-section");
  11. public ILocator AddInput => page.GetByTestId("add-accesspoint-input");
  12. public ILocator AddButton => page.GetByTestId("add-accesspoint-button");
  13. // -------------------------------------------------
  14. // Dynamic AccessPoint Items
  15. // -------------------------------------------------
  16. public ILocator AccessPointItem(string name) => page.GetByTestId($"accesspoint-item-{Sanitize(name)}");
  17. public ILocator AccessPointItemLink(string name) => page.GetByTestId($"open-accesspoint-{Sanitize(name)}-link");
  18. public ILocator DeleteButton(string name) {
  19. return AccessPointItem(name)
  20. .GetByTestId("delete-accesspoint-button");
  21. }
  22. public ILocator EditButton(string name) {
  23. return AccessPointItem(name)
  24. .GetByTestId("edit-accesspoint-button");
  25. }
  26. public ILocator RenameButton(string name) {
  27. return AccessPointItem(name)
  28. .GetByTestId("rename-accesspoint-button");
  29. }
  30. public ILocator CloneButton(string name) {
  31. return AccessPointItem(name)
  32. .GetByTestId("clone-accesspoint-button");
  33. }
  34. // -------------------------------------------------
  35. // Navigation
  36. // -------------------------------------------------
  37. public async Task GotoAsync(string baseUrl) {
  38. await page.GotoAsync($"{baseUrl}/accesspoints/list");
  39. await AssertLoadedAsync();
  40. }
  41. public async Task AssertLoadedAsync() {
  42. await Assertions.Expect(PageRoot).ToBeVisibleAsync();
  43. await Assertions.Expect(PageTitle).ToBeVisibleAsync();
  44. }
  45. public async Task WaitForListAsync() => await Assertions.Expect(AccessPointsList).ToBeVisibleAsync();
  46. // -------------------------------------------------
  47. // Actions
  48. // -------------------------------------------------
  49. public async Task AddAccessPointAsync(string name) {
  50. await AddAccessPoint.AddAsync(name);
  51. await Assertions.Expect(AccessPointItem(name))
  52. .ToBeVisibleAsync();
  53. }
  54. public async Task DeleteAccessPointAsync(string name) {
  55. await DeleteButton(name).ClickAsync();
  56. await page.GetByTestId("AccessPoint-confirm-modal-confirm").ClickAsync();
  57. await Assertions.Expect(AccessPointItem(name))
  58. .Not.ToBeVisibleAsync();
  59. }
  60. public async Task OpenAccessPointAsync(string name) {
  61. await AccessPointItemLink(name).ClickAsync();
  62. await page.WaitForURLAsync($"**/resources/hardware/{name}");
  63. }
  64. public async Task AssertAccessPointExists(string name) {
  65. await Assertions.Expect(AccessPointItem(name))
  66. .ToBeVisibleAsync();
  67. }
  68. public async Task AssertAccessPointDoesNotExist(string name) {
  69. await Assertions.Expect(AccessPointItem(name))
  70. .Not.ToBeVisibleAsync();
  71. }
  72. private static string Sanitize(string value) => value.Replace(" ", "-");
  73. }