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_maintenance_form_loads(page: Page):
"""Verify the maintenance form page loads correctly."""
page.goto("/ui/maintenance")
expect(page).to_have_title("CalMiner Maintenance")
expect(page.locator("h1")).to_have_text("Maintenance")
expect(page).to_have_title("Maintenance · CalMiner")
expect(page.locator("h2:has-text('Add Maintenance Entry')")).to_be_visible()
def test_create_maintenance_item(page: Page):
@@ -22,8 +22,8 @@ def test_create_maintenance_item(page: Page):
page.goto("/ui/equipment")
equipment_name = f"Excavator EX-12 {uuid4()}"
page.select_option("select[name='scenario_id']", label=scenario_name)
page.fill("input[name='name']", equipment_name)
page.select_option("#equipment-form-scenario", label=scenario_name)
page.fill("#equipment-form-name", equipment_name)
page.click("button[type='submit']")
with page.expect_response("**/api/equipment/"):
pass
@@ -33,11 +33,11 @@ def test_create_maintenance_item(page: Page):
# Create a maintenance item.
maintenance_desc = "Scheduled engine overhaul"
page.select_option("select[name='scenario_id']", label=scenario_name)
page.select_option("select[name='equipment_id']", label=equipment_name)
page.fill("input[name='maintenance_date']", "2025-12-01")
page.fill("textarea[name='description']", maintenance_desc)
page.fill("input[name='cost']", "12000")
page.select_option("#maintenance-form-scenario", label=scenario_name)
page.select_option("#maintenance-form-equipment", label=equipment_name)
page.fill("#maintenance-form-date", "2025-12-01")
page.fill("#maintenance-form-description", maintenance_desc)
page.fill("#maintenance-form-cost", "12000")
page.click("button[type='submit']")
with page.expect_response("**/api/maintenance/") as response_info:
@@ -45,7 +45,12 @@ def test_create_maintenance_item(page: Page):
assert response_info.value.status == 201
# Verify the new item appears in the table.
expect(page.locator(f"tr:has-text('{maintenance_desc}')")).to_be_visible()
page.select_option("#maintenance-scenario-filter", label=scenario_name)
expect(
page.locator("#maintenance-table-body tr").filter(
has_text=maintenance_desc
)
).to_be_visible()
# Verify the feedback message.
expect(page.locator("#maintenance-feedback")