diff --git a/qutebrowser/browser/webengine/webview.py b/qutebrowser/browser/webengine/webview.py index 48619486c..4842849f6 100644 --- a/qutebrowser/browser/webengine/webview.py +++ b/qutebrowser/browser/webengine/webview.py @@ -25,6 +25,9 @@ from PyQt5.QtCore import pyqtSignal, Qt, QPoint from PyQt5.QtWebEngineWidgets import QWebEngineView, QWebEnginePage # pylint: enable=no-name-in-module,import-error,useless-suppression +from qutebrowser.config import config +from qutebrowser.utils import log + class WebEngineView(QWebEngineView): @@ -58,3 +61,19 @@ class WebEnginePage(QWebEnginePage): def certificateError(self, error): self.certificate_error.emit() return super().certificateError(error) + + def javaScriptConsoleMessage(self, level, msg, line, source): + """Log javascript messages to qutebrowser's log.""" + # FIXME:qtwebengine maybe unify this in the tab api somehow? + setting = config.get('general', 'log-javascript-console') + if setting == 'none': + return + + level_to_logger = { + QWebEnginePage.InfoMessageLevel: log.js.info, + QWebEnginePage.WarningMessageLevel: log.js.warning, + QWebEnginePage.ErrorMessageLevel: log.js.error, + } + logstring = "[{}:{}] {}".format(source, line, msg) + logger = level_to_logger[level] + logger(logstring) diff --git a/tests/end2end/data/javascript/consolelog.html b/tests/end2end/data/javascript/consolelog.html new file mode 100644 index 000000000..d8506862e --- /dev/null +++ b/tests/end2end/data/javascript/consolelog.html @@ -0,0 +1,6 @@ + + +
+This page logs a line via console.log
+ + diff --git a/tests/end2end/features/javascript.feature b/tests/end2end/features/javascript.feature index 11d48c52e..979dd5cbf 100644 --- a/tests/end2end/features/javascript.feature +++ b/tests/end2end/features/javascript.feature @@ -2,6 +2,11 @@ Feature: Javascript stuff Integration with javascript. + Scenario: Using console.log + When I set general -> log-javascript-console to debug + And I open data/javascript/consolelog.html + Then the javascript message "console.log works!" should be logged + # https://github.com/The-Compiler/qutebrowser/issues/906 Scenario: Closing a JS window twice (issue 906)