ServiceCardPom.cs 4.5 KB

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