diff --git a/devtools/client/webconsole/new-console-output/test/mochitest/browser.ini b/devtools/client/webconsole/new-console-output/test/mochitest/browser.ini index 7067b29edb03..32e18250f623 100644 --- a/devtools/client/webconsole/new-console-output/test/mochitest/browser.ini +++ b/devtools/client/webconsole/new-console-output/test/mochitest/browser.ini @@ -11,7 +11,6 @@ support-files = source-mapped.css source-mapped.css.map source-mapped.scss - test_bug_1247459_violation.html test_bug_770099_violation.html test_bug_770099_violation.html^headers^ test_console_csp_ignore_reflected_xss_message.html @@ -44,6 +43,7 @@ support-files = test-cd-iframe-child.html test-cd-iframe-parent.html test-console-api-iframe.html + test-csp-violation.html test-cspro.html test-cspro.html^headers^ test-iframe-child.html @@ -265,6 +265,7 @@ subsuite = clipboard [browser_webconsole_context_menu_store_as_global.js] [browser_webconsole_csp_ignore_reflected_xss_message.js] skip-if = (e10s && debug) || (e10s && os == 'win') # Bug 1221499 enabled these on windows +[browser_webconsole_csp_violation.js] [browser_webconsole_cspro.js] [browser_webconsole_document_focus.js] [browser_webconsole_duplicate_errors.js] @@ -358,9 +359,6 @@ skip-if = true # Bug 1404877 [browser_webconsole_trackingprotection_errors.js] tags = trackingprotection [browser_webconsole_view_source.js] -[browser_webconsole_violation.js] -skip-if = true # Bug 1405245 -# old console skip-if = e10s && (os == 'win') # Bug 1264955 [browser_webconsole_visibility_messages.js] [browser_webconsole_warn_about_replaced_api.js] [browser_webconsole_websocket.js] diff --git a/devtools/client/webconsole/new-console-output/test/mochitest/browser_webconsole_violation.js b/devtools/client/webconsole/new-console-output/test/mochitest/browser_webconsole_csp_violation.js similarity index 56% rename from devtools/client/webconsole/new-console-output/test/mochitest/browser_webconsole_violation.js rename to devtools/client/webconsole/new-console-output/test/mochitest/browser_webconsole_csp_violation.js index 95095ed8b93b..c7cbfa2dba8d 100644 --- a/devtools/client/webconsole/new-console-output/test/mochitest/browser_webconsole_violation.js +++ b/devtools/client/webconsole/new-console-output/test/mochitest/browser_webconsole_csp_violation.js @@ -9,32 +9,19 @@ "use strict"; const TEST_URI = "data:text/html;charset=utf8,Web Console CSP violation test"; -const TEST_VIOLATION = "https://example.com/browser/devtools/client/" + - "webconsole/test/test_bug_1247459_violation.html"; +const TEST_VIOLATION = "https://example.com/browser/devtools/client/webconsole/" + + "new-console-output/test/mochitest/test-csp-violation.html"; const CSP_VIOLATION_MSG = "Content Security Policy: The page\u2019s settings " + "blocked the loading of a resource at " + - "http://some.example.com/test.png (\u201cimg-src " + - "https://example.com\u201d)."; - -add_task(function* () { - let { browser } = yield loadTab(TEST_URI); - - let hud = yield openConsole(); + "http://some.example.com/test.png (\u201cimg-src\u201d)."; +add_task(async function () { + let hud = await openNewTabAndConsole(TEST_URI); hud.jsterm.clearOutput(); - let loaded = loadBrowser(browser); - BrowserTestUtils.loadURI(browser, TEST_VIOLATION); - yield loaded; + let onRepeatedMessage = waitForRepeatedMessage(hud, CSP_VIOLATION_MSG, 2); + await loadDocument(TEST_VIOLATION); + await onRepeatedMessage; - yield waitForMessages({ - webconsole: hud, - messages: [ - { - name: "CSP policy URI warning displayed successfully", - text: CSP_VIOLATION_MSG, - repeats: 2 - } - ] - }); + ok(true, "Received expected messages"); }); diff --git a/devtools/client/webconsole/new-console-output/test/mochitest/head.js b/devtools/client/webconsole/new-console-output/test/mochitest/head.js index 490e00d7a142..fd8fcd50bed9 100644 --- a/devtools/client/webconsole/new-console-output/test/mochitest/head.js +++ b/devtools/client/webconsole/new-console-output/test/mochitest/head.js @@ -138,6 +138,31 @@ function waitForMessages({ hud, messages }) { }); } +/** + * Wait for a message with the provided text and showing the provided repeat count. + * + * @param {Object} hud : the webconsole + * @param {String} text : text included in .message-body + * @param {Number} repeat : expected repeat count in .message-repeats + */ +function waitForRepeatedMessage(hud, text, repeat) { + return waitFor(() => { + // Wait for a message matching the provided text. + let node = findMessage(hud, text); + if (!node) { + return false; + } + + // Check if there is a repeat node with the expected count. + let repeatNode = node.querySelector(".message-repeats"); + if (repeatNode && parseInt(repeatNode.textContent, 10) === repeat) { + return node; + } + + return false; + }); +} + /** * Wait for a single message in the web console output, resolving once it is received. * @@ -177,6 +202,7 @@ async function waitFor(condition, message = "waitFor", interval = 10, maxTries = * A substring that can be found in the message. * @param selector [optional] * The selector to use in finding the message. + * @return {Node} the node corresponding the found message */ function findMessage(hud, text, selector = ".message") { const elements = findMessages(hud, text, selector); diff --git a/devtools/client/webconsole/new-console-output/test/mochitest/test_bug_1247459_violation.html b/devtools/client/webconsole/new-console-output/test/mochitest/test-csp-violation.html similarity index 100% rename from devtools/client/webconsole/new-console-output/test/mochitest/test_bug_1247459_violation.html rename to devtools/client/webconsole/new-console-output/test/mochitest/test-csp-violation.html