| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869 |
- using Microsoft.Playwright;
- using Tests.E2e.Infra;
- using Tests.E2e.PageObjectModels;
- using Xunit.Abstractions;
- namespace Tests.E2e;
- public class AnsibleInventoryTests(
- PlaywrightFixture fixture,
- ITestOutputHelper output) : E2ETestBase(fixture, output) {
- private readonly PlaywrightFixture _fixture = fixture;
- private readonly ITestOutputHelper _output = output;
- [Fact]
- public async Task User_Can_Generate_Ansible_Inventory() {
- (IBrowserContext context, IPage page) = await CreatePageAsync();
- try {
- // Go home
- await page.GotoAsync(_fixture.BaseUrl);
- _output.WriteLine($"URL after Goto: {page.Url}");
- var layout = new MainLayoutPom(page);
- await layout.AssertLoadedAsync();
- // Navigate directly to inventory page
- await page.GotoAsync($"{_fixture.BaseUrl}/ansible/inventory");
- var inventoryPage = new AnsibleInventoryPagePom(page);
- await inventoryPage.AssertVisibleAsync();
- // Configure options
- await inventoryPage.SetGroupByTagsAsync("prod,staging");
- await inventoryPage.SetGroupByLabelsAsync("env");
- await inventoryPage.SetGlobalVarsAsync("""
- ansible_user=ansible
- ansible_python_interpreter=/usr/bin/python3
- """);
- // Generate inventory
- await inventoryPage.GenerateAsync();
- // Assert output contains expected sections
- await inventoryPage.AssertInventoryContainsAsync("[all:vars]");
- await inventoryPage.AssertInventoryContainsAsync("ansible_user=ansible");
- // Ensure no warnings shown
- await inventoryPage.AssertNoWarningsAsync();
- await context.CloseAsync();
- }
- catch (Exception) {
- _output.WriteLine("TEST FAILED — Capturing diagnostics");
- _output.WriteLine($"Current URL: {page.Url}");
- var html = await page.ContentAsync();
- _output.WriteLine("==== DOM SNAPSHOT START ====");
- _output.WriteLine(html);
- _output.WriteLine("==== DOM SNAPSHOT END ====");
- throw;
- }
- finally {
- await context.CloseAsync();
- }
- }
- }
|