ServiceCardPom.cs 4.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135
  1. using Microsoft.Playwright;
  2. namespace Tests.E2e.PageObjectModels;
  3. public class ServiceCardPom(IPage page)
  4. {
  5. public TagsPom Tags => new(page);
  6. // -------------------------------------------------
  7. // Root
  8. // -------------------------------------------------
  9. public ILocator Card(string name)
  10. => page.GetByTestId($"service-item-{Sanitize(name)}");
  11. public ILocator Link(string name)
  12. => page.GetByTestId($"service-item-{Sanitize(name)}-link");
  13. // -------------------------------------------------
  14. // Actions
  15. // -------------------------------------------------
  16. public ILocator EditButton(string name)
  17. => Card(name).GetByTestId("edit-service-button");
  18. public ILocator SaveButton(string name)
  19. => Card(name).GetByTestId("save-service-button");
  20. public ILocator CancelButton(string name)
  21. => Card(name).GetByTestId("cancel-service-button");
  22. public ILocator RenameButton(string name)
  23. => Card(name).GetByTestId("rename-service-button");
  24. public ILocator CloneButton(string name)
  25. => Card(name).GetByTestId("clone-service-button");
  26. public ILocator DeleteButton(string name)
  27. => Card(name).GetByTestId("delete-service-button");
  28. // -------------------------------------------------
  29. // Inputs (Edit Mode)
  30. // -------------------------------------------------
  31. public ILocator IpInput(string name)
  32. => Card(name).GetByTestId("service-ip-input");
  33. public ILocator PortInput(string name)
  34. => Card(name).GetByTestId("service-port-input");
  35. public ILocator ProtocolInput(string name)
  36. => Card(name).GetByTestId("service-protocol-input");
  37. public ILocator UrlInput(string name)
  38. => Card(name).GetByTestId("service-url-input");
  39. public ILocator RunsOnButton(string name)
  40. => Card(name).GetByTestId("service-runson-button");
  41. // -------------------------------------------------
  42. // View Mode Values
  43. // -------------------------------------------------
  44. public ILocator IpValue(string name)
  45. => Card(name).GetByTestId("service-ip-value");
  46. public ILocator PortValue(string name)
  47. => Card(name).GetByTestId("service-port-value");
  48. public ILocator ProtocolValue(string name)
  49. => Card(name).GetByTestId("service-protocol-value");
  50. public ILocator UrlValue(string name)
  51. => Card(name).GetByTestId("service-url-value");
  52. // -------------------------------------------------
  53. // Notes
  54. // -------------------------------------------------
  55. public ILocator NotesViewer
  56. => page.GetByTestId("service-notes-viewer-container");
  57. public ILocator NotesEditor
  58. => page.GetByTestId("service-notes-editor-container");
  59. // -------------------------------------------------
  60. // Confirm Modal
  61. // -------------------------------------------------
  62. public ILocator ConfirmDeleteButton
  63. => page.GetByTestId("service-delete-confirm-modal-confirm");
  64. // -------------------------------------------------
  65. // High-Level Actions
  66. // -------------------------------------------------
  67. public async Task AssertVisibleAsync(string name)
  68. {
  69. await Assertions.Expect(Card(name)).ToBeVisibleAsync();
  70. }
  71. public async Task BeginEditAsync(string name)
  72. => await EditButton(name).ClickAsync();
  73. public async Task SaveAsync(string name)
  74. => await SaveButton(name).ClickAsync();
  75. public async Task CancelAsync(string name)
  76. => await CancelButton(name).ClickAsync();
  77. public async Task RenameAsync(string currentName, string newName)
  78. {
  79. await RenameButton(currentName).ClickAsync();
  80. await page.GetByTestId("service-rename-string-value-modal-input").FillAsync(newName);
  81. await page.GetByTestId("service-rename-string-value-modal-submit").ClickAsync();
  82. await page.WaitForURLAsync($"**/resources/services/{newName}");
  83. }
  84. public async Task CloneAsync(string currentName, string cloneName)
  85. {
  86. await CloneButton(currentName).ClickAsync();
  87. await page.GetByTestId("service-clone-string-value-modal-input").FillAsync(cloneName);
  88. await page.GetByTestId("service-clone-string-value-modal-submit").ClickAsync();
  89. await page.WaitForURLAsync($"**/resources/services/{cloneName}");
  90. }
  91. public async Task DeleteAsync(string name)
  92. {
  93. await DeleteButton(name).ClickAsync();
  94. await ConfirmDeleteButton.ClickAsync();
  95. }
  96. private static string Sanitize(string value)
  97. => value.Replace(" ", "-");
  98. }