blob: a2d42dda0da8a260410c589066e29577bae774f7 [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 styles sidebar can be navigated with arrow keys.\n');
await TestRunner.showPanel('elements');
await TestRunner.loadModule('elements_test_runner');
await TestRunner.loadHTML(`
<style>
#foo {
color: red;
}
div {
color: blue;
}
div#foo {
color: green;
}
</style>
<div id="foo"></div>
`);
ElementsTestRunner.selectNodeWithId('foo');
await waitForStylesRebuild();
let ssp = Elements.ElementsPanel.instance()._stylesWidget;
// start editing
ssp._sectionBlocks[0].sections[0].element.focus();
ssp._sectionBlocks[0].sections[0].addNewBlankProperty(0).startEditing();
dumpState();
TestRunner.addResult("Pressing escape to stop editing");
eventSender.keyDown("Escape");
dumpState()
TestRunner.addResult("Navigating with arrow keys");
eventSender.keyDown("ArrowDown");
dumpState()
eventSender.keyDown("ArrowDown");
dumpState()
eventSender.keyDown("ArrowDown");
dumpState()
eventSender.keyDown("ArrowDown");
dumpState()
eventSender.keyDown("ArrowUp");
dumpState()
TestRunner.addResult("Typing should start editing");
eventSender.keyDown("t");
dumpState()
TestRunner.addResult("Pressing escape again should restore focus");
eventSender.keyDown("Escape");
dumpState()
TestRunner.addResult("Pressing enter should start editing selector");
eventSender.keyDown("Enter");
dumpState()
TestRunner.completeTest();
function dumpState() {
TestRunner.addResult('Editing: ' + UI.isEditing())
TestRunner.addResult(document.deepActiveElement().textContent);
TestRunner.addResult('');
}
function waitForStylesRebuild(node) {
if (node && node.getAttribute("id") === 'foo')
return;
return TestRunner.addSnifferPromise(Elements.StylesSidebarPane.prototype, "_nodeStylesUpdatedForTest").then(waitForStylesRebuild);
}
})();