summaryrefslogtreecommitdiffstats
path: root/devtools/client/inspector/rules/test/browser_rules_update_mask_image_cors.js
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--devtools/client/inspector/rules/test/browser_rules_update_mask_image_cors.js60
1 files changed, 60 insertions, 0 deletions
diff --git a/devtools/client/inspector/rules/test/browser_rules_update_mask_image_cors.js b/devtools/client/inspector/rules/test/browser_rules_update_mask_image_cors.js
new file mode 100644
index 0000000000..bac63a9572
--- /dev/null
+++ b/devtools/client/inspector/rules/test/browser_rules_update_mask_image_cors.js
@@ -0,0 +1,60 @@
+/* Any copyright is dedicated to the Public Domain.
+ http://creativecommons.org/publicdomain/zero/1.0/ */
+
+"use strict";
+
+Services.scriptloader.loadSubScript(
+ "chrome://mochitests/content/browser/devtools/client/webconsole/test/browser/shared-head.js",
+ this
+);
+
+// The mask image is served from example.com while the test page is served from
+// example.org.
+const MASK_SRC = URL_ROOT_COM_SSL + "square_svg.sjs";
+const STYLE_ATTRIBUTE = `mask-image: url("${MASK_SRC}"); width:10px; height: 10px; background: red;`;
+const TEST_URL = `https://example.org/document-builder.sjs?html=<div style='${STYLE_ATTRIBUTE}'>`;
+
+// Used to assert screenshot colors.
+const RED = { r: 255, g: 0, b: 0 };
+
+add_task(async function () {
+ await addTab(TEST_URL);
+ const { inspector, toolbox, view } = await openRuleView();
+
+ info("Open the splitconsole to check for CORS messages");
+ await toolbox.toggleSplitConsole();
+
+ await selectNode("div", inspector);
+
+ info("Take a node screenshot, mask is applied, should be red");
+ const beforeScreenshot = await takeNodeScreenshot(inspector);
+ await assertSingleColorScreenshotImage(beforeScreenshot, 10, 10, RED);
+
+ info("Update a property from the rule view");
+ const heightProperty = getTextProperty(view, 0, { height: "10px" });
+ await setProperty(view, heightProperty, "11px");
+
+ info("Wait until the style has been applied in the content page");
+ await SpecialPowers.spawn(gBrowser.selectedBrowser, [], async () => {
+ await ContentTaskUtils.waitForCondition(
+ () => content.document.querySelector("div").style.height == "11px"
+ );
+ });
+
+ // Wait for some time in case the image needs to be reloaded, and to allow
+ // error messages (if any) to be rendered.
+ await wait(1000);
+
+ info("Take another screenshot, mask should still apply, should be red");
+ const afterScreenshot = await takeNodeScreenshot(inspector);
+ await assertSingleColorScreenshotImage(afterScreenshot, 10, 11, RED);
+
+ const hud = toolbox.getPanel("webconsole").hud;
+ ok(
+ !findMessageByType(hud, "Cross-Origin Request Blocked", ".error"),
+ "No message was logged about a CORS issue"
+ );
+
+ info("Close split console");
+ await toolbox.toggleSplitConsole();
+});