HardwareTreePom.cs 5.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182
  1. using Microsoft.Playwright;
  2. namespace Tests.E2e.Pages;
  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. => page.GetByTestId($"hardware-group-{kind}");
  44. public ILocator HardwareGroupTitle(string kind)
  45. => page.GetByTestId($"hardware-group-title-{kind}");
  46. public async Task AssertHardwareGroupExists(string kind)
  47. {
  48. await Assertions.Expect(HardwareGroup(kind)).ToBeVisibleAsync();
  49. }
  50. // -------------------------------------------------
  51. // Hardware Items
  52. // -------------------------------------------------
  53. public ILocator HardwareItem(string hardwareName)
  54. => page.GetByTestId($"hardware-item-{hardwareName}");
  55. public ILocator HardwareLink(string hardwareName)
  56. => page.GetByTestId($"hardware-link-{hardwareName}");
  57. public ILocator HardwareName(string hardwareName)
  58. => page.GetByTestId($"hardware-name-{hardwareName}");
  59. public async Task OpenHardwareAsync(string hardwareName)
  60. {
  61. await HardwareLink(hardwareName).ClickAsync();
  62. await page.WaitForURLAsync($"**/resources/hardware/{hardwareName}");
  63. }
  64. // -------------------------------------------------
  65. // Systems Under Hardware
  66. // -------------------------------------------------
  67. public ILocator SystemList(string hardwareName)
  68. => page.GetByTestId($"system-list-{hardwareName}");
  69. public ILocator SystemItem(string systemName)
  70. => page.GetByTestId($"system-item-{systemName}");
  71. public ILocator SystemLink(string systemName)
  72. => page.GetByTestId($"system-link-{systemName}");
  73. public async Task OpenSystemAsync(string systemName)
  74. {
  75. await SystemLink(systemName).ClickAsync();
  76. await page.WaitForURLAsync($"**/resources/systems/{systemName}");
  77. }
  78. public async Task AssertSystemExists(string systemName)
  79. {
  80. await Assertions.Expect(SystemItem(systemName)).ToBeVisibleAsync();
  81. }
  82. // -------------------------------------------------
  83. // Services Under System
  84. // -------------------------------------------------
  85. public ILocator ServiceList(string systemName)
  86. => page.GetByTestId($"service-list-{systemName}");
  87. public ILocator ServiceItem(string serviceName)
  88. => page.GetByTestId($"service-item-{serviceName}");
  89. public ILocator ServiceLink(string serviceName)
  90. => page.GetByTestId($"service-link-{serviceName}");
  91. public async Task OpenServiceAsync(string serviceName)
  92. {
  93. await ServiceLink(serviceName).ClickAsync();
  94. await page.WaitForURLAsync($"**/resources/services/{serviceName}");
  95. }
  96. public async Task AssertServiceExists(string serviceName)
  97. {
  98. await Assertions.Expect(ServiceItem(serviceName)).ToBeVisibleAsync();
  99. }
  100. // -------------------------------------------------
  101. // Secondary Navigation Actions
  102. // -------------------------------------------------
  103. public async Task GotoServersListAsync()
  104. {
  105. await NavServers.ClickAsync();
  106. await page.WaitForURLAsync("**/servers/list");
  107. }
  108. public async Task GotoSwitchesListAsync()
  109. {
  110. await NavSwitches.ClickAsync();
  111. await page.WaitForURLAsync("**/switches/list");
  112. }
  113. public async Task GotoFirewallsListAsync()
  114. {
  115. await NavFirewalls.ClickAsync();
  116. await page.WaitForURLAsync("**/firewalls/list");
  117. }
  118. public async Task GotoRoutersListAsync()
  119. {
  120. await NavRouters.ClickAsync();
  121. await page.WaitForURLAsync("**/routers/list");
  122. }
  123. public async Task GotoAccessPointsListAsync()
  124. {
  125. await NavAccessPoints.ClickAsync();
  126. await page.WaitForURLAsync("**/accesspoints/list");
  127. }
  128. public async Task GotoUpsListAsync()
  129. {
  130. await NavUps.ClickAsync();
  131. await page.WaitForURLAsync("**/ups/list");
  132. }
  133. public async Task GotoDesktopsListAsync()
  134. {
  135. await NavDesktops.ClickAsync();
  136. await page.WaitForURLAsync("**/desktops/list");
  137. }
  138. public async Task GotoLaptopsListAsync()
  139. {
  140. await NavLaptops.ClickAsync();
  141. await page.WaitForURLAsync("**/laptops/list");
  142. }
  143. }