blob: 84e4d1375b040992a2e1772bd324b163b102492b [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 DOM breakpoints.`);
await TestRunner.loadModule('elements_test_runner');
await TestRunner.loadModule('sources_test_runner');
await TestRunner.showPanel('sources');
await TestRunner.showPanel('elements');
await TestRunner.navigatePromise('resources/dom-breakpoints.html');
var pane =
self.runtime.sharedInstance(BrowserDebugger.DOMBreakpointsSidebarPane);
var rootElement;
var outerElement;
var authorShadowRoot;
SourcesTestRunner.runDebuggerTestSuite([
function testReload(next) {
TestRunner.addResult(
'Test that DOM breakpoints are persisted between page reloads.');
ElementsTestRunner.nodeWithId('rootElement', step2);
function step2(node) {
TestRunner.domDebuggerModel.setDOMBreakpoint(
node, Protocol.DOMDebugger.DOMBreakpointType.SubtreeModified);
TestRunner.addResult(
'Set \'Subtree Modified\' DOM breakpoint on rootElement.');
TestRunner.reloadPage(step3);
}
function step3() {
ElementsTestRunner.expandElementsTree(step4);
}
function step4() {
TestRunner.evaluateInPageWithTimeout(
'appendElement(\'rootElement\', \'childElement\')');
TestRunner.addResult('Append childElement to rootElement.');
SourcesTestRunner.waitUntilPausedAndDumpStackAndResume(next);
}
},
function testInsertChildIntoAuthorShadowTree(next) {
ElementsTestRunner.shadowRootByHostId('hostElement', callback);
function callback(node) {
authorShadowRoot = node;
TestRunner.addResult(
'Test that \'Subtree Modified\' breakpoint on author shadow root is hit when appending a child.');
TestRunner.domDebuggerModel.setDOMBreakpoint(
authorShadowRoot,
Protocol.DOMDebugger.DOMBreakpointType.SubtreeModified);
TestRunner.addResult(
'Set \'Subtree Modified\' DOM breakpoint on author shadow root.');
TestRunner.evaluateInPageWithTimeout(
'appendElementToOpenShadowRoot(\'childElement\')');
TestRunner.addResult('Append childElement to author shadow root.');
SourcesTestRunner.waitUntilPausedAndDumpStackAndResume(next);
}
},
function testReloadWithShadowElementBreakpoint(next) {
ElementsTestRunner.nodeWithId('outerElement', step1);
function step1(node) {
outerElement = node;
TestRunner.addResult(
'Test that shadow DOM breakpoints are persisted between page reloads.');
TestRunner.domDebuggerModel.setDOMBreakpoint(
outerElement,
Protocol.DOMDebugger.DOMBreakpointType.SubtreeModified);
TestRunner.addResult(
'Set \'Subtree Modified\' DOM breakpoint on outerElement.');
TestRunner.reloadPage(step2);
}
function step2() {
ElementsTestRunner.expandElementsTree(step3);
}
function step3() {
TestRunner.evaluateInPageWithTimeout(
'appendElementToAuthorShadowTree(\'outerElement\', \'childElement\')');
TestRunner.addResult('Append childElement to outerElement.');
SourcesTestRunner.waitUntilPausedAndDumpStackAndResume(next);
}
}
]);
})();