ServiceTests.cs 1.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263
  1. using Microsoft.Playwright;
  2. using Shared.Rcl.Systems;
  3. using Tests.E2e.PageObjectModels;
  4. using Tests.E2e.Pages;
  5. using Xunit.Abstractions;
  6. namespace Tests.E2e;
  7. public class ServiceTests(
  8. PlaywrightFixture fixture,
  9. ITestOutputHelper output) :E2ETestBase(fixture, output)
  10. {
  11. private readonly ITestOutputHelper _output = output;
  12. [Fact]
  13. public async Task User_Can_Add_And_Delete_System()
  14. {
  15. var (context, page) = await CreatePageAsync();
  16. try
  17. {
  18. // Go home
  19. await page.GotoAsync(fixture.BaseUrl);
  20. _output.WriteLine($"URL after Goto: {page.Url}");
  21. var layout = new MainLayoutPom(page);
  22. await layout.AssertLoadedAsync();
  23. await layout.GotoServicesAsync();
  24. var systems = new ServicesListPom(page);
  25. var serviceName = $"e2e-service-{Guid.NewGuid():N}"[..12];
  26. await systems.AddServiceAsync(serviceName);
  27. await systems.AssertServiceExists(serviceName);
  28. await systems.DeleteServiceAsync(serviceName);
  29. await systems.AssertServiceDoesNotExist(serviceName);
  30. await context.CloseAsync();
  31. }
  32. catch (Exception ex)
  33. {
  34. _output.WriteLine("TEST FAILED — Capturing diagnostics");
  35. _output.WriteLine($"Current URL: {page.Url}");
  36. var html = await page.ContentAsync();
  37. _output.WriteLine("==== DOM SNAPSHOT START ====");
  38. _output.WriteLine(html);
  39. _output.WriteLine("==== DOM SNAPSHOT END ====");
  40. throw;
  41. }
  42. finally
  43. {
  44. await context.CloseAsync();
  45. }
  46. }
  47. }