PortsPom.cs 5.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159
  1. namespace Tests.E2e.PageObjectModels;
  2. using Microsoft.Playwright;
  3. public class PortsPom(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 = "accesspoint-ports";
  8. // -------------------------------------------------
  9. // Root
  10. // -------------------------------------------------
  11. public ILocator Root(string testIdPrefix)
  12. => page.GetByTestId($"{testIdPrefix}-port-group-section");
  13. public ILocator AddButton(string testIdPrefix)
  14. => page.GetByTestId($"{testIdPrefix}-port-group-add");
  15. // -------------------------------------------------
  16. // Port Groups
  17. // -------------------------------------------------
  18. public ILocator PortGroup(string testIdPrefix, int index)
  19. => page.GetByTestId($"{testIdPrefix}-port-group-item-{index}");
  20. public ILocator EditPortGroupButton(string testIdPrefix, int index)
  21. => page.GetByTestId($"{testIdPrefix}-port-group-edit-{index}");
  22. public ILocator PortsContainer(string testIdPrefix, int index)
  23. => page.GetByTestId($"{testIdPrefix}-port-group-ports-{index}");
  24. // -------------------------------------------------
  25. // Individual Ports
  26. // -------------------------------------------------
  27. public ILocator Port(string testIdPrefix, int groupIndex, int portIndex)
  28. => page.GetByTestId($"{testIdPrefix}-port-group-visualizer-{groupIndex}-port-{portIndex}");
  29. // -------------------------------------------------
  30. // Port Modal
  31. // -------------------------------------------------
  32. public ILocator PortModal(string testIdPrefix)
  33. => page.GetByTestId($"{testIdPrefix}-port-group-port-modal");
  34. // -------------------------------------------------
  35. // Connection Modal
  36. // -------------------------------------------------
  37. /// <summary>
  38. /// A resource card mounts PortConnectionModal under its ports prefix,
  39. /// so the modal's own test ids are built from "{prefix}-port-group".
  40. /// </summary>
  41. public ConnectionModalPom ConnectionModalFor(string testIdPrefix)
  42. => new(page, $"{testIdPrefix}-port-group");
  43. public ILocator ConnectionModal(string testIdPrefix)
  44. => ConnectionModalFor(testIdPrefix).Container;
  45. public ILocator ResourceASelect(string testIdPrefix)
  46. => ConnectionModalFor(testIdPrefix).ResourceASelect;
  47. public ILocator GroupASelect(string testIdPrefix)
  48. => ConnectionModalFor(testIdPrefix).GroupASelect;
  49. public ILocator PortASelect(string testIdPrefix)
  50. => ConnectionModalFor(testIdPrefix).PortASelect;
  51. public ILocator ResourceBSelect(string testIdPrefix)
  52. => ConnectionModalFor(testIdPrefix).ResourceBSelect;
  53. public ILocator GroupBSelect(string testIdPrefix)
  54. => ConnectionModalFor(testIdPrefix).GroupBSelect;
  55. public ILocator PortBSelect(string testIdPrefix)
  56. => ConnectionModalFor(testIdPrefix).PortBSelect;
  57. public ILocator SubmitConnection(string testIdPrefix)
  58. => ConnectionModalFor(testIdPrefix).SubmitButton;
  59. public ILocator LabelInput(string testIdPrefix)
  60. => ConnectionModalFor(testIdPrefix).LabelInput;
  61. // -------------------------------------------------
  62. // Assertions
  63. // -------------------------------------------------
  64. public async Task AssertPortGroupVisibleAsync(string prefix, int index)
  65. => await Assertions.Expect(PortGroup(prefix, index)).ToBeVisibleAsync();
  66. public async Task AssertPortVisibleAsync(string prefix, int groupIndex, int portIndex)
  67. => await Assertions.Expect(Port(prefix, groupIndex, portIndex)).ToBeVisibleAsync();
  68. // -------------------------------------------------
  69. // Actions
  70. // -------------------------------------------------
  71. public async Task AddPortGroupAsync(string prefix) {
  72. await AddButton(prefix).ClickAsync();
  73. await Assertions.Expect(PortModal(prefix)).ToBeVisibleAsync();
  74. }
  75. public async Task OpenConnectionFromPortAsync(string prefix, int groupIndex, int portIndex) {
  76. await Port(prefix, groupIndex, portIndex).ClickAsync();
  77. await Assertions.Expect(ConnectionModal(prefix)).ToBeVisibleAsync();
  78. }
  79. public async Task CreateConnectionAsync(
  80. string prefix,
  81. string resourceA,
  82. string groupA,
  83. string portA,
  84. string resourceB,
  85. string groupB,
  86. string portB,
  87. string? label = null)
  88. => await ConnectionModalFor(prefix).CreateConnectionAsync(
  89. resourceA, groupA, portA, resourceB, groupB, portB, label);
  90. // -------------------------------------------------
  91. // Port Modal Fields
  92. // -------------------------------------------------
  93. public ILocator PortTypeSelect(string prefix)
  94. => page.GetByTestId($"{prefix}-port-group-port-modal-type-input");
  95. public ILocator PortSpeedSelect(string prefix)
  96. => page.GetByTestId($"{prefix}-port-group-port-modal-speed-input");
  97. public ILocator PortCountInput(string prefix)
  98. => page.GetByTestId($"{prefix}-port-group-port-modal-count-input");
  99. public ILocator PortSubmit(string prefix)
  100. => page.GetByTestId($"{prefix}-port-group-port-modal-submit");
  101. public ILocator PortCancel(string prefix)
  102. => page.GetByTestId($"{prefix}-port-group-port-modal-cancel");
  103. public async Task AddPortGroupAsync(
  104. string prefix,
  105. string type,
  106. string speed,
  107. int count) {
  108. await AddButton(prefix).ClickAsync();
  109. await Assertions.Expect(PortModal(prefix)).ToBeVisibleAsync();
  110. await PortTypeSelect(prefix).SelectOptionAsync(
  111. new SelectOptionValue { Label = type });
  112. await PortSpeedSelect(prefix).FillAsync(speed.ToString());
  113. await PortCountInput(prefix).FillAsync(count.ToString());
  114. await PortSubmit(prefix).ClickAsync();
  115. }
  116. }