Bug 1468754 Part 7: Add a test of ChangesActor server methods. draft
authorBrad Werth <bwerth@mozilla.com>
Tue, 26 Jun 2018 15:44:25 -0700
changeset 826143 2b9a4d173344e12f542ecc209b162085b2fb1d34
parent 826142 fed4a2ecea15714bd04b4f65144a50550415e1a4
child 826144 1c062dc889b7f5cfad6bc54ed0c4736d7714aae9
push id118245
push userbwerth@mozilla.com
push dateFri, 03 Aug 2018 00:03:09 +0000
bugs1468754
milestone63.0a1
Bug 1468754 Part 7: Add a test of ChangesActor server methods. MozReview-Commit-ID: 6HQJmrB6qMV
devtools/server/tests/mochitest/chrome.ini
devtools/server/tests/mochitest/test_changes-stylesheets.html
--- a/devtools/server/tests/mochitest/chrome.ini
+++ b/devtools/server/tests/mochitest/chrome.ini
@@ -29,16 +29,17 @@ support-files =
   small-image.gif
   setup-in-child.js
   setup-in-parent.js
   webconsole-helpers.js
   webextension-helpers.js
 [test_animation_actor-lifetime.html]
 [test_animation-type-longhand.html]
 [test_changes-functions.html]
+[test_changes-stylesheets.html]
 [test_connection-manager.html]
 skip-if = (verify && debug && (os == 'win'))
 [test_connectToFrame.html]
 [test_css-logic.html]
 [test_css-logic-media-queries.html]
 [test_css-logic-specificity.html]
 [test_css-properties.html]
 [test_Debugger.Source.prototype.introductionScript.html]
new file mode 100644
--- /dev/null
+++ b/devtools/server/tests/mochitest/test_changes-stylesheets.html
@@ -0,0 +1,85 @@
+<!DOCTYPE HTML>
+<html>
+<head>
+<meta charset="utf-8">
+<title>Test for Bug 1468758 - ChangesActor tracking of stylesheet changes</title>
+<script type="application/javascript" src="chrome://mochikit/content/tests/SimpleTest/SimpleTest.js"></script>
+<link rel="stylesheet" type="text/css" href="chrome://mochikit/content/tests/SimpleTest/test.css">
+<script type="application/javascript" src="inspector-helpers.js"></script>
+<script type="application/javascript">
+"use strict";
+
+window.onload = function() {
+  SimpleTest.waitForExplicitFinish();
+  runNextTest();
+};
+
+let gChanges = null;
+let gWalker = null;
+let gStyles = null;
+
+addTest(function setup() {
+  const url = document.getElementById("changesContent").href;
+  attachURL(url, async function(err, client, tab, doc) {
+    const {InspectorFront} = require("devtools/shared/fronts/inspector");
+    const inspector = InspectorFront(client, tab);
+    gChanges = await inspector.getChanges();
+    gWalker = await inspector.getWalker();
+    gStyles = await inspector.getPageStyle();
+
+    runNextTest();
+  });
+});
+
+addAsyncTest(async function testInlineStyleModifyRule() {
+  const node = await gWalker.querySelector(gWalker.rootNode, "#first");
+  const applied = await gStyles.getApplied(node, { inherited: false, filter: "" });
+  ok(applied.length > 0, "Applied style should have at least one rule.");
+
+  const rule = applied[0].rule;
+  ok(!rule.parentStyleSheet, "Inline rule should not come from a stylesheet.");
+
+  await rule.setRuleText("color: yellow;");
+  is(await gChanges.changeCount(), 1, "After inline rule change, ChangesActor should have one change.");
+
+  await gChanges.clearChanges();
+  is(await gChanges.changeCount(), 0, "After inline rule clearChanges, ChangesActor should have zero changes.");
+
+  runNextTest();
+});
+
+addAsyncTest(async function testInlineStylesheetModifyRule() {
+  const node = await gWalker.querySelector(gWalker.rootNode, "#first");
+  const applied = await gStyles.getApplied(node, { inherited: false, filter: "" });
+  ok(applied.length > 1, "Applied style should have at least two rules.");
+
+  const rule = applied[1].rule;
+  ok(rule.parentStyleSheet, "Rule should come from a stylesheet.");
+
+  await rule.setRuleText("color: purple;");
+  is(await gChanges.changeCount(), 1, "After rule change, ChangesActor should have one change.");
+
+  await gChanges.popChange();
+  is(await gChanges.changeCount(), 0, "After rule popChange, ChangesActor should have zero changes.");
+
+  runNextTest();
+});
+
+addTest(function cleanup() {
+  gChanges = null;
+  gWalker = null;
+  gStyles = null;
+  runNextTest();
+});
+
+</script>
+</head>
+<body>
+<a target="_blank" href="https://bugzilla.mozilla.org/show_bug.cgi?id=1468754">Mozilla Bug 1468758</a>
+<a id="changesContent" target="_blank" href="changes-data.html">Test Document</a>
+<p id="display"></p>
+<div id="content" style="display: none"></div>
+<pre id="test">
+</pre>
+</body>
+</html>