refactor: Remove remote debugging dependency and enhance DeveloperToolsWidget integration
This commit is contained in:
parent
a135dd0d96
commit
d6e0957797
3 changed files with 27 additions and 15 deletions
|
|
@ -7,10 +7,6 @@ import sys
|
||||||
# This ensures CSS media queries (hover: hover) evaluate correctly for desktop applications
|
# This ensures CSS media queries (hover: hover) evaluate correctly for desktop applications
|
||||||
os.environ["QTWEBENGINE_CHROMIUM_FLAGS"] = "--touch-events=disabled"
|
os.environ["QTWEBENGINE_CHROMIUM_FLAGS"] = "--touch-events=disabled"
|
||||||
|
|
||||||
# Enable Qt WebEngine Remote Debugging Protocol (Chromium Developer Tools)
|
|
||||||
# Allows debugging via browser DevTools at http://localhost:9222 or edge://inspect
|
|
||||||
os.environ["QTWEBENGINE_REMOTE_DEBUGGING"] = "9222"
|
|
||||||
|
|
||||||
from PySide6.QtWidgets import QApplication
|
from PySide6.QtWidgets import QApplication
|
||||||
|
|
||||||
from webdrop_bridge.config import Config, ConfigurationError
|
from webdrop_bridge.config import Config, ConfigurationError
|
||||||
|
|
|
||||||
|
|
@ -1,9 +1,13 @@
|
||||||
"""Developer Tools for WebDrop Bridge - using Chromium Remote Debugging Protocol."""
|
"""Developer Tools for WebDrop Bridge.
|
||||||
|
|
||||||
|
Uses Qt WebEngine's built-in inspector wiring instead of the remote debugging
|
||||||
|
HTTP endpoint. This avoids localhost/port timing issues that can differ between
|
||||||
|
development runs and frozen MSI installations.
|
||||||
|
"""
|
||||||
|
|
||||||
import logging
|
import logging
|
||||||
from typing import Any
|
from typing import Any
|
||||||
|
|
||||||
from PySide6.QtCore import QTimer, QUrl
|
|
||||||
from PySide6.QtWebEngineWidgets import QWebEngineView
|
from PySide6.QtWebEngineWidgets import QWebEngineView
|
||||||
from PySide6.QtWidgets import QVBoxLayout, QWidget
|
from PySide6.QtWidgets import QVBoxLayout, QWidget
|
||||||
|
|
||||||
|
|
@ -15,8 +19,7 @@ __all__ = ["DeveloperToolsWidget"]
|
||||||
class DeveloperToolsWidget(QWidget):
|
class DeveloperToolsWidget(QWidget):
|
||||||
"""Embedded Chromium Developer Tools Inspector.
|
"""Embedded Chromium Developer Tools Inspector.
|
||||||
|
|
||||||
Loads the Chromium DevTools UI using the Remote Debugging Protocol
|
Attaches a dedicated DevTools page directly to the inspected web page.
|
||||||
running on localhost:9222.
|
|
||||||
|
|
||||||
Features:
|
Features:
|
||||||
- Real HTML/CSS Inspector with live editing
|
- Real HTML/CSS Inspector with live editing
|
||||||
|
|
@ -45,10 +48,7 @@ class DeveloperToolsWidget(QWidget):
|
||||||
self.dev_tools_view = QWebEngineView()
|
self.dev_tools_view = QWebEngineView()
|
||||||
layout.addWidget(self.dev_tools_view)
|
layout.addWidget(self.dev_tools_view)
|
||||||
|
|
||||||
# Load DevTools after delay to let debugger start
|
# Directly attach DevTools to the existing page.
|
||||||
QTimer.singleShot(500, self._load_devtools)
|
# This is more robust than relying on the remote debugging HTTP endpoint.
|
||||||
|
self.dev_tools_view.page().setInspectedPage(self.web_view.page())
|
||||||
def _load_devtools(self) -> None:
|
logger.info("Developer Tools attached via QWebEnginePage.setInspectedPage")
|
||||||
"""Load the DevTools targets page from localhost:9222."""
|
|
||||||
logger.info("Loading DevTools from http://localhost:9222")
|
|
||||||
self.dev_tools_view.load(QUrl("http://localhost:9222"))
|
|
||||||
|
|
|
||||||
16
tests/unit/test_developer_tools.py
Normal file
16
tests/unit/test_developer_tools.py
Normal file
|
|
@ -0,0 +1,16 @@
|
||||||
|
"""Unit tests for DeveloperToolsWidget."""
|
||||||
|
|
||||||
|
from PySide6.QtWebEngineWidgets import QWebEngineView
|
||||||
|
|
||||||
|
from webdrop_bridge.ui.developer_tools import DeveloperToolsWidget
|
||||||
|
|
||||||
|
|
||||||
|
def test_developer_tools_widget_attaches_inspected_page(qtbot):
|
||||||
|
"""DeveloperToolsWidget should inspect the provided web view page directly."""
|
||||||
|
web_view = QWebEngineView()
|
||||||
|
qtbot.addWidget(web_view)
|
||||||
|
|
||||||
|
dev_tools = DeveloperToolsWidget(web_view)
|
||||||
|
qtbot.addWidget(dev_tools)
|
||||||
|
|
||||||
|
assert dev_tools.dev_tools_view.page().inspectedPage() is web_view.page()
|
||||||
Loading…
Add table
Add a link
Reference in a new issue