Bug 1202458 - part4: update inspector actor&front tests after removing shortValue;r=pbro
Adapt existing tests checking for updates to shortValue and incompleteValue on
NodeFront instances. Instead we now check for mutations of inlineTextChild type
as well as for the inlineTextChild property of the parent front.
MozReview-Commit-ID: 1mujxwVfvvP
--- a/devtools/server/tests/mochitest/test_inspector-mutations-value.html
+++ b/devtools/server/tests/mochitest/test_inspector-mutations-value.html
@@ -24,16 +24,17 @@ SimpleTest.registerCleanupFunction(funct
inspector.setValueSummaryLength(inspector.DEFAULT_VALUE_SUMMARY_LENGTH);
});
var gInspectee = null;
var gWalker = null;
var gClient = null;
var valueNode;
var valueFront;
+var longStringFront;
var longString = "stringstringstringstringstringstringstringstringstringstringstring";
var truncatedLongString = longString.substring(0, testSummaryLength);
var shortString = "str";
var shortString2 = "str2";
addTest(function setup() {
let url = document.getElementById("inspectorContent").href;
attachURL(url, function(err, client, tab, doc) {
@@ -57,87 +58,109 @@ addTest(setupFrameValueTest);
addTest(testKeepLongValue);
addTest(testSetShortValue);
addTest(testKeepShortValue);
addTest(testSetLongValue);
function setupValueTest() {
valueNode = gInspectee.querySelector("#longstring").firstChild;
promiseDone(gWalker.querySelector(gWalker.rootNode, "#longstring").then(node => {
+ longStringFront = node;
return gWalker.children(node);
}).then(children => {
valueFront = children.nodes[0];
}).then(runNextTest));
}
function setupFrameValueTest() {
let frame = gInspectee.querySelector('#childFrame');
valueNode = frame.contentDocument.querySelector("#longstring").firstChild;
promiseDone(gWalker.querySelector(gWalker.rootNode, "#childFrame").then(childFrame => {
return gWalker.children(childFrame);
}).then(children => {
let nodes = children.nodes;
- ok(nodes.length, 1, "There should be only one child of the iframe");
+ is(nodes.length, 1, "There should be only one child of the iframe");
is(nodes[0].nodeType, Node.DOCUMENT_NODE, "iframe child should be a document node");
return gWalker.querySelector(nodes[0], "#longstring");
}).then(node => {
+ longStringFront = node;
return gWalker.children(node);
}).then(children => {
valueFront = children.nodes[0];
}).then(runNextTest));
}
+function checkNodeFrontValue(front, expectedValue) {
+ return new Promise(resolve => {
+ front.getNodeValue().then(longstring => {
+ return longstring.string();
+ }).then(str => {
+ is(str, expectedValue, "Node value is as expected");
+ resolve();
+ })
+ });
+}
+
function testKeepLongValue() {
// After first setup we should have a long string in the node
- is(valueFront.shortValue.length, testSummaryLength, "After setup the test node should be truncated.");
- ok(valueFront.incompleteValue, "After setup the node value should be incomplete.");
+ ok(!longStringFront.inlineTextChild, "Text node is too long to be inlined.");
+
valueNode.nodeValue = longString;
- gWalker.once("mutations", () => {
- is(valueFront.shortValue, truncatedLongString, "Value should have changed to a truncated value");
- ok(valueFront.incompleteValue, "Node value should stay incomplete.");
- runNextTest();
+ gWalker.once("mutations", (changes) => {
+ ok(!longStringFront.inlineTextChild, "Text node is too long to be inlined.");
+ ok(!changes.some(change => change.type === "inlineTextChild"),
+ "No inline text child mutation was fired.");
+ checkNodeFrontValue(valueFront, longString).then(runNextTest);
});
}
function testSetShortValue() {
+ ok(!longStringFront.inlineTextChild, "Text node is too long to be inlined.");
+
valueNode.nodeValue = shortString;
- gWalker.once("mutations", () => {
- is(valueFront.shortValue, shortString, "Value should not be truncated.");
- ok(!valueFront.incompleteValue, "Value should not be incomplete.");
- runNextTest();
+ gWalker.once("mutations", (changes) => {
+ ok(!!longStringFront.inlineTextChild, "Text node is short enough to be inlined.");
+ ok(changes.some(change => change.type === "inlineTextChild"),
+ "An inlineTextChild mutation was fired.");
+ checkNodeFrontValue(valueFront, shortString).then(runNextTest);
});
}
function testKeepShortValue() {
+ ok(!!longStringFront.inlineTextChild, "Text node is short enough to be inlined.");
+
valueNode.nodeValue = shortString2;
- gWalker.once("mutations", () => {
- is(valueFront.shortValue, shortString2, "Value should not be truncated.");
- ok(!valueFront.incompleteValue, "Value should not be incomplete.");
- runNextTest();
+ gWalker.once("mutations", (changes) => {
+ ok(!!longStringFront.inlineTextChild, "Text node is short enough to be inlined.");
+ ok(!changes.some(change => change.type === "inlineTextChild"),
+ "No inline text child mutation was fired.");
+ checkNodeFrontValue(valueFront, shortString2).then(runNextTest);
});
}
function testSetLongValue() {
+ ok(!!longStringFront.inlineTextChild, "Text node is short enough to be inlined.");
+
valueNode.nodeValue = longString;
- gWalker.once("mutations", () => {
- is(valueFront.shortValue, truncatedLongString, "Value should have changed to a truncated value");
- ok(valueFront.incompleteValue, "Node value should stay incomplete.");
- runNextTest();
+ gWalker.once("mutations", (changes) => {
+ ok(!longStringFront.inlineTextChild, "Text node is too long to be inlined.");
+ ok(changes.some(change => change.type === "inlineTextChild"),
+ "An inlineTextChild mutation was fired.");
+ checkNodeFrontValue(valueFront, longString).then(runNextTest);
});
}
addTest(function cleanup() {
delete gInspectee;
delete gWalker;
delete gClient;
runNextTest();
});
-
</script>
</head>
<body>
<a target="_blank" href="https://bugzilla.mozilla.org/show_bug.cgi?id=">Mozilla Bug </a>
<a id="inspectorContent" target="_blank" href="inspector-traversal-data.html">Test Document</a>
<p id="display"></p>
<div id="content" style="display: none">
--- a/devtools/server/tests/mochitest/test_inspector-traversal.html
+++ b/devtools/server/tests/mochitest/test_inspector-traversal.html
@@ -256,17 +256,17 @@ addTest(function testPreviousSibling() {
});
addTest(function testFrameTraversal() {
promiseDone(gWalker.querySelector(gWalker.rootNode, "#childFrame").then(childFrame => {
return gWalker.children(childFrame);
}).then(children => {
let nodes = children.nodes;
- ok(nodes.length, 1, "There should be only one child of the iframe");
+ is(nodes.length, 1, "There should be only one child of the iframe");
is(nodes[0].nodeType, Node.DOCUMENT_NODE, "iframe child should be a document node");
return gWalker.querySelector(nodes[0], "#z");
}).then(childDocumentZ => {
return gWalker.parents(childDocumentZ);
}).then(parents => {
// Expected set of parent tag names for this item:
let expectedParents = ['DIV', 'BODY', 'HTML', '#document', 'IFRAME', 'BODY', 'HTML', '#document'];
for (let parent of parents) {
@@ -281,44 +281,42 @@ addTest(function testLongValue() {
inspector.setValueSummaryLength(testSummaryLength);
SimpleTest.registerCleanupFunction(function() {
inspector.setValueSummaryLength(inspector.DEFAULT_VALUE_SUMMARY_LENGTH);
});
let longstringText = gInspectee.getElementById("longstring").firstChild.nodeValue;
promiseDone(gWalker.querySelector(gWalker.rootNode, "#longstring").then(node => {
+ ok(!node.inlineTextChild, "Text is too long to be inlined");
// Now we need to get the text node child...
return gWalker.children(node, { maxNodes: 1 });
}).then(children => {
let textNode = children.nodes[0];
is(textNode.nodeType, Node.TEXT_NODE, "Value should be a text node");
- is(textNode.shortValue.length, 10, "Value summary should be limited to the summary value length");
- ok(textNode.incompleteValue, "Value should be incomplete");
return textNode;
}).then(textNode => {
return textNode.getNodeValue();
}).then(value => {
return value.string();
}).then(valueStr => {
is(valueStr, longstringText, "Full node value should match the string from the document.");
}).then(runNextTest));
});
addTest(function testShortValue() {
let shortstringText = gInspectee.getElementById("shortstring").firstChild.nodeValue;
promiseDone(gWalker.querySelector(gWalker.rootNode, "#shortstring").then(node => {
+ ok(!!node.inlineTextChild, "Text is short enough to be inlined");
// Now we need to get the text node child...
return gWalker.children(node, { maxNodes: 1 });
}).then(children => {
let textNode = children.nodes[0];
is(textNode.nodeType, Node.TEXT_NODE, "Value should be a text node");
- is(textNode.shortValue, shortstringText, "Value should be complete");
- ok(!textNode.incompleteValue, "Value should be complete");
return textNode;
}).then(textNode => {
return textNode.getNodeValue();
}).then(value => {
return value.string();
}).then(valueStr => {
is(valueStr, shortstringText, "Full node value should match the string from the document.");
}).then(runNextTest));