"""E2E: the driver library's rename dialog — open, pre-fill, submit, row updates.""" from __future__ import annotations import io import zipfile # Same reasoning as test_printer_edit.py: the button label goes through the i18n # store, which follows navigator.language, so only a structural hook is portable. EDIT_BUTTON = "button[onclick*='showModal']" INF = """[Version] Signature="$Windows NT$" Class=Printer Provider=%Vendor% [Manufacturer] %Vendor%=Models,NTamd64 [Models.NTamd64] "E2E Rename Printer"=Install,USBPRINT\\E2E [Strings] Vendor="E2E Vendor" """ def _driver_zip() -> bytes: buf = io.BytesIO() with zipfile.ZipFile(buf, "w") as zf: zf.writestr("e2e_rename.inf", INF) return buf.getvalue() def _upload_driver(live_server: str, owner_key: str) -> None: import httpx from imptune.services.session import COOKIE_NAME with httpx.Client( base_url=live_server, follow_redirects=True, cookies={COOKIE_NAME: owner_key} ) as api: response = api.post( "/drivers/upload", files={"file": ("e2e_rename_pkg.zip", _driver_zip(), "application/zip")}, ) assert response.status_code == 200, response.text def test_driver_rename_dialog_prefills_the_zip_name( page, live_server: str, _e2e_owner_key: str ) -> None: """With no rename yet, the input is empty and the ZIP name is its placeholder.""" _upload_driver(live_server, _e2e_owner_key) page.goto(f"{live_server}/drivers", wait_until="domcontentloaded") row = page.locator("tr", has=page.locator("text=e2e_rename_pkg.zip")) row.first.wait_for() row.first.locator(EDIT_BUTTON).click() page.wait_for_selector("dialog[open]") field = page.locator("dialog[open] input[name='display_name']") assert field.input_value() == "" assert field.get_attribute("placeholder") == "e2e_rename_pkg.zip" def test_driver_rename_updates_the_row(page, live_server: str, _e2e_owner_key: str) -> None: """Saving swaps the table in place and shows the new label over the ZIP name.""" _upload_driver(live_server, _e2e_owner_key) page.goto(f"{live_server}/drivers", wait_until="domcontentloaded") row = page.locator("tr", has=page.locator("text=e2e_rename_pkg.zip")) row.first.wait_for() row.first.locator(EDIT_BUTTON).click() page.wait_for_selector("dialog[open]") page.fill("dialog[open] input[name='display_name']", "Ground floor MFP") # The dialog holds several submit buttons (icon upload, web search); the # footer's Save is the one bound to the rename form. page.click("dialog[open] .dialog-foot button[type='submit']") page.wait_for_selector("text=Ground floor MFP") assert page.locator("dialog[open]").count() == 0 # Renaming does not hide what is actually stored on disk. assert page.locator("text=e2e_rename_pkg.zip").count() >= 1