HardwareTreePom.cs 6.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204
  1. using Microsoft.Playwright;
  2. namespace Tests.E2e.PageObjectModels;
  3. public class HardwareTreePom(IPage page)
  4. {
  5. // -------------------------------------------------
  6. // Root & State
  7. // -------------------------------------------------
  8. public ILocator PageRoot => page.GetByTestId("hardware-page-root");
  9. public ILocator PageTitle => page.GetByTestId("hardware-page-title");
  10. public ILocator SubNav => page.GetByTestId("hardware-subnav");
  11. public ILocator Loading => page.GetByTestId("hardware-loading");
  12. public ILocator EmptyState => page.GetByTestId("hardware-empty");
  13. public ILocator Tree => page.GetByTestId("hardware-tree");
  14. // -------------------------------------------------
  15. // Navigation
  16. // -------------------------------------------------
  17. public ILocator NavServers => page.GetByTestId("nav-servers");
  18. public ILocator NavSwitches => page.GetByTestId("nav-switches");
  19. public ILocator NavFirewalls => page.GetByTestId("nav-firewalls");
  20. public ILocator NavRouters => page.GetByTestId("nav-routers");
  21. public ILocator NavAccessPoints => page.GetByTestId("nav-accesspoints");
  22. public ILocator NavUps => page.GetByTestId("nav-ups");
  23. public ILocator NavDesktops => page.GetByTestId("nav-desktops");
  24. public ILocator NavLaptops => page.GetByTestId("nav-laptops");
  25. public async Task GotoAsync(string baseUrl)
  26. {
  27. await page.GotoAsync($"{baseUrl}/hardware/tree");
  28. await AssertLoadedAsync();
  29. }
  30. public async Task AssertLoadedAsync()
  31. {
  32. await Assertions.Expect(PageRoot).ToBeVisibleAsync();
  33. await Assertions.Expect(PageTitle).ToBeVisibleAsync();
  34. }
  35. public async Task WaitForTreeAsync()
  36. {
  37. await Assertions.Expect(Tree).ToBeVisibleAsync();
  38. }
  39. // -------------------------------------------------
  40. // Hardware Groups
  41. // -------------------------------------------------
  42. public ILocator HardwareGroup(string kind)
  43. {
  44. return page.GetByTestId($"hardware-group-{kind}");
  45. }
  46. public ILocator HardwareGroupTitle(string kind)
  47. {
  48. return page.GetByTestId($"hardware-group-title-{kind}");
  49. }
  50. public async Task AssertHardwareGroupExists(string kind)
  51. {
  52. await Assertions.Expect(HardwareGroup(kind)).ToBeVisibleAsync();
  53. }
  54. // -------------------------------------------------
  55. // Hardware Items
  56. // -------------------------------------------------
  57. public ILocator HardwareItem(string hardwareName)
  58. {
  59. return page.GetByTestId($"hardware-item-{hardwareName}");
  60. }
  61. public ILocator HardwareLink(string hardwareName)
  62. {
  63. return page.GetByTestId($"hardware-link-{hardwareName}");
  64. }
  65. public ILocator HardwareName(string hardwareName)
  66. {
  67. return page.GetByTestId($"hardware-name-{hardwareName}");
  68. }
  69. public async Task OpenHardwareAsync(string hardwareName)
  70. {
  71. await HardwareLink(hardwareName).ClickAsync();
  72. await page.WaitForURLAsync($"**/resources/hardware/{hardwareName}");
  73. }
  74. // -------------------------------------------------
  75. // Systems Under Hardware
  76. // -------------------------------------------------
  77. public ILocator SystemList(string hardwareName)
  78. {
  79. return page.GetByTestId($"system-list-{hardwareName}");
  80. }
  81. public ILocator SystemItem(string systemName)
  82. {
  83. return page.GetByTestId($"system-item-{systemName}");
  84. }
  85. public ILocator SystemLink(string systemName)
  86. {
  87. return page.GetByTestId($"system-link-{systemName}");
  88. }
  89. public async Task OpenSystemAsync(string systemName)
  90. {
  91. await SystemLink(systemName).ClickAsync();
  92. await page.WaitForURLAsync($"**/resources/systems/{systemName}");
  93. }
  94. public async Task AssertSystemExists(string systemName)
  95. {
  96. await Assertions.Expect(SystemItem(systemName)).ToBeVisibleAsync();
  97. }
  98. // -------------------------------------------------
  99. // Services Under System
  100. // -------------------------------------------------
  101. public ILocator ServiceList(string systemName)
  102. {
  103. return page.GetByTestId($"service-list-{systemName}");
  104. }
  105. public ILocator ServiceItem(string serviceName)
  106. {
  107. return page.GetByTestId($"service-item-{serviceName}");
  108. }
  109. public ILocator ServiceLink(string serviceName)
  110. {
  111. return page.GetByTestId($"service-link-{serviceName}");
  112. }
  113. public async Task OpenServiceAsync(string serviceName)
  114. {
  115. await ServiceLink(serviceName).ClickAsync();
  116. await page.WaitForURLAsync($"**/resources/services/{serviceName}");
  117. }
  118. public async Task AssertServiceExists(string serviceName)
  119. {
  120. await Assertions.Expect(ServiceItem(serviceName)).ToBeVisibleAsync();
  121. }
  122. // -------------------------------------------------
  123. // Secondary Navigation Actions
  124. // -------------------------------------------------
  125. public async Task GotoServersListAsync()
  126. {
  127. await NavServers.ClickAsync();
  128. await page.WaitForURLAsync("**/servers/list");
  129. }
  130. public async Task GotoSwitchesListAsync()
  131. {
  132. await NavSwitches.ClickAsync();
  133. await page.WaitForURLAsync("**/switches/list");
  134. }
  135. public async Task GotoFirewallsListAsync()
  136. {
  137. await NavFirewalls.ClickAsync();
  138. await page.WaitForURLAsync("**/firewalls/list");
  139. }
  140. public async Task GotoRoutersListAsync()
  141. {
  142. await NavRouters.ClickAsync();
  143. await page.WaitForURLAsync("**/routers/list");
  144. }
  145. public async Task GotoAccessPointsListAsync()
  146. {
  147. await NavAccessPoints.ClickAsync();
  148. await page.WaitForURLAsync("**/accesspoints/list");
  149. }
  150. public async Task GotoUpsListAsync()
  151. {
  152. await NavUps.ClickAsync();
  153. await page.WaitForURLAsync("**/ups/list");
  154. }
  155. public async Task GotoDesktopsListAsync()
  156. {
  157. await NavDesktops.ClickAsync();
  158. await page.WaitForURLAsync("**/desktops/list");
  159. }
  160. public async Task GotoLaptopsListAsync()
  161. {
  162. await NavLaptops.ClickAsync();
  163. await page.WaitForURLAsync("**/laptops/list");
  164. }
  165. }