| // 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); |
| } |
| ]); |
| })(); |