70c1ca464f
E9-E12 exercise the launcher's Linux code paths without spawning a real Firefox binary or Xvfb. They monkeypatch ``sys.platform`` and stub ``make_virtual_display`` / ``_binary_on_path`` so the tests run on any host: - E9 ``_build_prefs(headless=True)`` on Linux passes ``virtual_display=False`` to the translator, so the Win32-only ``security.sandbox.gpu.level`` workaround never leaks into Linux prefs (Xvfb handles window hiding instead). - E10 ``_resolve_headless`` on Linux + headless=True invokes the dispatcher and stores the returned object on ``self._virtual_display``. - E11 ``_teardown`` stops the Linux virtual display, clears the reference, and is idempotent on a second call. - E12 With Xvfb missing from PATH, ``_resolve_headless`` raises a clear ``RuntimeError`` mentioning ``Xvfb`` instead of a cryptic FileNotFoundError. Suite on Linux/WSL: 286 passed, 5 skipped (4 binary-gated E2E lifecycle tests + 1 Win32 ctypes test). Binary-gated E1/E2/E5/E8 remain ready to run on Linux once the patched Firefox tar.gz is fetched locally. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>