UpsCardPom.cs 5.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166
  1. using Microsoft.Playwright;
  2. namespace Tests.E2e.PageObjectModels;
  3. public class UpsCardPom(IPage page) {
  4. public TagsPom Tags => new(page);
  5. public LabelsPom Labels => new(page);
  6. public PortsPom Ports => new(page);
  7. private const string _portsPrefix = "ups-ports";
  8. // -------------------------------------------------
  9. // Notes
  10. // -------------------------------------------------
  11. public ILocator NotesViewer
  12. => page.GetByTestId("ups-notes-viewer-container");
  13. public ILocator NotesEditor
  14. => page.GetByTestId("ups-notes-editor-container");
  15. // -------------------------------------------------
  16. // Confirm Modal (TestIdPrefix="Ups")
  17. // -------------------------------------------------
  18. public ILocator ConfirmDeleteButton
  19. => page.GetByTestId("Ups-confirm-modal-confirm");
  20. // -------------------------------------------------
  21. // Rename Modal (TestIdPrefix="ups-rename")
  22. // -------------------------------------------------
  23. public ILocator RenameInput
  24. => page.GetByTestId("ups-rename-string-value-modal-input");
  25. public ILocator RenameSubmit
  26. => page.GetByTestId("ups-rename-string-value-modal-submit");
  27. // -------------------------------------------------
  28. // Clone Modal (TestIdPrefix="ups-clone")
  29. // -------------------------------------------------
  30. public ILocator CloneInput
  31. => page.GetByTestId("ups-clone-string-value-modal-input");
  32. public ILocator CloneSubmit
  33. => page.GetByTestId("ups-clone-string-value-modal-submit");
  34. // -------------------------------------------------
  35. // Root
  36. // -------------------------------------------------
  37. private static string Sanitize(string value)
  38. => value.Replace(" ", "-");
  39. public ILocator Card(string name)
  40. => page.GetByTestId($"ups-item-{Sanitize(name)}");
  41. public ILocator Link(string name)
  42. => page.GetByTestId($"ups-item-{Sanitize(name)}-link");
  43. // -------------------------------------------------
  44. // Action Buttons
  45. // -------------------------------------------------
  46. public ILocator EditButton(string name)
  47. => Card(name).GetByTestId("edit-ups-button");
  48. public ILocator SaveButton(string name)
  49. => Card(name).GetByTestId("save-ups-button");
  50. public ILocator CancelButton(string name)
  51. => Card(name).GetByTestId("cancel-ups-button");
  52. public ILocator RenameButton(string name)
  53. => Card(name).GetByTestId("rename-ups-button");
  54. public ILocator CloneButton(string name)
  55. => Card(name).GetByTestId("clone-ups-button");
  56. public ILocator DeleteButton(string name)
  57. => Card(name).GetByTestId("delete-ups-button");
  58. // -------------------------------------------------
  59. // Edit Inputs
  60. // -------------------------------------------------
  61. public ILocator ModelInput(string name)
  62. => Card(name).GetByTestId("ups-model-input");
  63. public ILocator CapacityInput(string name)
  64. => Card(name).GetByTestId("ups-capacity-input");
  65. // -------------------------------------------------
  66. // View Values
  67. // -------------------------------------------------
  68. public ILocator ModelValue(string name)
  69. => Card(name).GetByTestId("ups-model-value");
  70. public ILocator CapacityValue(string name)
  71. => Card(name).GetByTestId("ups-capacity-value");
  72. // -------------------------------------------------
  73. // Assertions
  74. // -------------------------------------------------
  75. public async Task AssertVisibleAsync(string name) => await Assertions.Expect(Card(name)).ToBeVisibleAsync();
  76. // -------------------------------------------------
  77. // High-Level Actions
  78. // -------------------------------------------------
  79. public async Task BeginEditAsync(string name)
  80. => await EditButton(name).ClickAsync();
  81. public async Task SaveAsync(string name)
  82. => await SaveButton(name).ClickAsync();
  83. public async Task CancelAsync(string name)
  84. => await CancelButton(name).ClickAsync();
  85. public async Task RenameAsync(string currentName, string newName) {
  86. await RenameButton(currentName).ClickAsync();
  87. await RenameInput.FillAsync(newName);
  88. await RenameSubmit.ClickAsync();
  89. await page.WaitForURLAsync($"**/resources/hardware/{newName}");
  90. }
  91. public async Task CloneAsync(string currentName, string cloneName) {
  92. await CloneButton(currentName).ClickAsync();
  93. await CloneInput.FillAsync(cloneName);
  94. await CloneSubmit.ClickAsync();
  95. await page.WaitForURLAsync($"**/resources/hardware/{cloneName}");
  96. }
  97. public async Task DeleteAsync(string name) {
  98. await DeleteButton(name).ClickAsync();
  99. await ConfirmDeleteButton.ClickAsync();
  100. }
  101. // -------------------------------------------------
  102. // Ports
  103. // -------------------------------------------------
  104. public ILocator PortGroupSection => Ports.Root(_portsPrefix);
  105. public ILocator PortGroup(int index) => Ports.PortGroup(_portsPrefix, index);
  106. public ILocator Port(int groupIndex, int portIndex)
  107. => Ports.Port(_portsPrefix, groupIndex, portIndex);
  108. public async Task AddPortGroupAsync(string type, string speed, int count)
  109. => await Ports.AddPortGroupAsync(_portsPrefix, type, speed, count);
  110. public async Task AssertPortGroupVisibleAsync(int index)
  111. => await Ports.AssertPortGroupVisibleAsync(_portsPrefix, index);
  112. public async Task AssertPortVisibleAsync(int groupIndex, int portIndex)
  113. => await Ports.AssertPortVisibleAsync(_portsPrefix, groupIndex, portIndex);
  114. }