"""E2E test for the redesigned create-overlay modal.""" from __future__ import annotations import pytest from playwright.sync_api import Page, expect from .conftest import login pytestmark = pytest.mark.e2e def test_create_overlay_modal_field_order_and_submission(page: Page, live_server) -> None: base_url = live_server["base_url"] login(page, base_url) page.goto(f"{base_url}/overlays") page.click('button[data-inline-modal-open="create-overlay-modal"]') modal = page.locator("#create-overlay-modal") expect(modal).to_be_visible() # Field order: Name input must appear before Type radios in DOM/visual order. name_input = modal.locator('input[name="name"]') type_workshop = modal.locator('input[name="type"][value="workshop"]') expect(name_input).to_be_visible() expect(type_workshop).to_be_visible() name_box = name_input.bounding_box() type_box = type_workshop.bounding_box() assert name_box is not None and type_box is not None assert name_box["y"] < type_box["y"], "Name should sit above Type" # No legacy fieldset border around Type group. expect(modal.locator("fieldset.overlay-type-radio")).to_have_count(0) # No legacy "path is generated automatically" copy anywhere. expect(modal).not_to_contain_text("path is generated automatically") # Default workshop selection is checked. expect(type_workshop).to_be_checked() # Submit with a unique name and the script type. name_input.fill("e2e-test-overlay") modal.locator('input[name="type"][value="script"]').check() modal.locator('button[type="submit"]:has-text("Create")').click() # Handler redirects to /overlays/ on success. page.wait_for_url("**/overlays/*", timeout=5000) expect(page.locator("h1")).to_contain_text("e2e-test-overlay")