UpsListPom.cs 3.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136
  1. using Microsoft.Playwright;
  2. namespace Tests.E2e.PageObjectModels;
  3. public class UpsListPom(IPage page)
  4. {
  5. public AddResourceComponent AddUps => new(page, "ups");
  6. public ILocator PageRoot => page.GetByTestId("ups-page-root");
  7. public ILocator PageTitle => page.GetByTestId("ups-page-title");
  8. public ILocator Loading => page.GetByTestId("ups-loading");
  9. public ILocator EmptyState => page.GetByTestId("ups-empty");
  10. public ILocator UpsList => page.GetByTestId("ups-list");
  11. public ILocator AddSection => page.GetByTestId("ups-add-section");
  12. // Must match AddResourceComponent test IDs
  13. public ILocator AddInput => page.GetByTestId("add-ups-input");
  14. public ILocator AddButton => page.GetByTestId("add-ups-button");
  15. // -------------------------------------------------
  16. // Dynamic Ups Items
  17. // -------------------------------------------------
  18. public ILocator UpsItem(string name)
  19. {
  20. return page.GetByTestId($"ups-item-{Sanitize(name)}");
  21. }
  22. public ILocator OpenLink(string name)
  23. {
  24. return UpsItem(name)
  25. .GetByTestId("open-ups-link");
  26. }
  27. public ILocator EditButton(string name)
  28. {
  29. return UpsItem(name)
  30. .GetByTestId("edit-ups-button");
  31. }
  32. public ILocator SaveButton(string name)
  33. {
  34. return UpsItem(name)
  35. .GetByTestId("save-ups-button");
  36. }
  37. public ILocator CancelButton(string name)
  38. {
  39. return UpsItem(name)
  40. .GetByTestId("cancel-ups-button");
  41. }
  42. public ILocator RenameButton(string name)
  43. {
  44. return UpsItem(name)
  45. .GetByTestId("rename-ups-button");
  46. }
  47. public ILocator CloneButton(string name)
  48. {
  49. return UpsItem(name)
  50. .GetByTestId("clone-ups-button");
  51. }
  52. public ILocator DeleteButton(string name)
  53. {
  54. return UpsItem(name)
  55. .GetByTestId("delete-ups-button");
  56. }
  57. // -------------------------------------------------
  58. // Navigation
  59. // -------------------------------------------------
  60. public async Task GotoAsync(string baseUrl)
  61. {
  62. await page.GotoAsync($"{baseUrl}/ups/list");
  63. await AssertLoadedAsync();
  64. }
  65. public async Task AssertLoadedAsync()
  66. {
  67. await Assertions.Expect(PageRoot).ToBeVisibleAsync();
  68. await Assertions.Expect(PageTitle).ToBeVisibleAsync();
  69. }
  70. public async Task WaitForListAsync()
  71. {
  72. await Assertions.Expect(UpsList).ToBeVisibleAsync();
  73. }
  74. // -------------------------------------------------
  75. // Actions
  76. // -------------------------------------------------
  77. public async Task AddUpsAsync(string name)
  78. {
  79. await AddUps.AddAsync(name);
  80. await Assertions.Expect(UpsItem(name))
  81. .ToBeVisibleAsync();
  82. }
  83. public async Task DeleteUpsAsync(string name)
  84. {
  85. await DeleteButton(name).ClickAsync();
  86. await page.GetByTestId("Ups-confirm-modal-confirm").ClickAsync();
  87. await Assertions.Expect(UpsItem(name))
  88. .Not.ToBeVisibleAsync();
  89. }
  90. public async Task OpenUpsAsync(string name)
  91. {
  92. await OpenLink(name).ClickAsync();
  93. await page.WaitForURLAsync($"**/resources/hardware/{name}");
  94. }
  95. public async Task AssertUpsExists(string name)
  96. {
  97. await Assertions.Expect(UpsItem(name))
  98. .ToBeVisibleAsync();
  99. }
  100. public async Task AssertUpsDoesNotExist(string name)
  101. {
  102. await Assertions.Expect(UpsItem(name))
  103. .Not.ToBeVisibleAsync();
  104. }
  105. private static string Sanitize(string value)
  106. {
  107. return value.Replace(" ", "-");
  108. }
  109. }