blob: 084c180f3711b0c6f42120b568c34c1892200c44 [file] [log] [blame]
// Copyright 2017 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
(async function() {
TestRunner.addResult(`Tests that elements panel updates dom tree structure upon node insertion.\n`);
await TestRunner.loadModule('elements_test_runner');
await TestRunner.showPanel('elements');
await TestRunner.loadHTML(`
<div id="container"><div id="child1"></div><div id="child2"></div><div id="child3"></div></div>
`);
await TestRunner.evaluateInPagePromise(`
function insertBeforeFirst()
{
var container = document.getElementById("container");
var child = document.createElement("div");
child.setAttribute("id", "child-before");
container.insertBefore(child, container.firstChild);
}
function insertNode()
{
var container = document.getElementById("container");
var child2 = document.getElementById("child2");
var child = document.createElement("div");
child.setAttribute("id", "child-middle");
container.insertBefore(child, child2);
}
function appendChild()
{
var container = document.getElementById("container");
var child = document.createElement("div");
child.setAttribute("id", "child-after");
container.appendChild(child);
}
function appendChildWithText()
{
var container = document.getElementById("container");
var child = document.createElement("div");
child.setAttribute("id", "child-with-text");
child.setAttribute("style", "display: none;");
child.innerText = "Text";
container.appendChild(child);
}
function insertFirstTextNode()
{
var child3 = document.getElementById("child3");
child3.innerText = "First text";
}
`);
var containerNode;
TestRunner.runTestSuite([
function testDumpInitial(next) {
function callback(node) {
containerNode = ElementsTestRunner.expandedNodeWithId('container');
TestRunner.addResult('========= Original ========');
ElementsTestRunner.dumpElementsTree(containerNode);
next();
}
ElementsTestRunner.expandElementsTree(callback);
},
function testInsertBefore(next) {
function callback() {
TestRunner.addResult('===== Inserted before =====');
ElementsTestRunner.dumpElementsTree(containerNode);
next();
}
TestRunner.evaluateInPage('insertBeforeFirst()', callback);
},
function testInsertMiddle(next) {
function callback() {
TestRunner.addResult('===== Inserted middle =====');
ElementsTestRunner.dumpElementsTree(containerNode);
next();
}
TestRunner.evaluateInPage('insertNode()', callback);
},
function testAppend(next) {
function callback() {
TestRunner.addResult('======== Appended =========');
ElementsTestRunner.dumpElementsTree(containerNode);
next();
}
TestRunner.evaluateInPage('appendChild()', callback);
},
function testAppendWithText(next) {
function callback() {
TestRunner.addResult('======== Appended with text=========');
ElementsTestRunner.dumpElementsTree(containerNode);
var newNode = ElementsTestRunner.expandedNodeWithId('child-with-text');
if (TestRunner.domModel.nodeForId(newNode.firstChild.id))
TestRunner.addResult('Success: child text is bound');
else
TestRunner.addResult('Failed: child text is not bound');
next();
}
TestRunner.evaluateInPage('appendChildWithText()', callback);
},
function testInsertFirstTextNode(next) {
function callback() {
TestRunner.addResult('======== Inserted first text node =========');
ElementsTestRunner.expandElementsTree(callback2);
}
function callback2() {
ElementsTestRunner.dumpElementsTree(containerNode);
var newNode = ElementsTestRunner.expandedNodeWithId('child3');
if (TestRunner.domModel.nodeForId(newNode.firstChild.id))
TestRunner.addResult('Success: child text is bound');
else
TestRunner.addResult('Failed: child text is not bound');
next();
}
TestRunner.evaluateInPage('insertFirstTextNode()', callback);
}
]);
})();