feat: Enhance end-to-end testing framework with improved server setup and UI validation

This commit is contained in:
2025-10-21 09:04:06 +02:00
parent f020d276bc
commit 9114b584c2
11 changed files with 138 additions and 71 deletions

View File

@@ -6,8 +6,8 @@ from playwright.sync_api import Page, expect
def test_costs_form_loads(page: Page):
"""Verify the costs form page loads correctly."""
page.goto("/ui/costs")
expect(page).to_have_title("CalMiner Costs")
expect(page.locator("h1")).to_have_text("Costs")
expect(page).to_have_title("Costs · CalMiner")
expect(page.locator("h2:has-text('Add CAPEX Entry')")).to_be_visible()
def test_create_capex_and_opex_items(page: Page):
@@ -25,9 +25,9 @@ def test_create_capex_and_opex_items(page: Page):
# Create a CAPEX item.
capex_desc = "Initial drilling equipment"
page.select_option("select[name='scenario_id']", label=scenario_name)
page.fill("input[name='description']", capex_desc)
page.fill("input[name='amount']", "150000")
page.select_option("#capex-form-scenario", label=scenario_name)
page.fill("#capex-form-description", capex_desc)
page.fill("#capex-form-amount", "150000")
page.click("#capex-form button[type='submit']")
with page.expect_response("**/api/costs/capex") as response_info:
@@ -36,9 +36,9 @@ def test_create_capex_and_opex_items(page: Page):
# Create an OPEX item.
opex_desc = "Monthly fuel costs"
page.select_option("select[name='scenario_id']", label=scenario_name)
page.fill("input[name='description']", opex_desc)
page.fill("input[name='amount']", "25000")
page.select_option("#opex-form-scenario", label=scenario_name)
page.fill("#opex-form-description", opex_desc)
page.fill("#opex-form-amount", "25000")
page.click("#opex-form button[type='submit']")
with page.expect_response("**/api/costs/opex") as response_info:
@@ -46,10 +46,13 @@ def test_create_capex_and_opex_items(page: Page):
assert response_info.value.status == 200
# Verify the new items appear in their respective tables.
expect(page.locator(
f"#capex-table tr:has-text('{capex_desc}')")).to_be_visible()
expect(page.locator(
f"#opex-table tr:has-text('{opex_desc}')")).to_be_visible()
page.select_option("#costs-scenario-filter", label=scenario_name)
expect(
page.locator("#capex-table-body tr").filter(has_text=capex_desc)
).to_be_visible()
expect(
page.locator("#opex-table-body tr").filter(has_text=opex_desc)
).to_be_visible()
# Verify the feedback messages.
expect(page.locator("#capex-feedback")